C++ Makefile忽略命令export OMP\u NUM\u THREADS
我用OpenMP编译并运行C++程序,下面的生成文件C++ Makefile忽略命令export OMP\u NUM\u THREADS,c++,parallel-processing,makefile,openmp,C++,Parallel Processing,Makefile,Openmp,我用OpenMP编译并运行C++程序,下面的生成文件 all: g++ -std=c++0x -O2 -fopenmp main.cpp body.cpp -o test export OMP_NUM_THREADS=4 ./test 变量OMP_NUM_THREADS将被忽略,而如果我在终端中手动发出三个命令(以相同的顺序),则会考虑该变量,程序将以所需的节点数运行。从终端运行所有操作的效果是OMP_NU
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编程的nooby简介的链接/文档/视频有好的建议 将变量赋值和导出指令从目标部件(“全部”)移动到定义部件,如下所示:
OMP_NUM_THREADS=4
export OMP_NUM_THREADS
all:
g++ -std=c++0x -O2 -fopenmp main.cpp body.cpp -o test
./test
配方中的每一行都在自己的外壳中运行。因此,
export
不会影响/test
行的shell会话。使用env-OMP\u-NUM\u-THREADS=4./test
更好的方法是将其范围扩展到/test
行,使用OMP\u-NUM\u-THREADS=4./test
或类似的方法。