OpenMPを用いたコード例とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > OpenMPを用いたコード例の意味・解説 

OpenMPを用いたコード例

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/03/20 16:29 UTC 版)

OpenMP」の記事における「OpenMPを用いたコード例」の解説

以下はC言語における for ループ並列処理させる例である。 int main(int argc, char *argv[]){ int i;#pragma omp parallel for for (i = 0; i < 10000; ++i) { /* (並列処理させたいプログラム) */ } return 0;} OpenMPループ反復処理自動的に複数スレッド分割して並行処理できるようにする。例え4つスレッド用いて処理を分割する場合上記例ではインデックス[0, 2499], [2500, 4999], [5000, 7499], [7500, 9999]の各範囲それぞれのスレッド分担させる、といった具合である。実際にいくつのスレッド起動するのか、また各スレッドに対してどのように処理を振り分けるのかはOpenMP処理系およびプログラム実行環境などの条件依存する。 以下は区分求積法用いた円周率πの数値計算を、OpenMP並列リダクションによって行なうC++コード例である。 #include #include #include #include #include const double D_PI = 3.1415926535897932384626433832795;// 区分求積法で π の近似値求める。// 1 / (x^2 + 1) を区間 [0, 1] で積分すると π/4 になるという定積分利用するint main(){ const int DivNum = 1000 * 1000 * 1000; const double delta = 1.0 / DivNum; std::cout << "OpenMP max threads count = " << omp_get_max_threads() << std::endl; const auto startTime = std::chrono::system_clock::now(); double sum = 0;#pragma omp parallel for reduction(+ : sum) for (int i = 0; i < DivNum; ++i) { const double x = (delta * i); const double area = delta * 1.0 / (x * x + 1.0); sum += area; } const double pi = sum * 4.0; const auto endTime = std::chrono::system_clock::now(); std::cout << std::setprecision(15) << "PI ~= " << pi << std::endl; std::cout << "Error [%] = " << (100.0 * std::fabs(D_PI - pi) / D_PI) << std::endl; std::cout << "Elapsed time [ms] = " << std::chrono::duration_cast(endTime - startTime).count() << std::endl; return 0;} OpenMPコンパイルオプションの有無切り替えるか、OpenMPディレクティブコメントアウトコメント解除してからコンパイル実行することで、マルチスレッド版およびシングルスレッド版の速度性能比較簡単に行なうことができるのがOpenMPプログラムの特徴である。

※この「OpenMPを用いたコード例」の解説は、「OpenMP」の解説の一部です。
「OpenMPを用いたコード例」を含む「OpenMP」の記事については、「OpenMP」の概要を参照ください。

ウィキペディア小見出し辞書の「OpenMPを用いたコード例」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「OpenMPを用いたコード例」の関連用語

1
8% |||||

OpenMPを用いたコード例のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



OpenMPを用いたコード例のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのOpenMP (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS