0
パフォーマンスを向上させるためにデータベース内部プロジェクトにOpenMPを使用しようとしています。このプログラムからコンソールに何かを印刷する方法がないので、実行時間(omp_get_wtime()
を使用しています)をファイルに保存する必要があります。より良い方法があればお勧めします。私はすべてのスレッド(以下のコードを参照)から1つのファイルに書き込もうとしましたが、スレッド数が複数の場合はクラッシュします。助けてください。前もって感謝します。OpenMPの複数スレッドのファイルにwtimeの違いを保存する方法は?
FILE *fp = NULL;
fp = fopen("/home/fopen.txt","a");
...
omp_set_num_threads(2);
fprintf(fp,"Num of threads: %d\n",omp_get_num_threads());
#pragma omp parallel default(shared) private(tid)
{
tid = omp_get_thread_num();
#pragma omp critical
fprintf(fp,"ThreadID of this thread is %d\n",tid);
:
:
}
if (fp != NULL)
fclose(fp);
録音時間の配列を設定し、各スレッドが配列の要素に書き込むようにします(スレッド番号でインデックス付けされます)。パラレル領域に残りのアクティブなスレッドがあると、配列をファイルに書き出します。あなたが1つのファイルへの並行書込みを整理すると、書いたものがあなたが望むように注文されていないと不平を言ってしまうだけです。 –
ありがとう。このアプローチは私のために働いているようだ。 – Phaniarnab
あなたの質問への回答を書き留めて受け入れてみませんか? –