同時プログラミングは、複数のプロセッサを使用することでプログラムのパフォーマンスを向上させます。OpenMP は、並列領域、並列 for ループ、クリティカル セクション、バリアの作成など、同時タスクの作成と管理をサポートする命令を提供する並列プログラミング ライブラリです。
コンカレント プログラミングには、複数のタスクを同時に実行するプログラムの作成と管理が含まれます。複数のプロセッサまたはプロセッサ コアを活用することで、同時プログラミングによりアプリケーションのパフォーマンスを大幅に向上させることができます。
OpenMP は、C、C++、および Fortran プログラムの並列化のサポートを提供する、広く使用されているオープン ソースの並列プログラミング ライブラリです。 OpenMP は、同時タスクを作成および管理するための多くの関数とディレクティブを提供します。
ここでは OpenMP の基本的な手順をいくつか示します:
#pragma ompParallel
: コードが複数のスレッドによって並列実行される並列領域を作成します。 #pragma omp parallel
: 创建一个并行区域,其中代码将由多个线程并行执行。#pragma omp for
: 创建一个并行 for 循环,其中循环迭代将由多个线程并行处理。#pragma omp critical
: 创建一个临界区,以确保一次只能有一个线程执行其中的代码块。#pragma omp barrier
#pragma omp for
: ループの反復が複数のスレッドによって並列処理される並列 for ループを作成します。 #pragma ompcritical
: クリティカル セクションを作成して、その中のコード ブロックを一度に 1 つのスレッドだけが実行できるようにします。 #pragma omp Barrier
: 実行を続行する前にすべてのスレッドがこのポイントに到達していることを確認するバリアを設定します。
#include <iostream> #include <omp.h> int main() { int n = 10000000; int sum = 0; // 创建一个并行区域 #pragma omp parallel { // 每条线程计算其部分和 #pragma omp for reduction(+:sum) for (int i = 0; i < n; i++) { sum += i; } } std::cout << "总和为:" << sum << std::endl; return 0; }
以上がC++ 同時プログラミング: 並列ライブラリ (OpenMP など) を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。