| パラダイム | SPMDとMPMD |
|---|---|
| デザイン: | ウェイチェン・チェン、ジョージ・オストルホフ、プラグネシュクマール・パテル、ドリュー・シュミット |
| 開発者 | pbdR コアチーム |
| 初登場 | 2012年9月 |
| プレビューリリース | RBigDataの
GitHub を通じて |
| タイピングの規律 | 動的 |
| OS | クロスプラットフォーム |
| ライセンス | 一般公衆利用許諾書とMozilla 公衆利用許諾書 |
| Webサイト | 翻訳: |
| 影響を受けた | |
| R、C、Fortran、MPI、ØMQ | |
Programming with Big Data in R (pbdR) [1] は、高性能統計計算を使用したビッグデータの統計計算環境とRパッケージのシリーズです。 [2] [3] pbdRは、統計ソフトウェアの開発に統計学者やデータマイナーが使用するS3/S4クラスとメソッドを備えたRと同じプログラミング言語を使用します。 pbdRとRコードの大きな違いは、pbdRは主に分散メモリシステムに焦点を当てており、データは複数のプロセッサに分散され、バッチモードで分析されますが、プロセッサ間の通信は、大規模な高性能コンピューティング(HPC)システムで簡単に使用できるMPIに基づいています。 Rシステムは、主にGUIインターフェイスなどの対話型モードを介したデータ分析のために、単一のマルチコアマシンに焦点を当てています[引用が必要]。
RにおけるMPIを使用した2つの主な実装は、Rmpi [4]とpbdRのpbdMPIである。
- pbdMPI 上に構築された pbdR は、各プロセッサがワーカーとみなされ、データの一部を所有するSPMD 並列処理を使用します。1980年代半ばに導入されたSPMD 並列処理は、大規模な行列の特異値分解や高次元の大規模データのクラスタリング分析など、大規模データの均質コンピューティング環境で特に効率的です。一方、SPMD 並列処理環境では、マネージャー/ワーカー並列処理の使用に制限はありません。
- Rmpi [4]は、1つのメインプロセッサ(マネージャ)が他のすべてのプロセッサ(ワーカー)の制御として機能するマネージャ/ワーカー並列処理を使用します。 2000年初頭に導入されたマネージャ/ワーカー並列処理は、ほとんどの統計分析でIID仮定が一般的に使用されているため、応用統計におけるブートストラップ法やモンテカルロシミュレーションなど、小規模クラスターでの大規模タスクに特に効果的です。特に、タスクプル並列処理は、異機種コンピューティング環境でのRmpiのパフォーマンスが向上します。
SPMD並列処理の考え方は、すべてのプロセッサに同じ量の作業を、大規模なデータセットの異なる部分に対して実行させることです。たとえば、現代のGPUは、比較的小さなデータの異なる部分に同じ計算を単純に適用できる、低速のコプロセッサの大規模な集合体ですが、SPMD並列処理は、最終的なソリューションを得るための効率的な方法(つまり、ソリューションまでの時間が短い)になります。[5]
パッケージデザイン
pbdR でプログラミングするには、pbdR コア チームによって開発されたさまざまなパッケージを使用する必要があります。開発されたパッケージは次のとおりです。

