如何在Makefiles/GCC中启用OpenMP支持
我试图通过在两个不同的项目中使用OpenMP来并行化for循环,但OpenMP在Makefile中存在一个问题:如何在Makefiles/GCC中启用OpenMP支持,gcc,makefile,openmp,Gcc,Makefile,Openmp,我试图通过在两个不同的项目中使用OpenMP来并行化for循环,但OpenMP在Makefile中存在一个问题:忽略#pragma omp parallelize for。所以我需要更改Makefile,使其能够支持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
忽略#pragma omp parallelize for
。所以我需要更改Makefile,使其能够支持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
将
-fopenmp
选项添加到gcc
的每个调用中,对于gcc
,OpenMP通过-fopenmp
标志启用。将此添加到每次调用gcc
。不同的编译器可能使用不同的标志,在这些情况下,请参阅编译器手册。为确保更改有效,在编辑Makefile
后运行makeclean&&makeall
,但我没有执行“make:Nothing To do for`all.”操作。all:lbm lbm:lbm.c main.c gcc-fopenmp-o lbm lbm.c main.c-lm clean:rm-f lbm*。其他Makefile不会检测到自身的更改。你需要运行makeclean&&makeall
。谢谢你的帮助,但我对这件事很熟悉。消息将更改为:gcc fopenmp-o lbm lbm.c main.c-lm gcc:error:fopenmp:没有这样的文件或目录生成:**[lbm]error 1看起来你忘记了-fopenmp
的减号了吗?是的,非常感谢你,你真是太棒了:)我做到了,但没有写“make:对所有人都不做任何事”。all:lbm lbm:lbm.c main.c gcc-fopenmp-o lbm lbm.c main.c-lm clean:rm-f lbm*.o