Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++11 C++;Windows/Mac中R包的编译标志 我开发了一个R包,通过RCPP和RCPPEGIN调用C++代码。我的Makevars.win如下所示(枚举是指我的问题)_C++11_Rcpp_Intel Mkl_Compiler Flags_R Package - Fatal编程技术网

C++11 C++;Windows/Mac中R包的编译标志 我开发了一个R包,通过RCPP和RCPPEGIN调用C++代码。我的Makevars.win如下所示(枚举是指我的问题)

C++11 C++;Windows/Mac中R包的编译标志 我开发了一个R包,通过RCPP和RCPPEGIN调用C++代码。我的Makevars.win如下所示(枚举是指我的问题),c++11,rcpp,intel-mkl,compiler-flags,r-package,C++11,Rcpp,Intel Mkl,Compiler Flags,R Package,CXX_标准=CXX11 PKG_CPPFLAGS=-fopenmp-O3-Wall-ftree vectorize-march=native-mavx-mfma PKG_cxflags+=$(SHLIB_OPENMP_cxflags) PKG_LIBS=-fopenmp PKG_LIBS+=$(LAPACK_LIBS)$(BLAS_LIBS)$(FLIBS)$(SHLIB_OPENMP_cxflags) PKG_CPPFLAGS+=-I../inst/include/ 因为我想使用OpenMP

CXX_标准=CXX11

  • PKG_CPPFLAGS=-fopenmp-O3-Wall-ftree vectorize-march=native-mavx-mfma

  • PKG_cxflags+=$(SHLIB_OPENMP_cxflags)

  • PKG_LIBS=-fopenmp

  • PKG_LIBS+=$(LAPACK_LIBS)$(BLAS_LIBS)$(FLIBS)$(SHLIB_OPENMP_cxflags)

  • PKG_CPPFLAGS+=-I../inst/include/

  • 因为我想使用OpenMP并将R软件包链接到“英特尔MKL库”。我还在源文件中添加插件
    /[[Rcpp::plugins(cpp11)]
    /[[Rcpp::plugins(openmp)]

    当我编译包时,一切正常,但我仍然得到默认的编译标志
    -O2
    -std=c++0x
    。因此,我的问题是:

    A.不是1。应该强制<代码> -STD= C++ 11 (顺便说一下,使用相同的Mavkar生成正确的C++版本,所以必须有一些特定于Windows)?< /P> B.3次重复2次fopenmp吗

    C.如何检查是否存在5。有没有考虑过?我这样问是因为在Mac上构建的相同软件包比在Windows上构建的快得多,而它们的配置是相同的。我使用MicrosoftR Open和Mac在Windows上对相同的代码进行了一些基准测试,Windows在这种情况下速度更快

    非常感谢你的宝贵帮助

    从哪里开始

    首先,编译和链接选项基于R的
    Makeconf
    和包的
    src/Makevars
    的联合。您可以增加价值,但不能替换

    其次,与此相关的是,您得到的BLAS是一个系统设置问题。一般来说,您无法从包中管理这些内容

    第三,用于
    sourceCpp()
    cppFunction()
    的插件。在包中,您可以直接声明,即
    CXX\u STD=cx11

    第四,使用Rcpp的CRAN上几乎有1000个包。有时候,看看其中的一些功能会有帮助。许多人使用OpenMP

    第五,得益于苹果,OpenMP在OSX上面临着严峻的挑战。我忘了窗户的情况是什么。它只在Linux上工作。

    从哪里开始

    首先,编译和链接选项基于R的
    Makeconf
    和包的
    src/Makevars
    的联合。您可以增加价值,但不能替换

    其次,与此相关的是,您得到的BLAS是一个系统设置问题。一般来说,您无法从包中管理这些内容

    第三,用于
    sourceCpp()
    cppFunction()
    的插件。在包中,您可以直接声明,即
    CXX\u STD=cx11

    第四,使用Rcpp的CRAN上几乎有1000个包。有时候,看看其中的一些功能会有帮助。许多人使用OpenMP


    第五,得益于苹果,OpenMP在OSX上面临着严峻的挑战。我忘了窗户的情况是什么。它只适用于Linux。

    只适用于Windows。。。只有macOS需要特殊处理。谢谢你的澄清,谢谢。@DirkEddelbuettel听起来我不清楚。。。我要说的是,这些标志在我用来构建R包的src/Makevars中,在Windows上不考虑CXX_STD=CXX11,但在Mac上考虑。我不清楚为什么。然后,很明显,我已经研究了使用OpenMP的软件包(这导致了我的5)。最后,我还认为我说得很清楚,该软件包可以在Windows上很好地构建(使用openmp)。我的问题涉及到我的标志是否正确且不冗余,以及为什么在Windows中不考虑std=c++11和-O3(它们在Mac上)。@DirkEddelbuettel感谢您的尝试。我在Just works on Windows上找到了问题的答案。。。只有macOS需要特殊处理。谢谢你的澄清,谢谢。@DirkEddelbuettel听起来我不清楚。。。我要说的是,这些标志在我用来构建R包的src/Makevars中,在Windows上不考虑CXX_STD=CXX11,但在Mac上考虑。我不清楚为什么。然后,很明显,我已经研究了使用OpenMP的软件包(这导致了我的5)。最后,我还认为我说得很清楚,该软件包可以在Windows上很好地构建(使用openmp)。我的问题涉及到我的标志是否正确且不冗余,以及为什么Windows中不考虑std=c++11和-O3(它们在Mac上)。@DirkEddelbuettel感谢您的尝试。我在上找到了问题的答案