OpenMP で並列化しようとしている関数が 1 つあります。すべての反復が他の反復から独立している大きなfor
ループがあり、次のようなものを使用したい
#pragma omp for private(j)
ループを並列化します。
1 つの問題は、ループの反復ごとにかなりの量の一時ワークスペースが必要になることです。この一時ワークスペースを反復ごとに 1 回割り当てて解放すると、パフォーマンスが低下する可能性が高いと思います。私の環境には「ワークスペース」オブジェクトがあり、古いワークスペース オブジェクトをそのまま再利用しても問題はありません。
スレッドが作成される前に各スレッドにワークスペースを割り当てるにはどうすればよいですか (スレッドがいくつあるかわかりません)。プールから一意のワークスペース オブジェクトを選択するように各スレッドに指示するにはどうすればよいですか?