V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
bigtan
V2EX  ›  分享创造

替换 Rblas 为 R 提速

  •  
  •   bigtan ·
    bigtan · 2014-11-02 20:51:54 +08:00 · 3866 次点击
    这是一个创建于 3678 天前的主题,其中的信息可能已经有所发展或是发生改变。
    不知道论坛里面玩R的有多少,R的矩阵运算速度广受诟病,究其原因是其blas库不给力,openblas是对其一个很好的补充。

    R需要blas库,没那么需要lapack,所以我在windows下面编译了单纯的blas动态链接库,mingw编译。

    和cygwin不同,mingw编译的库是不需要依赖于cygwin的,单文件替换即可走天下。

    编译时使用的是dynamic arch,强制使用多线程,支持的最高线程数是16,需要的同学自取。

    http://dl.changbizi.net/openblas/

    ps:这几天windows下面编译程序上瘾,电脑快玩坏了。
    第 1 条附言  ·  2015-10-16 12:43:20 +08:00
    8 条回复    2015-10-20 20:37:41 +08:00
    JamesRuan
        1
    JamesRuan  
       2014-11-02 23:13:35 +08:00
    只在Linux上用R,而且用的不多
    bigtan
        2
    bigtan  
    OP
       2014-11-02 23:42:58 +08:00
    @JamesRuan 我以前自己都是针对自己的cpu编译的,同学让我帮他也弄一个,我就搞了一个通用一点的
    wyf88
        3
    wyf88  
       2014-11-28 23:22:09 +08:00
    感谢!用这个脚本 http://r.research.att.com/benchmarks/R-benchmark-25.R 在我的台式机上测试,使用默认blas库,总共30秒左右,替换楼主编译的openblas,时间缩短到了8秒,效果非常显著!!
    wyf88
        4
    wyf88  
       2014-11-29 00:24:14 +08:00
    悲剧,不知为何,这个 openblas 和我的程序不太兼容。我的程序用了 RcppArmadillo,用了楼主的openblas 就会报错:

    Error in inDL(x, as.logical(local), as.logical(now), ...) :
    unable to load shared object 'C:/Users/TYPE_O~1/AppData/Local/Temp/Rtmpaqp5JU/sourcecpp_344429851447/sourceCpp_94226.dll':
    LoadLibrary failure: 找不到指定的模块。

    换回 R 自带的 blas 则没问题。但是别人似乎有在 Windows 下替换 openblas 使用 RcppArmadillo 的成功例子,不知是我哪里没弄对呢…
    wyf88
        5
    wyf88  
       2015-06-04 15:36:22 +08:00
    问题解决了,把 libopenblas.dll 复制到 R\bin\x64 里,再复制一份替代目录里原有的 Rblas.dll 就好了。我之前只是替换了 Rblas.dll,后来在错误提示里发现缺少 libopenblas.dll,所以又原样复制了一份在这个目录里就好了。这个目录在 PATH 里。
    P.S. 我试了下我的程序,用楼主编译的库,发现运行时间比 openblas 网上提供的库的运行时间还要多几秒…下载在这里 http://sourceforge.net/projects/openblas/files/
    wyf88
        6
    wyf88  
       2015-06-04 15:45:07 +08:00
    啰嗦一句,官网上的 openblas 库,需要分别下载 OpenBLAS-v0.2.X-Win64-int32.zip 和 mingw64_dll.zip,后者中那三个 dll 文件也要放到 R\bin\x64 里。
    bigtan
        7
    bigtan  
    OP
       2015-06-04 18:48:07 +08:00   ❤️ 1
    @wyf88 我是静态编译的,不需要那几个动态链接库
    baidao
        8
    baidao  
       2015-10-20 20:37:41 +08:00
    能否分享一下编译经验?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1138 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 18:48 · PVG 02:48 · LAX 10:48 · JFK 13:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.