如何在CMake文件中包含MPI和OpenMP编译器?
我尝试添加以下几行:
#this find out compilers for mpi
find_package(MPI REQUIRED)
#this find out compilers for openmp
find_package(OpenMP)
然后我链接到两个库:
target_link_libraries(mympiopenmpproject PUBLIC MPI::MPI_CXX PUBLIC OpenMP::OpenMP_CXX)
这是我的测试代码:
void openmp_run ()
{
double t0, t1;
t0 = MPI_Wtime();
#pragma omp parallel for
for(std::size_t zindex=1; zindex<100000; zindex++)
{
//do something here
}
t1 = MPI_Wtime();
std::cout <<" Multithread wall clock: "<< std::scientific
<< t1-t0<<std::endl;
}
然后我运行代码
mpirun -n 16 -x OMP_NUM_THREADS=4 ./test
计算时间约为4.933536e-02
如果我运行的线程数较少:
mpirun -n 16 -x OMP_NUM_THREADS=1 ./test
我也有类似的时间。
为什么使用不同数量的线程会出现这种情况?