2016-06-15 105 views
1

我試圖通過將OpenMP用於兩個不同的項目來並行化循環,但OpenMP在Makefile中存在問題:ignoring #pragma omp parallelize for。所以我需要更改Makefile,以便它可以支持OpenMP,但我不知道如何。如何在Makefiles/GCC中啓用OpenMP支持

all: lbm 

lbm: lbm.c main.c 
    gcc -o lbm lbm.c main.c -lm 
clean: 
    rm -f lbm *.o 

all: mcf 

mcf: implicit.c mcfutil.c pbeampp.c pflowup.c pstart.c treeup.c mcf.c  output.c pbla.c  psimplex.c readmin.c 
    gcc -o mcf *.c 
clean: 
    rm -f mcf *.o 

回答

3

對於gcc,OpenMP通過-fopenmp標誌啓用。將此添加到每個調用gcc。不同的編譯器可能使用不同的標誌,在這些情況下請查閱編譯器手冊。爲確保更改有效,請在編輯Makefile後運行make clean && make all

+0

我這樣做,但沒」 t工作「make:」全部「沒有事情要做。」 所有:LBM LBM:lbm.c main.c中 \t的gcc -o -fopenmp LBM lbm.c的main.c -lm 清潔: \t RM -f磅*的.o – Eli

+0

文件也不檢測更改自己。你需要運行'make clean && make all'。 – Zulan

+0

謝謝你幫助我,但我新來的這個東西將消息改爲:gcc fopenmp -o lbm lbm.c main.c -lm gcc:error:fopenmp:沒有這樣的文件或目錄 make:*** [ lbm]錯誤1 – Eli

1

-fopenmp選項添加到每個呼叫gcc

+0

我做到了,但沒有成功「make:沒有爲'all'完成任何事情。」 所有:LBM LBM:lbm.c main.c中 \t的gcc -o -fopenmp LBM lbm.c的main.c -lm 清潔: \t RM -f磅*的.o – Eli