導入
| バルク同期並列 ML | |
![]() | |
| 開発者 | オルレアン大学のオルレアン基礎コンピュータ科学研究所 (LIFO)、パリ第 12 大学のアルゴリズム・複雑性・論理研究所 (LACL) |
|---|---|
| 環境 | GNU/Linux、 Unix |
| 親切 | ソフトウェアライブラリ |
| ライセンス | GNU LGPL 2.1 |
| Webサイト | http://frederic.loulergue.eu/research/bsmllib/ |
BSML は、 Objective Camlのソフトウェア ライブラリです。これにより、基礎となるアーキテクチャの BSP パラメータ、特に並列マシンのプロセッサ数pへのアクセスが可能になります ( int型のbsp_pを介してアクセス可能)。

建築
平行ベクトル型
型'a Bsml.par型'aのオブジェクトを含むサイズpの並列ベクトルを表します。
これは< v 0 ,…, v p − 1 >で表されます。ここで、 v i はプロセッサi上のタイプ'aの値です。
モジュール
- Bsml : ライブラリ プリミティブと実行時間計算関数が含まれています
- Stdlib :標準ライブラリの関数が含まれています
- Base : 一般的な並列関数が含まれています
- Comm : パラレル通信機能が含まれています
- Sort : 並列ソート関数が含まれています
- 戻る: ライブラリの以前のバージョンとの互換性を確保します。
- ツール: 一般的なシーケンシャル関数が含まれています
- スケルトン: 分散構造を操作するための関数が含まれています
- Array : 分散配列の操作
- List : 分散リストの操作
プリミティブ

並列化プリミティブ: mkpar
val mkpar : ( int -> ' a ) -> ' a par
並列アプリケーション プリミティブ: apply
val apply : ( ' a -> ' b ) par -> ' a par -> ' b par
グローバルコミュニケーションプリミティブ: put
val put : ( int -> ' a ) by -> ( int -> ' a ) by
射影プリミティブ: proj ( mkparの双対)
val proj : ' a by -> int -> ' a
代替構文
バージョン 0.5 以降、BSML はプログラムの可読性を向上させることを目的とした代替構文を提供します。この構文により、命令を各プロセッサーでローカルに実行できるようになり、プリミティブの抽象化が提供され、各プロセッサーのローカル値へのアクセスが簡素化されます。
構文<< >>を使用してローカル セクションを表し、山かっこ内のコードがローカルで実行されます。この構造は、 p 回のローカル実行から構成される並列ベクトルを返します。
(* 各プロセッサーでの非並列 v 値の複製 *) << v >>
$v$構文はローカル セクション内で使用でき、ベクトルvのローカル コンポーネントにアクセスできます。ローカル プロセッサ番号 (ローカル セクションから) には、 $this$変数を使用してアクセスできます。
(* 各プロセッサがその番号を格納する並列ベクトル *) << $this$ >> (* 並列ベクトル v の各成分への非並列関数 f の適用 *) << f $v$ >> ( * アプリケーション並列関数 f の並列ベクトル v の各成分への変換 *) << $f$ $v$ >>
公共事業
- bsml は対話型ループを提供します。
- bsmlc は、 bsmlrunによって解釈されるバイトコードファイルを生成します。
- bsmlopt はネイティブ コードで実行可能ファイルを生成します。

