因此,我试图使用OMP_NUM_THREADS更改openMP中的线程值。当我在提示符下键入export OMP_NUM_THREADS = value时,它工作正常,它更改了线程数,但是当我尝试在Makefile中执行此操作时,它不起作用。我的makefile:
run:
export OMP_NUM_THREADS=4
./cowichan_openmp vecdiff >> out
原因是,每一行都在新的子Shell中执行。另请参阅here。
您可以尝试:
run: export OMP_NUM_THREADS=4
./cowichan_openmp vecdiff >> out
或作为另一个答案:
run:
OMP_NUM_THREADS=4 ./cowichan_openmp vecdiff >> out
配方的每一行都在单独的外壳中运行。因此,在这种情况下,您正在运行一个外壳,设置OMP_NUM_THREADS
,然后退出该外壳并运行另一个外壳(没有该变量)。
您可以将变量定义和对cowichan_openmp
的调用放在同一行:
run:
OMP_NUM_THREADS=4 ./cowichan_openmp vecdiff >> out