これらのパッケージのうち、pbdMPI はMPIライブラリへのラッパー関数を提供し、 MPI 環境用の共有ライブラリと構成ファイルも生成します。他のすべてのパッケージは、インストールとライブラリのロードにこの構成に依存しており、ライブラリのリンクとコンパイルの難しさを回避します。他のすべてのパッケージは、MPI 関数を簡単に直接使用できます。
- pbdMPI --- シングルプログラム/マルチデータ ( SPMD ) 並列プログラミング スタイルに重点を置いた、OpenMPIまたはMPICH2のいずれかの MPI への効率的なインターフェイス
- pbdSLAP ---いくつかのスケーラブルな線形代数パッケージ (BLACS、PBLAS、およびScaLAPACK )を含むScaLAPACKバージョン 2.0.2に基づいて、R 用の倍精度のスケーラブルな密な線形代数ライブラリをバンドルします。
- pbdNCDF4 --- Parallel Unidata NetCDF 4 形式のデータ ファイルへのインターフェイス
- pbdBASE --- 低レベルのScaLAPACKコードとラッパー
- pbdDMAT --- 線形代数と統計に重点を置いた分散行列クラスと計算方法
- pbdDEMO --- パッケージのデモと例のセット、そしてこの統一されたビネット
- pmclust --- pbdR を使用した並列モデルベース クラスタリング
- pbdPROF --- MPI コードのプロファイリング パッケージと解析された統計の視覚化
- pbdZMQ --- ØMQへのインターフェース
- remoter --- リモート R サーバーを備えた R クライアント
- pbdCS --- リモート pbdR サーバーを備えた pbdR クライアント
- pbdRPC --- リモート プロシージャ コール
- kazaam --- 非常に高くて細い分散行列
- pbdML --- 機械学習ツールボックス
これらのパッケージのうち、pbdDEMO パッケージは、さまざまな pbdR パッケージの使用例を示す 20 以上のパッケージ デモのコレクションであり、デモの詳細な説明と数学的または統計的な洞察を提供するビネットが含まれています。
例
例1
Hello World! 次のコードを「demo.r」というファイルに保存します。
### 初期 MPI
ライブラリ( pbdMPI 、quiet = TRUE ) init ()
comm.cat ( "こんにちは世界!\n" )
###
ファイナライズを終了()
そしてコマンドを使用する
mpiexec -np 2 Rスクリプトデモ.r
Rscriptがコマンドライン実行可能プログラムの 1 つ であるコードを実行します。
例2
pbdMPI から変更された次の例は、pbdR言語の基本的な構文を示しています。pbdR はSPMDで設計されているため、すべての R スクリプトはファイルに保存され、mpiexec、mpirun などを介してコマンドラインから実行されます。次のコードを「demo.r」というファイルに保存します。
### 初期 MPI
ライブラリ( pbdMPI 、quiet = TRUE ) init () .comm.size <- comm.size () .comm.rank <- comm.rank ()
### すべてのプロセッサに異なる値を持つベクトルxを設定します
N <- 5 x <- ( 1 : N ) + N * .comm.rank
### 合計演算を使用して x をすべて削減します
y <- allreduce ( as.integer ( x ), op = "sum" ) comm.print ( y ) y <- allreduce ( as.double ( x ), op = "sum" ) comm.print ( y )
###
ファイナライズを終了()
そしてコマンドを使用する
mpiexec -np 4 Rスクリプトデモ.r
Rscriptがコマンドライン実行可能プログラムの 1 つ であるコードを実行します。
例3
pbdDEMO から変更された次の例は、指定された行列に対して特異値分解を実行する pbdR の基本的な ddmatrix 計算を示しています。次のコードを「demo.r」というファイルに保存します。
# プロセス グリッド
ライブラリを初期化します( pbdDMAT 、quiet = T ) if ( comm.size () != 2 ) comm.stop ( "このデモには 2 つのプロセッサが必要です。" ) init.grid ()
# 残りの設定
comm.set.seed ( diff = TRUE )
M <- N <- 16 BL <- 2 # ブロッキング --- 単一の値を渡すと、BLxBL ブロッキングが想定されますdA <- ddmatrix ( "rnorm" 、nrow = M 、ncol = N 、mean = 100 、sd = 10 )
# LA SVD
svd1 <- La.svd ( dA ) comm.print ( svd1 $ d )
#
ファイナライズを終了()
そしてコマンドを使用する
mpiexec -np 2 Rスクリプトデモ.r
Rscriptがコマンドライン実行可能プログラムの 1 つ であるコードを実行します。
さらに読む
- Raim, AM (2013). UMBC 高性能コンピューティング施設での pbdR による分散コンピューティングの紹介(PDF) (技術レポート). UMBC 高性能コンピューティング施設、メリーランド大学、ボルチモア郡。HPCF-2013-2。2014年 2 月 4 日のオリジナル(PDF)からアーカイブ。2013年 6 月 26 日取得。
- Bachmann, MG, Dyas, AD, Kilmer, SC および Sass, J. (2013). pbdR におけるデータのブロック巡回分散と計算効率への影響(PDF) (技術レポート). UMBC 高性能コンピューティング施設、メリーランド大学、ボルチモア郡。 HPCF-2013-11。 2014-02-04 にオリジナル(PDF)からアーカイブ。2014-02-01に取得。
{{cite tech report}}: CS1 maint: multiple names: authors list (link) - Bailey, WJ, Chambless, CA, Cho, BM および Smith, JD (2013)。高次元データにおける非線形相関の特定とタンパク質分子動力学シミュレーションへの応用(PDF) (技術レポート)。UMBC 高性能コンピューティング施設、メリーランド大学、ボルチモア郡。HPCF-2013-12。2014 年 2 月 4 日のオリジナル(PDF)からアーカイブ。2014年 2 月 1 日に取得。
{{cite tech report}}: CS1 maint: multiple names: authors list (link) - Dirk Eddelbuettel (2022 年 11 月 13 日)。「R による高性能並列コンピューティング」。
- 「12,000 コアの R」。
この記事は2012年10月16日に掲載されて以来、2012年に22,584回読まれ、第3位にランクされました[6] - Google Summer of Code - R 2013。「R による並列コンピューティングのプロファイリング ツール」。2013 年 6 月 29 日のオリジナルからアーカイブ。
{{cite web}}:|author=一般的な名前があります (ヘルプ)CS1 maint: numeric names: authors list (link) - ウーシュウー(2014)。 「在雲端運算環境使用R和MPI」。
{{cite web}}: CS1 maint: numeric names: authors list (link) - ウーシュ・ウー(2013)。 「AWS 構築R と pbdMPI の高速な使用環境」。ユーチューブ。
{{cite web}}: CS1 maint: numeric names: authors list (link)
参考文献
- ^ Ostrouchov, G., Chen, W.-C., Schmidt, D., Patel, P. (2012). 「R でのビッグデータを使ったプログラミング」
{{cite web}}: CS1 maint: multiple names: authors list (link) - ^ Chen, W.-C. & Ostrouchov, G. (2011). 「HPSC -- データ集約型研究のための高性能統計コンピューティング」。2013-07-19 にオリジナルからアーカイブ。2013-06-25に取得。
- ^ 「データ分析を始めるためのRの基本チュートリアル」。2022年11月3日。
- ^ ab Yu, H. (2002). 「Rmpi: R での並列統計計算」R ニュース。
- ^ Mike Houston. 「Folding@Home - GPGPU」. 2007-10-04閲覧。
- ^ 「2012 年に最も読まれた R 関連の投稿 100 件 (R ブロガーの統計) - ビッグ データ、視覚化、データ操作、その他の言語」。
外部リンク
- 公式サイト
