如何为hyrid mpi和openmp编写cmake文件

问题描述 投票:0回答:1

如何在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)
cmake mpi openmp
1个回答
0
投票

这是我的测试代码:

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

我也有类似的时间。

为什么使用不同数量的线程会出现这种情况?

© www.soinside.com 2019 - 2024. All rights reserved.