- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在 Mac OSX 上开发一个 R 包,带有一些低级 C/C++
代码和 openMP
支持。 C++
代码是使用Rcpp
包编写的。我的全局“Makevars”文件位于 ~/.R/
文件夹下。该文件如下所示。
CC=clang-omp
CXX=clang-omp++
PKG_CFLAGS=Wall -pedantic
PKG_CFLAGS= -fopenmp
PKG_CXXFLAGS= -fopenmp
PKG_LIBS= -fopenmp -lgomp
在此配置下一切正常!
但是,现在我想构建特定于包的 Makevars
文件以供自己编译,以使包可移植。我尝试的只是将全局 Makevars
文件移动到我的 R pakcage src
文件夹中。但是编译器报错找不到openMP头文件omp.h
:
** libs
clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include -I"/Library/Frameworks/R.framework/Versions/3.2/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.2/Resources/library/bigmemory/include" -I"/Library/Frameworks/R.framework/Versions/3.2/Resources/library/BH/include" -fopenmp -fPIC -Wall -mtune=core2 -g -O2 -c RcppExports.cpp -o RcppExports.o
RcppExports.cpp:12:10: fatal error: 'omp.h' file not found
#include <omp.h>
^
1 error generated.
make: *** [RcppExports.o] Error 1
clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include -I"/Library/Frameworks/R.framework/Versions/3.2/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.2/Resources/library/bigmemory/include" -I"/Library/Frameworks/R.framework/Versions/3.2/Resources/library/BH/include" -fopenmp -fPIC -Wall -mtune=core2 -g -O2 -c RcppExports.cpp -o RcppExports.o
RcppExports.cpp:12:10: fatal error: 'omp.h' file not found
#include <omp.h>
^
1 error generated.
make: *** [RcppExports.o] Error 1
如您所见,编译器变为 clang
和 clang++
,但不是 Makevars
文件中指定的:CC= clang-omp
和 CXX=clang-omp++
。
问题 1:那么我该如何解决这个问题并在 R 包中构建一个 Makevars
文件呢?
另一件事是,我从 Writing R extensions 注意到那个,
For example, a package with C code written for OpenMP should have in src/Makevars the lines
PKG_CFLAGS = $(SHLIB_OPENMP_CFLAGS)
PKG_LIBS = $(SHLIB_OPENMP_CFLAGS)
问题 2:例如,宏 $(SHLIB_OPENMP_CFLAGS)
和标志 -fopenmp
之间有什么区别?我应该在什么情况下使用哪一个?我尝试用宏替换标志,但仍然无法解决问题。
最佳答案
关于问题,我最喜欢的方法是从工作包中复制。这是来自(推荐/核心)包 mgcv 的部分:
PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) $(SHLIB_OPENMP_CFLAGS)
PKG_CFLAGS = $(SHLIB_OPENMP_CFLAGS)
我在较小的 winsorize 中使用相同的片段我和 Andreas 打包(在 GitHub 上)。
关于问题 2:第一种形式更通用,允许其他 OpenMP 实现。它使用 R 在配置时发现可用的内容。
关于c - 带有 C/C++ 和 openMP 的 R 包 : how to make "Makevars" file under "mypackage/src/" folder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32974568/
这两个 require 语句的工作方式似乎相同: var Mypackage = require('mypackage.js'); var Mypackage require('mypackage')
是否可以在家中将源代码(mypackage.tar.gz)转换为 R 中的窗口安装(mypackage.zip)?我该怎么做 ? 我可以使用 7-Zip 解压缩 tar.gz。当我尝试重新编译以下是错
我已经通过在R提示符下通过以下命令设法将Rcpp.package.skeleton安装到Windows中- Rcpp.package.skeleton("mypackage") system("R C
我知道这应该很容易,而且我知道网上其他人也问过这个问题,但我觉得我理解他们所有的答案和概念,但我的导入仍然抛出错误。 我有这个目录结构 root/myPackage/ root/tests/test_
adam@adam:~/Untitled Folder/package/web$ cat myscript.py from package.settings import sth adam@adam:
我已经将相同的图像保存到/data/data/mypackage/img/中,现在我想显示这个全屏,我曾尝试使用 ACTION_VIEW 来显示 android 标准程序,但它不是从/data/dat
我有一个grails应用程序。我已经安装了Spring Security Core插件2.0 RC2,并且正在BootStrap.groovy中创建角色,用户和requestmap。 我运行应用程序时
我有一个像这样的包目录设置 package_dir |-src | |-mypackage | |-__init__.py | |-setup.py 如何设置 setup.py 以使我能够导入 m
我知道类似的问题很少,但没有一个对我有帮助,所以我正在写一个新的问题。这是我的目录结构: - mypackage - __init__.py - run.py - requirements.t
我一直在努力效仿这个例子:http://blog.softeq.com/2012/12/using-pre-populated-sqlite-database-in.html 此示例旨在向您展示如何打
查询 MediaStore.Video.Media.EXTERNAL_CONTENT_URI 只返回 /sdcard/DCIM/100MEDIA 中的视频 但我想在我的 /sdcard/Android
在 Spring ,当我尝试从我的 BlogController 执行操作时,我试图解决 Unresolved Bean 异常: @Autowired BlogService blogService;
我需要写List myList到 CSV 文件中。我特别需要写values 。 MyClass 具有以下实现: public class MyClass { private Object[]
这是我的 list ?是明显的问题吗?花了很多时间来发现问题......是一项按 Intent 启动类(class)的服务(使用 alarmmanager)。如果没有明显的问题,问题是什么? 感谢您的
我正在努力成为一名优秀的 Pythonista 并关注 PEP 338对于我计划部署的包。 我还尝试使用 setuptools entry_points{'console_scripts': ...
在 perl 中,$self->subname 与 $self->MYPACKAGE::subname 相同吗?我是 Pythonizer 的作者还有一段神秘的 Perl 代码,这个代码又来自 CGI
在 Grails 3.3.8 中,使用基于接口(interface)的新 Grails 服务,我的 UserService是这样的: interface IUserService { User
在 perl 中,$self->subname 与 $self->MYPACKAGE::subname 相同吗?我是 Pythonizer 的作者还有一段神秘的 Perl 代码,这个代码又来自 CGI
我正在使用 Jersey RESTful Web 服务。我如下编写了客户端,但它抛出了我在标题中提到的异常。 public class MyRestClient { public static
当我尝试执行 insertEmployeeDetails 方法时,出现以下错误: org.hibernate.QueryException:无法解析属性:查询:abc.def.mypackage.or
我是一名优秀的程序员,十分优秀!