【发布时间】:2011-11-30 00:21:36
【问题描述】:
我正在寻找一个非常简单的 CUBLAS 矩阵乘法示例,它可以使用高性能 GPU 操作将 M 乘以 N 并将结果放在 P 中以用于以下代码:
float M[500][500], N[500][500], P[500][500];
for(int i = 0; i < Width; i++){
for(int j = 0; j < Width; j++)
{
M[i][j] = 500;
N[i][j] = 500;
P[i][j] = 0;
}
}
到目前为止,我发现使用 CUBLAS 进行任何类型的矩阵乘法的大多数代码(似乎?)都过于复杂。
我正在尝试设计一个基础实验室,学生可以在其中比较 GPU 上的矩阵乘法与 CPU 上的矩阵乘法的性能,大概是在 GPU 上提高了性能。
【问题讨论】:
-
您是否认为 CUDA SDK 中的 simpleCublas 示例“过于复杂”?
-
是的。我的意思是,如果这很简单,我想我们只需要处理它。我只是希望有某种代码具有明显的 CPU 等效性,这样我们就可以对两者进行计时并比较结果。
-
我是 500 级数据结构类的 GTA。因此,我们已经为它们提供了如此丰富的细节,用于编程各种树、堆和其他数据结构以及相关的 C++ 和实验约定,以至于让他们了解到 CUBLAS 的许多语法细节确实超出了相关信息的范围类。
-
CUBLAS 线性代数调用本身只遵循与standard BLAS 相同的语法/API,这绝对是事实上的线性代数 API 和库,自 1980 年代编写以来一直存在。使用 GPU 意味着使用具有非均匀内存空间的系统,因此会产生一些额外的 API 开销。因此,如果您认为其中任何一个都超出了您要教授的内容的上限,那么我认为您不走运。
-
好的。感谢您提供背景信息。我会继续环顾四周。我可能需要就 SO 提出更一般的问题。我所需要的只是一些尽可能简单的示例,我可以使用 CUDA 展示 GPU 在任何类型的算法任务上都优于 CPU。
标签: cuda gpu matrix-multiplication cublas