我想将 Octave 转换为使用 CuBLAS 进行矩阵乘法。该视频似乎表明这就像输入 28 个字符一样简单:
使用 CUDA 库加速应用程序 http://youtu.be/P2Ew4Ljyi6Y?t=1m59s
实际上,情况比这更复杂一些。有谁知道必须做哪些额外的工作才能使该视频中所做的修改编译?
UPDATE
这是我正在尝试的方法
在 dMatrix.cc 中添加
#include <cublas.h>
在 dMatrix.cc 中更改所有出现的情况(保留大小写)
dgemm
to
cublas_dgemm
在我的构建终端集中
export CC=nvcc
export CFLAGS="-lcublas -lcudart"
export CPPFLAGS="-I/usr/local/cuda/include"
export LDFLAGS="-L/usr/local/cuda/lib64"
我收到的错误是:
libtool: link: g++ -I/usr/include/freetype2 -Wall -W -Wshadow -Wold-style-cast
-Wformat -Wpointer-arith -Wwrite-strings -Wcast-align -Wcast-qual -g -O2
-o .libs/octave octave-main.o -L/usr/local/cuda/lib64
../libgui/.libs/liboctgui.so ../libinterp/.libs/liboctinterp.so
../liboctave/.libs/liboctave.so -lutil -lm -lpthread -Wl,-rpath
-Wl,/usr/local/lib/octave/3.7.5
../liboctave/.libs/liboctave.so: undefined reference to `cublas_dgemm_'
EDIT2:中描述的方法这个视频 http://youtu.be/P2Ew4Ljyi6Y?t=1m59s需要使用 fortran“thunking 库”cublas 的绑定 http://docs.nvidia.com/cuda/cublas/index.html#appendix-b-cublas-fortran-bindings。
这些步骤对我有用:
-
下载八度 3.6.3 从here ftp://ftp.gnu.org/gnu/octave/octave-3.6.3.tar.gz:
wget ftp://ftp.gnu.org/gnu/octave/octave-3.6.3.tar.gz
-
从存档中提取所有文件:
tar -xzvf octave-3.6.3.tar.gz
-
切换到刚刚创建的octave目录:
cd octave-3.6.3
-
为你的“thunking cublas 库”创建一个目录
mkdir mycublas
-
更改到该目录
cd mycublas
-
建立“thunking cublas 图书馆”
g++ -c -fPIC -I/usr/local/cuda/include -I/usr/local/cuda/src -DCUBLAS_GFORTRAN -o fortran_thunking.o /usr/local/cuda/src/fortran_thunking.c
ar rvs libmycublas.a fortran_thunking.o
-
切换回主构建目录
cd ..
-
运行八度音程configure
带有附加选项:
./configure --disable-docs LDFLAGS="-L/usr/local/cuda/lib64 -lcublas -lcudart -L/home/user2/octave/octave-3.6.3/mycublas -lmycublas"
请注意,在上面的命令行中,您需要更改第二个目录-L
切换到与您的路径相匹配的mycublas
您在步骤 4 中创建的目录
现在编辑octave-3.6.3/liboctave/dMatrix.cc
根据给出的说明视频 http://youtu.be/P2Ew4Ljyi6Y?t=1m59s。替换每个实例应该足够了dgemm
with cublas_dgemm
和每个实例DGEMM
with CUBLAS_DGEMM
。在我使用的 Octave 3.6.3 版本中,每个都有 3 个这样的实例(小写和大写)。
-
现在您可以构建八度音阶:
make
(确保您位于octave-3.6.3
目录)
至此,对我来说,Octave 构建成功了。我没有追求make install
尽管我认为这会起作用。我只是使用运行八度./run-octave
脚本中的octave-3.6.3
目录。
上述步骤假设正确且标准的 CUDA 5.0 安装。我将尝试回答特定于 CUDA 的问题或问题,但是在您的平台上安装常规 Octave 可能会出现许多问题。我不是八度专家,我无法回应这些。本次测试我使用的是CentOS 6.2。
如前所述,该方法涉及修改octave 的C 源文件。
GTC 2013 GPU 技术大会上的 S3527 会议详细介绍了另一种方法。这次会议实际上是一次实验室实践练习。不幸的是,相关材料并不方便获得。然而,那里的方法没有涉及对 GNU Octave 源代码的任何修改,而是使用LD_PRELOAD
Linux 的能力 http://www.linuxjournal.com/article/7795拦截 BLAS 库调用并重定向(适当的)到 cublas 库。
一种更新、更好的方法(使用 NVBLAS 拦截库)在这篇博客文章 https://devblogs.nvidia.com/parallelforall/drop-in-acceleration-gnu-octave/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)