我很想知道在计算矩阵乘法(C = A * B)时如何在GPU上映射cublasSgemm
/ clAmdBlasSgemm
例程。
假设输入矩阵:: 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.)我们是否控制了线程/块?
答案 0 :(得分:1)
对于主机端CUBLAS API(请注意,我不知道为什么你会认为clAmdBlasSgemm是相同的),对你的问题的简短回答如下:
请注意,K20 Kepler设备还有一个CUBLAS设备API,我上面提供的答案不适用于该库。
答案 1 :(得分:0)
在继续之前,你必须阅读Volkov和Demmel的文章,看看这里:http://www.cs.berkeley.edu/~volkov/看他关于SGEMM的文章。答案是自2008年以来的。