私はハイブリッドなopenMP/MPIコードを書いています。 まず、8つのスレッドでopenMPだけをベンチマークしました。 そして、私は、次のハイブリッドOpenMP/MPIとOpenMPだけでは実行時間が遅い
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Get_processor_name(processor_name, &namelen);
//the following function has OPENMP for loop embedded
parallelfunction(args);//should I add condition on rank?
MPI_finalize();
OpenMPの機能のようなMPI層Iハイブリッドコードをコンパイルし、この
ようつのCPU上で実行#pragma omp parallel for schedule(dynamic,chunk) private(i)
for(i=0;i<n;i++){
//loop code here
}
ループのための標準のOpenMPで加え
mpirun -np 1 -x OMP_NUM_THREADS=8 ./program
実行時間がopenMP単独よりも5倍遅かったことを認識するだけです(1つのCPUで必然的に)。 私はbash time
関数を使ってウォールタイムをベンチマークします。 提案がありますか?
私はOpenMPIののv1.10.3
実際のコードや実際の測定結果を見ずには完全にわかりません。 – Zulan
はい、本当にありがとうございます。 1 cpuと8スレッド。 – Marouen
あなたはOpen MPIを使用しています。 '--bind-to none'を' mpirun'オプションのリストに追加してみてください。 –