我正在使用openMP编译和运行C ++程序,使用以下makefile
all:
g++ -std=c++0x -O2 -fopenmp main.cpp body.cpp -o test
export OMP_NUM_THREADS=4
./test
忽略变量OMP_NUM_THREADS,而如果我在终端中手动给出三个命令(按相同顺序),则考虑变量并且程序以所需数量的节点运行。从终端运行所有内容都会导致OMP_NUM_THREAD变量是之前手动设置的值。在程序本身中,变量是不变的,因此程序只运行可用节点的数量。
非常感谢您的帮助!
聚苯乙烯。有人对链接/文档/视频有一个很好的提示,以便对bash编程进行精彩的介绍吗?
答案 0 :(得分:1)
将变量赋值和export指令从目标部分(“all”)移动到定义部分,如下所示:
OMP_NUM_THREADS=4
export OMP_NUM_THREADS
all:
g++ -std=c++0x -O2 -fopenmp main.cpp body.cpp -o test
./test