“matlab”目录存档

Matlab下的CUDA编程(四)

2010年04月7日,星期三

第三节中我们介绍了NVIDIA的工程师写的编译脚本,但是这个脚本配置起来麻烦,用的时候选项也过于复杂。后来随着GPGPU的发展,CUDA逐渐被重视,因此MathWorks的工程师们重新写了这个nvmex脚本。毕竟是科班出身,新的脚本配置容易,使用简单。详细情况可访问其网站。在上述网站中,可找到下载nvmex源码的链接。下载后解压,得到nvmex.m。对其中的两个选项(红色部分按实际路径修改)稍加编辑,即可使用:

CUDA_LIB_Location = ‘C:\CUDA\lib’;
Host_Compiler_Location = ‘-ccbin "C:\Program Files\Microsoft Visual Studio 8\VC\bin"‘;

修改之后,将其复制到addMatrix.cu相同目录,并将此目录设置为matlab运行目录,在命令窗口输入:

>> nvmex(‘addMatrix.cu’);

即可完成编译。编译成功后,在matlab中即可像常规函数一样使用addMatrix函数。

Matlab下的CUDA编程(三)

2010年04月7日,星期三

根据第二节的介绍,matlab中可以通过mex文件的方式编译C/C++代码,但是对于.cu文件则无能为力。为了解决这个问题,NV的工程师们开发了用于编译cu文件的脚本,下面进行详细介绍。 测试环境:vs2005, matlab 7.6(r2008a), cuda 2.3 首先在NV的网站http://developer.nvidia.com/object/matlab_cuda.html下载matlab的插件包,并解压,共有4个重要文件:

nvmex.m
nvmex_helper.m
nvmexopts.bat
.\bin\nvmex.pl

首先将nvmex.pl拷贝到matlab的安装目录中的bin目录下,例如笔者的系统中就拷贝到C:\MATLAB\bin中。 下面编写cu文件,我们仍以两个矩阵相加为例,具体流程见代码注释。从代码中可看到,同时使用了matlab函数和cuda函数,并在GPU中完成了两个矩阵相加。完成addMatrix.cu的编写后,需要对其进行编译。 首先将nvmex.m,nvmex_helper.m,nvmexopts.bat拷贝到addMatrix.cu文件所在目录,并设置为matlab的当前目录。

  1. 在matlab命令窗口中运行: nvmex -setup,选择编译器,此处选择vs2005。
  2. 编辑nvmexopts.bat,修改其中的VSINSTALLDIR选项,指定为vs2005的安装目录,如笔者的系统中: C:\Program Files\Microsoft Visual Studio 8
  3. 编译命令: nvmex -f nvmexopts.bat addMatrix.cu -IC:\cuda\include -LC:\cuda\lib –lcudart

编译成功后,在matlab中即可像常规函数一样使用addMatrix函数。 可能会遇到的问题:

  1. 目录设置:需要仔细按照上述步骤设置好相关目录
  2. 编译时出现未定义的变量及结构,如_wchar等,则可更新nvmex.pl和nvmexopts.bat来解决。下载链接

(全文 …)