【发布时间】:2013-01-28 16:35:11
【问题描述】:
我很想知道在计算矩阵乘法 (C = A * B) 时,cublasSgemm/clAmdBlasSgemm 例程是如何映射到 GPU 上的。
假设输入矩阵的维度 ::A_rows = 6144; A_cols = 12288; B_rows = 12288; B_cols = 15360;
结果矩阵的维度 :: C_rows = 6144; C_cols = 15360;
假设我已经在主机上初始化了输入矩阵,并且我将矩阵数据复制到了设备内存中。之后,我将调用 cuBlas 或 clAmdBlas 例程在 GPU 上进行矩阵乘法。
void cublasSgemm (char transa, char transb, int m, int n, int k, float alpha, const float *A, int lda, const float *B, int ldb, float beta, float *C, int ldc);
其中 m = A_rows;和 n = B_cols;
所以我的疑问是:
1.) 这些例程是如何在 GPU 上实现的?
2.) m 和 n 值是否映射在一个计算单元 (SM) 上?如果否,那么 m 和 n 的最大值是多少?
3.) 我们是否可以控制线程/块?
【问题讨论】:
-
您是否真的想了解 CUBLAS 或您所询问的任何 OpenCL 库?你认为有一个适用于两者的共同答案吗?
-
@talonmies 是的,我想知道这些例程是如何定义的?
-
这是两个完全不同的问题。选择其中之一。
-
@talonmies 我只想知道在调用这些例程时如何控制线程/块?
标签: cuda opencl gpgpu blas cublas