如何在makefile中使用OpenMP?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在makefile中使用OpenMP?相关的知识,希望对你有一定的参考价值。

我正在使用Makefile来设置mo代码所需的环境。我正在学习并行化,并感谢您的帮助。

# The list of packages used by the macro:
USED_PKGS = xAODRootAccess xAODTruth xAODJet xAODMissingET
test: test.o
    `root-config --ld` -o $@ `root-config --libs` 
        -L$(ROOTCOREDIR)/lib `rc get_ldflags $(USED_PKGS)` $^
clean:
    rm -f test.o
    rm -f test
.SUFFIXES: .C .o
.C.o:
    `root-config --cxx` -c -o $@ `root-config --cflags` 
        -I$(ROOTCOREDIR)/include `rc get_cxxflags $(USED_PKGS)` $<

我已经安装了OpenMPI并将其添加到PATH和LD_LIBRARY_PATH。

我的代码非常简单,只想根据Makefile进行检查:

int main()
{
    int i;
#pragma omp parallel for
    for ( i = 0; i < 1e8; i++ )
    {
        int y = 2*i;
    }
}
答案

好的,所以我在玩完之后想出来了。如果其他人正在寻找相同的东西,Makefile应该是这样的:

# The list of packages used by the macro:
USED_PKGS = xAODRootAccess xAODTruth xAODJet xAODMissingET
test: test.o
    `root-config --ld` -o $@ `root-config --libs` 
        -L$(ROOTCOREDIR)/lib `rc get_ldflags $(USED_PKGS)` $^ -fopenmp
clean:
    rm -f test.o
    rm -f test
.SUFFIXES: .C .o
.C.o:
    `root-config --cxx` -c -o $@ `root-config --cflags` 
        -I$(ROOTCOREDIR)/include `rc get_cxxflags $(USED_PKGS)` $< -fopenmp

-fopenmp应添加到两行中。

以上是关于如何在makefile中使用OpenMP?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 OpenMP 中使用锁?

如何在英特尔 MIC 上本地分析 openmp 代码?

如何编写在 C++ openmp 上重用线程的代码?

如何确认多核系统中的openmp是不是使用了所有内核?

如何提高 OpenMP 代码的性能?

在 OpenMP 中,我们如何并行运行多个代码块,其中每个代码块包含 omp single 和 omp for 循环?