试图做setenv OMP_NUM_THREADS 8
如果在 shell 提示符下执行setenv OMP_NUM_THREADS 4
此操作则表示成功。如果我启动程序,它将在 4 个核心上运行。
但我有一个名为的文件,runme
它只是这个
setenv OMP_NUM_THREADS 8
cd /scratch/run1
./crunch_numbers.x
我的crunch_numbers.x
程序与 openMP 并行并使用OMP_NUM_THREADS
环境变量。
当 runme 脚本运行在 4 个核心而不是 8 个核心上时,问题是 crunch_numbers 。我的脚本中 OMP_NUM_THREADS 的设置不起作用。如何使脚本中的setenv生效?
另外,我的 shell 是 /bin/tcsh。我不打算在 bash shell 中使用它。谢谢。
答案1
如果您更喜欢使用tcsh
,您的脚本应该这样说,将其放在开头:
#!/bin/tcsh -f
告诉#!/bin/tcsh
内核运行那程序而不是#/bin/sh
,并且该-f
选项提醒tcsh
不要重新初始化自身。
进一步阅读:
- 参数列表处理(tcsh)
- Shebang 与当前 shell 的关系