GPU Coder™支金宝app持一些设计模式,可以有效地映射到GPU结构。
模板内核操作计算输出数组的每个元素作为输入数组一个小区域的函数。您可以将许多过滤操作表示为模板操作。例子包括卷积、中值滤波和有限元方法。
在模板内核的GPU编码器实现中,每个线程计算输出数组的一个元素。由于给定的输入元素被重复访问以计算多个相邻的输出元素,GPU Coder使用共享内存来提高内存带宽和数据局部性。
使用gpucoder.stencilKernel
函数和创建CUDA®模板函数的代码。有关演示模板预处理的示例,请参见图形处理器上的模板处理.
对于非常大的输入大小,则gpucoder.stencilKernel
函数可能产生CUDA代码,数字不匹配的MATLAB®模拟。在这种情况下,考虑减少输入的大小以产生准确的结果。
许多科学应用中包含矩阵-矩阵运算,包括一般矩阵到矩阵乘法(GEMM)的形式C = AB
可以任意转置的地方一个
和B
.这种矩阵-矩阵运算的代码通常采用如下模式:
为x = 1: M为y = 1: N为C(x,y) = F(A(x,z),B(z,y));结束结束结束
在哪里F ()
是一个用户定义函数。在这些操作中,来自一个输入矩阵的一行和来自第二个输入矩阵的一列用于计算输出矩阵的相应元素。每个线程都重新加载行和列。这种设计模式允许通过重用数据和让每个线程计算多个输出元素来优化这个结构。
例如,F ()
可以是一个正则矩阵乘法,F () = @mtimes
.对于这样的模式,GPU编码器提供MatrixMatrix
内核创建一个高效,快速实现的矩阵矩阵运算在GPU上。
使用gpucoder.matrixMatrixKernel
函数并创建CUDA代码来执行矩阵-矩阵类型的操作。
coder.gpu.kernel
|coder.gpu.kernelfun
|gpucoder.matrixMatrixKernel
|coder.gpu.constantMemory
|gpucoder.stencilKernel