【发布时间】:2013-07-03 19:34:45
【问题描述】:
我想将 Octave 转换为使用 CuBLAS 进行矩阵乘法。该视频似乎表明这就像输入 28 个字符一样简单:
Using CUDA Library to Accelerate Applications
实际上它比这更复杂一些。有谁知道必须做哪些额外的工作才能编译此视频中所做的修改?
更新
这是我正在尝试的方法
在 dMatrix.cc 中添加
#include <cublas.h>
在 dMatrix.cc 中更改所有出现的(保留大小写)
dgemm
到
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_'
【问题讨论】:
-
其实(对不起)还有更多的东西。演示者正在使用fortran bindings 具体来说,我们需要使用这些绑定的“thunking wrapper”版本。为我的回答中的错误信息道歉,除此之外还有更多。我将尝试使用一组新的说明更新我的答案。您对源文件所做的修改仍然有效,但对构建顺序的修改会有所不同。
-
@RobertCrovella 非常感谢。我真的很期待这个。
-
我对我的答案进行了另一个(希望是最后一个)编辑。我对此进行了测试,它似乎对我有用。