我正在编写的 (R) 程序有时能够编写包含 OpenMP 指令的 C 源代码文件,以加速生成的程序(这些文件主要包含一组微分方程,其结果被写入数组 - 如这些步骤可以独立执行,我认为使用 omp 部分将它们并行化是个好主意)。由于以这种方式生成的文件应该在我的程序的另一部分中使用,我还使用 Rsystem(R CMD SHLIB...)
在运行时编译它们,因为这种方法似乎具有这样的优势,即使用R CMD SHLIB
,不需要对用户。
我现在面临的问题是我无法将-fopenmp
(或-openmp
)编译器指令传递给R CMD SHLIB
,并且在不构建 R 包时无法使用提供额外编译器标志(或理想情况下$SHLIB_OPENMP_CFLAGS
)的 Makevars 文件 - 我是在这种情况下不做,所以R CMD SHLIB
编译我给它的文件。但是,如果没有 OpenMP 并行化,我看不出SHLIB
在这种情况下如何将相应的标志传递给。
是否有任何可能R CMD SHLIB
用于此任务,或者我是否必须通过内部指定用于 OpenMP 编译的编译器来牺牲可移植性?