嗨,彼得,
gpucoder.stridedMatrixMultiplyworks exactly as you want. You can directly pass A and B to gpucoder.stridedMatrixMultiply and it will compute them in the way you want.
一个小例子,假设您有一个名为stridedMultiply的函数:
函数c = stridedMultiply (a, b)
c = gpucoder。stridedMatrixMultiply (a, b);
结束
然后我们可以生成代码,验证答案是正确的,下面的代码:
% 3 d向量输入
一个=兰德(4100);
b =兰德(5100);
%生成代码
codegen配置coder.gpuConfig(墨西哥人)参数{a、b} stridedMultiply
%验证正确性
c_mex = stridedMultiply_mex (a, b);
c = 0(大小(c_mex));
为i = 1:10 0
c (:,:, i) = a(:,:我)*(:,:我);
结束
%核对MATLAB的答案与stridedMatrixMultiply生成的代码
公差= 1 e-8;
断言(所有(abs (c (:)——c_mex(:)) <公差);
如果我们看一下生成的代码,我们将看到,批量大小已经正确地设置为100:
cublasDgemmStridedBatched (getCublasGlobalHandle ()、CUBLAS_OP_N CUBLAS_OP_N, 5,
5、4(双*)gpu_alpha1(双*)& (* gpu_a)[0] 5, 20日(双*)
& (* gpu_b)[0], 4, 20日(双*)gpu_beta1(双*)& (* gpu_c)[0] 5, 25岁,100);
关于的例子
文档页面
你引用,因为输入矩阵都是2 d的示例中,只有1批处理计算,因此,参数设置为1。不过我理解你的困惑,因为gpucoder。stridedMatrixMultiply主要是为了使用3 d输入。gpucoder澄清。沿着第一个二维唯一stridedMatrixMultiply繁殖。然而,我理解这个例子可以令人困惑,我们会更新这个例子。
我希望回答了你的问题!