3

openmpを使用してGuibas Stolfi delaunay 三角形分割を並列化しようとしています。

ここで並列化することが 2 つあります。私はすべての可能なアプローチを試みましたが、無駄でした。

分割 () で従うアプローチ (分割 n 征服) は、マージソート () のアプローチと同じですが、同じ並列化手法 (omp セクション) の適用は、マージソートに対してのみ機能します。

ここに示す並列化手法を試しましたが、それでもうまくいきません。ネストされた並列処理についてどこかで読みましたが、それを実装する方法がわかりません。分割統治アルゴリズムがどのように並列化されているか説明できる人はいますか?

CODE:メイン関数と適用されたセクション構成でマージソートが 2 回呼び出されました。除算関数で同じことを行っても機能しません

#pragma omp parallel
{
#pragma omp sections nowait
{
#pragma omp section
{
merge_sort(p_sorted, p_temp, 0, n/2);
}
#pragma omp section
{
merge_sort(p_sorted, p_temp, (n/2)+1, n-1);
}
}
}
4

1 に答える 1

1

Windows で CreateThread 呼び出しを使用して並列化に成功しました。ポイントを 2^n バッファーに分割し、各バッファーを個別のスレッドで処理し、隣接するエッジを 1 つの最終マージまで連続してマージします。

ランダム データを作成し、結果を三角測量して表示するデモ プログラムがあります (小規模な場合)。このサイトでは、私が持っているプログラムと表示ツールの .zip をダウンロードできないようです。アップロード サイトを提案するか、メールを提供していただければ、お送りします。

于 2012-05-17T15:08:36.210 に答える