怎么用gpu跑r语言代码

Python017

怎么用gpu跑r语言代码,第1张

用BLAS库进行。

现在做的DNN、CNN都是在底层把计算转换为矩阵乘法。加速矩阵乘法就是用的BLAS库。很多情况下,application叫做R standard interface,就是单线程实现的矩阵乘的库,可以很容易地把这个库替换下面的部分,既可以替换成GPU加速的cuBLAS库,也可以是多核或多线程的intel的MKL库和OpenBLAS。通过这种方式,可以很快地提高矩阵运算速度。

Linux下有个NVBLAS库,它其实是cuBLAS的wrapper,从它里面就可以调整各种精度的矩阵乘。

它不仅支持单GPU,还支持多GPU。它的主要好处是对code不需要做任何改变,也就是zero programming effort,只需要把NVBLAS库load在前面,这个库就被替换成cuBLAS,跑到GPU上。

所以在做应用程序开发,大家通常有一种思路,如果想加速一个计算,就尝试把这个计算转换成矩阵计算,并加载各种多线程库或并行库,那么程序可以得到很快地提高,这其中不需要太多code的重写。然后看下benchmark,有两种benchmark。

蓝色的线是用原来的的R跑的程序,可以看到运行时间多很多,加载了NVBLAS库以后,运行时间少了很多。其他是一些在很多程序里运用的基础算法。当程序比较依赖于这种基础算法,就可以考虑加载很多并行库,来看程序的运行效果。

需要将 MKL_LIB_PATH="intel_2020.3.279/lib/intel64:intel_2020.3.279/mkl/lib/intel64" 加入到LD_LIBRARY_PATH中。

example 目录 intel_2020.3.279/mkl/examples/cblas/source/cblas_sgemmx.c 这是mkl自带的example,还有cblas_gemm_s8u8s32x.c代表signed int8,unsigned int8,signed int32,对应传入的A、B、C矩阵数据类型,表示INT8量化加速接口。

编译命令:

make libintel64 function=cblas_gemm_s8u8s32 compiler=gnu

make libintel64 function=cblas_sgemm compiler=gnu

可以指定编译器为gnu还是intel的,也可以指定是并行多线程parallel还是单线程

先从git clone,然后需要指定make install的安装目录:

编译程序时使用命令 g++ -g -o sgemm -std=c++11 -I${DNNLROOT}/include -L${DNNLROOT}/lib64 cpu_sgemm_and_matmul.cpp -ldnnl

其中 $DNNLROOT 是make install的目录,否则会报 dnnl_config.h.in 以及 libdnnl.so 找不到的错误。

其中 oneDNN/examples/tutorials/matmul/cpu_sgemm_and_matmul.cpp 是测试矩阵乘接口的文件,但是要放到examples目录下,因为需要引入example_utils.hpp头文件。

在onednn中,gemm有三种实现方案,gemm,static gemm和dynamic gemm。这些在mkl是没有的。

旧版mkl-dnn的gemm使用的是mkl的gemm,mkl对于小矩阵的计算,速度并不快。旧版mkl-dnn主要是做cnn和lstm的优化

onednn中,有两个选择,1继续使用mkl的gemm,2使用新的gemm。

默认安装到/opt/OpenBLAS/lib,否则需要将其加到LD_LIBRARY_PATH。

编译命令: g++ -g -o sgemm compare_sgemm_shgemm.c -I/opt/OpenBLAS/include -L/opt/OpenBLAS/lib/ -lopenblas

centos7.6 cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

ubuntu18.04 grep "model name" /proc/cpuinfo |awk -F ':' '{print $NF}'

IDC服务器:Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz

MIT服务器:Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz

系统提示丢失dll文件解决办法:

1、下载缺少的dll文件,复制到c:\windows\system32文件夹下;

2、按win+r,输入regsvr32 /s该文件文件名XX.DLL,点击确定;

3、弹出提示信息框,提示注册成功,点击确定即可。

4、用腾讯电脑管家电脑诊所--搜 缺失dll文件--立即修理