我正在尝试使用 GNU Parallel 并行启动 Octave 脚本。一切正常,但我有一个关于导出变量的问题。在使用 GNU Parallel 之前,我的工作流程是打开终端,执行
export OMP_NUM_THREADS=1
,然后执行我的 Octave 脚本。这样我就为 BLAS 分配了 1 个线程,供 Octave 使用。使用 GNU Parallel 时,在使用 GNU Parallel 之前执行 export OMP_NUM_THREADS=1
是否足够,或者我应该做些什么不同的事情?我读到了有关 env_parallel
的内容,但我不确定我的用例是否需要它,以及如果需要的话如何使用它。
这就是我在没有 GNU Parallel 的情况下所做的事情(打开终端并):
export OMP_NUM_THREADS=1
octave--gui
这就是我现在使用 GNU Parallel 所做的事情(然后打开终端):
export OMP_NUM_THREADS=1
readlink -f ./data/*.csv | parallel "octave validation.m {}"
基本上,我正在尝试使用
validation.m
并行处理目录中的 CSV 文件,并且我想确保 BLAS 仅使用 1 个线程。
export variable=value
会将 variable
设置为 value
并将其标记为导出到子流程。其中包括 parallel
和 octave
以及您在该 shell 中运行的任何其他内容(除非运行 env
等极端情况来覆盖环境中的其他内容)。
总而言之,导出的变量对于设置它的环境的所有后代都是可见的。
如果您需要更多详细信息,也许可以阅读 Unix 进程模型;但这并不是很复杂。