小编Odi*_*din的帖子

编译后R包`libs`目录太大无法在CRAN上提交

我是以下包https://gitlab.inria.fr/gdurif/pCMF的开发者,我有一个问题:编译的库太大了。

当我检查它时R CMD check,我得到以下关于编译库大小的注释:

检查安装的包大小...注意安装的大小是 31.0Mb 的 1Mb 或更多的子目录:libs 30.8Mb

C++由于包,我的包基于代码接口,并大量使用Eigen基于包的代数模板库RcppEigen

由于 Eigen 是模板化的,我认为编译后的库会变大。但是,我想提交我的包裹,但CRAN我完全不知道如何解决这个问题。

谢谢

r package

7
推荐指数
0
解决办法
510
查看次数

如何指定 Python 包的外部系统依赖项?

在编写 Python 包时,我知道如何在setup.py文件中指定其他必需的 Python 包,这要归功于install_requires来自setuptools.setup.

但是,我不知道如何指定不是 Python 包的外部系统依赖项,即我的包可以通过or调用的诸如gitor cmake(示例)之类的命令?subprocess.callsubprocess.Popen

我是否必须手动检查setup.py文件中命令的可用性,或者是否有一种奇特的方式来指定系统要求?

编辑:我只想能够检查外部工具是否可用,如果不邀请用户安装它们(由他们自己)。我不想在安装包时管理外部工具的安装。

贡献摘要:似乎setuptools不支持这一点,在运行时进行检查会更安全(参见评论和答案)。

python setuptools setup.py python-3.x python-packaging

5
推荐指数
1
解决办法
266
查看次数

在R中如何控制BLAS并行矩阵乘积中的多线程

我有一个关于在R中使用BLAS并行矩阵产品的问题(至少从R-3.4开始,可能是更早的默认矩阵产品).

现在,矩阵产品(参见下面的示例)的默认行为(至少在我的机器上)使用机器上可用的所有核心,这可能是个问题.

你知道如何控制R中标准矩阵产品的核心数量吗?

提前致谢

例:

n=10000
p=1000
q=5000
A = matrix(runif(n*p),nrow=n, ncol=p)
B = matrix(runif(p*q),nrow=p, ncol=q)
C = A %*% B # multi-threaded matrix product
Run Code Online (Sandbox Code Playgroud)

会话信息:

> sessionInfo()
R version 3.4.1 (2017-06-30)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.3 LTS

Matrix products: default
BLAS: /usr/lib/openblas-base/libblas.so.3
LAPACK: /usr/lib/libopenblasp-r0.2.18.so

locale:
 [1] LC_CTYPE=fr_FR.utf8       LC_NUMERIC=C             
 [3] LC_TIME=fr_FR.utf8        LC_COLLATE=fr_FR.utf8    
 [5] LC_MONETARY=fr_FR.utf8    LC_MESSAGES=fr_FR.utf8   
 [7] LC_PAPER=fr_FR.utf8       LC_NAME=C                
 [9] LC_ADDRESS=C              LC_TELEPHONE=C           
[11] LC_MEASUREMENT=fr_FR.utf8 LC_IDENTIFICATION=C      

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a …
Run Code Online (Sandbox Code Playgroud)

multithreading r matrix blas

1
推荐指数
1
解决办法
919
查看次数