相关疑难解决方法(0)

如果没有root访问权限,则在与参考BLAS链接时使用调优的BLAS运行R.

任何人都可以告诉我为什么我不能通过以下方式成功测试R中OpenBLAS的dgemm性能(在GFLOP 中)?

  1. 链接R与"参考BLAS" libblas.so
  2. mmperf.c使用OpenBLAS库编译我的C程序libopenblas.so
  3. 将生成的共享库加载mmperf.so到R中,调用R包装函数mmperfdgemm在GFLOP中报告性能.

第1点看起来很奇怪,但我别无选择,因为我在我想测试的机器上没有root访问权限,所以实际链接到OpenBLAS是不可能的.通过"未成功"我的意思是我的程序最终报告dgemm以供参考BLAS,而不是OpenBLAS性能.我希望有人可以向我解释一下:

  1. 为什么我的方式不起作用;
  2. 它是否有可能使它工作(这很重要,因为如果不可能,我必须编写一个C main函数并在C程序中完成我的工作.)

我已经调查了这个问题两天,在这里我将包括各种系统输出,以帮助您进行诊断.为了使事情可以重现,我还将包括代码,makefile以及shell命令.

第1部分:测试前的系统环境

调用R有两种方法,使用RRscript.调用它们时加载的内容有一些差异:

~/Desktop/dgemm$ readelf -d $(R RHOME)/bin/exec/R | grep "NEEDED"
0x00000001 (NEEDED)         Shared library: [libR.so]
0x00000001 (NEEDED)         Shared library: [libpthread.so.0]
0x00000001 (NEEDED)         Shared library: [libc.so.6]

~/Desktop/dgemm$ readelf -d $(R RHOME)/bin/Rscript | grep "NEEDED"
0x00000001 (NEEDED)         Shared library: [libc.so.6]
Run Code Online (Sandbox Code Playgroud)

这里我们需要选择Rscript,因为R加载libR.so会自动加载参考BLAS libblas.so.3:

~/Desktop/dgemm$ …
Run Code Online (Sandbox Code Playgroud)

linux r shared-libraries ld blas

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

标签 统计

blas ×1

ld ×1

linux ×1

r ×1

shared-libraries ×1