图片缩略图

CUDA和MATLAB的例子(适用于Windows)

version 1.0.0.0 (1.01 KB) by 保罗
这个简单的示例创建了一个MEX文件,该文件调用CUDA来添加两个长度为5的向量

3.7 k下载

更新2008年12月13日

没有许可

这是一个“Hello World”风格的示例,展示了一种直接使用MATLAB中的CUDA (Nvidia的gpu上的超级计算工具包)的简单方法。网上关于如何做这类事情的信息很少(除了专有的和/或复杂的例子),所以这个例子是以简单为目标编写的。

要运行:首先使用'my_compile test.cpp'编译它,然后在两个长度为5的向量上运行新的MEX文件,如'test([1 2 3 4 5],[10 20 30 40 50])'

要求:
1)这个例子是为Nvidia GTX 260或280编写的,这是唯一支持双精度运算的gpu。金宝app这在my_compile中反映如下:m, nvcc与'-arch compute_13'开关一起运行,它为GTX 260和更高版本生成代码。如果您想在较旧的硬件上运行此示例,请删除此开关,并在测试中将所有双字符替换为单字符。重新编写test.cpp,将单列数组传递给gpuAdd,而不是双列数组。

这个例子是为Visual Studio 2008(9.0)编写的。如果你有Visual Studio 2005(8.0),你应该能够通过将my_compile的主体中的第6个字符从'9'改为'8'来运行这个例子。

这个例子是在Windows XP64中编写的。它可能在其他版本的Windows中工作,但更改了my_compile。M可能需要从环境变量获得正确的路径。

这个例子是在CUDA 2.1 (beta版)上写的

文件:
1) test.cpp是一个非常标准的MEX文件,它期望被链接到一个函数gpuAdd,该函数取三个指针到长度为5的双数组,并将前两个数组的和存储在第三个数组中。(由'extern "C" gpuAdd…'表示)。

2)测试。cu是一个非常简单的CUDA文件。gpuADD在gpu的内存中创建三个长度为5的数组,从cpu的内存中使用double填充前两个数组,生成5个线程来计算每个5个和,将结果复制回cpu的内存,并进行清理。

3) my_compile。M有些愚蠢,主要是因为NVCC有些草率。第一行是运行Visual Studio批处理文件的操作系统命令,该批处理文件设置指定include和库目录的临时环境变量;'&'字符将此命令与NVCC编译命令分隔开(必须在与批处理文件相同的命令中运行,否则临时变量将消失)。'-c'开关指示编译,而不是链接test.cu。下一行试图获取到CUDA库的路径。如果有引号,它会去掉引号(边注:在XP64上,CUDA在定义环境变量时忽略了引号,但除非添加引号,否则不会编译;我们在MATLAB中再次将它们剥离。)最后一行使用mex编译mex文件并根据test链接它。Obj,因为产生在第一行由nvcc。

夸克:是的,当在正确配置的64位系统上运行时,它将生成有效的64位代码。我们运行的32位批处理文件只是nvcc出于自己的原因坚持使用的东西。

注意:在gpu上运行的代码没有40多年为cpu编写代码的经验给我们提供的保护。如果你的系统在使用gpu代码时崩溃了,不要感到惊讶。

引用作为

保罗(2021)。CUDA和MATLAB的例子(适用于Windows)(//www.tatmou.com/matlabcentral/fileexchange/22436-example-of-cuda-and-matlab-and-nothing-else-for-windows), MATLAB中央文件交换。检索

MATLAB版本兼容性
创建R2008b
与任何版本兼容
平台的兼容性
窗户 macOS Linux
标签添加标签

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!