Ser*_*gio 6 macos fortran r openmp cran
我有一个带有 Fortran 和 OpenMP的R 包,但无法通过 CRAN。我收到以下消息:
您的软件包不再安装在有 OpenMP 问题的 macOS 上。
我的Makevars文件是:
USE_FC_TO_LINK =
PKG_FFLAGS = $(SHLIB_OPENMP_FFLAGS)
PKG_LIBS = $(SHLIB_OPENMP_FFLAGS)
C_OBJS = init.o
FT_OBJS = e_bottomup.o e_topdown.o check_nt.o
all:
@$(MAKE) $(SHLIB)
@rm -f *.o
$(SHLIB): $(FT_OBJS) $(C_OBJS)
init.o: e_bottomup.o e_topdown.o check_nt.o
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?谢谢。
编辑1:
我尝试添加标志 cpp:
USE_FC_TO_LINK =
PKG_FFLAGS = $(SHLIB_OPENMP_FFLAGS) *-cpp*
PKG_LIBS = $(SHLIB_OPENMP_FFLAGS)
Run Code Online (Sandbox Code Playgroud)
在 !omp 之前在 Fortran 代码上添加条件 #ifdef _OPENMP ...
但是使用 R CMD Check 我得到了消息:
Non-portable flags in variable 'PKG_FFLAGS': -cpp
Run Code Online (Sandbox Code Playgroud)
Makevars 文件没问题。OMP 指令必须加注释 !$,包括 USE OMP。
例如,我使用 Fortran 和 OMP 创建了一个 R 包来测试(并使用它)。
我添加了一个 R 函数来返回每台机器中的最大线程数:
Fortran 代码是:
SUBROUTINE checkntf (nt)
!$ USE OMP_LIB
IMPLICIT NONE
INTEGER nt
!$ nt = OMP_GET_MAX_THREADS()
RETURN
END
Run Code Online (Sandbox Code Playgroud)
已安装在 Windows、Ubuntu 和 macOS 上,如下所示
归档时间: |
|
查看次数: |
212 次 |
最近记录: |