2016-06-15 34 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