Как использовать OpenMP в make-файле? - PullRequest
0 голосов
/ 18 сентября 2018

Я использую 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;
    }
}

1 Ответ

0 голосов
/ 18 сентября 2018

Хорошо, так что я сам понял это после игры. В случае, если кто-то ищет то же самое, 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 следует добавить в обе строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...