M2 Mac(Ventura 13.3.1)下R与data.table的OpenMP配置求助
在M2 Mac(macOS Ventura 13.3.1)上配置R与data.table的OpenMP环境遇到问题
问题概述
- OpenMP已正确安装
- 已按官方指南更新~/.R/Makevars文件
- ~/.R/Makevars未在R中加载生效
- 附R SessionInfo详情
OpenMP已正确安装
通过以下代码验证OpenMP相关文件均存在:
file.exists( "/usr/local/lib/libomp.dylib", "/usr/local/include/ompt.h", "/usr/local/include/omp.h", "/usr/local/include/omp-tools.h" ) # 输出:TRUE TRUE TRUE TRUE
编译并运行openmp_test.c测试程序:
#include <stdio.h> #include <omp.h> int main() { #pragma omp parallel { int thread_id = omp_get_thread_num(); printf("Hello from thread %d\n", thread_id); } return 0; }
使用命令clang -Xclang -fopenmp -lomp openmp_test.c -o openmp_test编译,运行./openmp_test得到多线程输出,确认OpenMP可正常工作。
已按指南更新~/.R/Makevars文件
文件内容如下:
readLines("~/.R/Makevars") # [1] "CPPFLAGS += -Xclang -fopenmp" # [2] "LDFLAGS += -lomp" # [3] "TEST = test1234"
~/.R/Makevars未在R中加载
在R中查询相关环境变量均为空:
Sys.getenv("CPPFLAGS") # [1] "" Sys.getenv("LDFLAGS") # [1] "" Sys.getenv("TEST") # [1] ""
在Shell中查看文件权限:
ls -al ~/.R/Makevars # -rw------- 1 chandler 62 May 31 07:08 /Users/chandler/.R/Makevars
尝试修改权限为chmod 600 ~/.R/Makevars,并在.Renviron中添加R_MAKEVARS_USER=~/.R/Makevars,确认Sys.getenv("R_MAKEVARS_USER")已生效,但问题仍未解决。
R SessionInfo
R version 4.3.0 (2023-04-21) Platform: aarch64-apple-darwin20 (64-bit) Running under: macOS Ventura 13.3.1 Matrix products: default BLAS: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRblas.0.dylib LAPACK: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRlapack.dylib; LAPACK version 3.11.0 locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 time zone: America/Denver tzcode source: internal attached base packages: [1] stats graphics grDevices [4] utils datasets methods [7] base loaded via a namespace (and not attached): [1] compiler_4.3.0
内容的提问来源于stack exchange,提问作者chandler
相关产品推荐
相关产品推荐

