OpenMPとCで大学の成果物を扱っていますが、次のコードを実行しようとしていますが、唯一のことは各セクションがどのように異なるスレッド:OpenMPは常に同じスレッドで動作します
#include <omp.h>
#include <stdio.h>
int main() {
int id, np;
printf("Max threads number: %d\n",omp_get_max_threads());
omp_set_num_threads(omp_get_max_threads());
#pragma omp parallel sections private(id, np)
{
np = omp_get_num_threads();
#pragma omp section
{
id = omp_get_thread_num();
printf("Hello from thread %d out of %d threads\n", id, np);
}
#pragma omp section
{
id = omp_get_thread_num();
printf("Hello from thread %d out of %d threads\n", id, np);
}
#pragma omp section
{
id = omp_get_thread_num();
printf("Hello from thread %d out of %d threads\n", id, np);
}
#pragma omp section
{
id = omp_get_thread_num();
printf("Hello from thread %d out of %d threads\n", id, np);
}
}
}
私はLinux上で働いている、と私はそれをコンパイルするとき、これは言う:
Max threads number: 4
Hello from thread 0 out of 1 threads
Hello from thread 0 out of 1 threads
Hello from thread 0 out of 1 threads
Hello from thread 0 out of 1 threads
:
g++ prueba.c -lgomp -o prueba
を私は次の出力を取得しています
スレッド番号0で常に動作している理由とomp_get_num_threads()が常に1である理由を誰にでも教えてください。
私が達成したい出力は次のようになります。事前に
Max threads number: 4
Hello from thread 0 out of 3 threads
Hello from thread 1 out of 3 threads
Hello from thread 2 out of 3 threads
Hello from thread 3 out of 3 threads
ありがとう!
うわー...間違いなくこれが私の問題を解決した...本当にありがとう!私はあなたに私に返答する両方の努力をとても感謝します! –