主要内容

设计模式

GPU Coder™支持一些有效映射到GPU结构的设计模式。

模板处理

模板内核操作将输出数组的每个元素作为输入数组的一个小区域的函数进行计算。您可以将许多筛选操作表示为一个模板操作。例子包括卷积、中值滤波和有限元方法。

在模具内核的GPU Coder实现中,每个线程计算输出数组中的一个元素。由于一个给定的输入元素被重复访问以计算多个相邻的输出元素,GPU Coder使用共享内存来提高内存带宽和数据局部性。

使用stencilfun函数并创建CUDA®模板函数的代码。有关演示模板预处理的示例,请参见基于GPU的模板处理

请注意

从R2022b开始,为模板类操作生成CUDA内核,使用stencilfun函数。gpucoder.stencilKernel不推荐。

对于非常大的输入尺寸,stencilfun函数可能产生CUDA代码,在数值上与MATLAB不匹配®模拟。在这种情况下,考虑减少输入的大小以产生准确的结果。

矩阵与矩阵的处理

许多科学应用包含矩阵-矩阵运算,包括一般矩阵到矩阵乘法(GEMM)的形式C = ab在哪里可以选择转置一个而且B.这种矩阵-矩阵运算的代码通常采用如下模式:

x = 1:My = 1:N1:K C(x,y) = F(A(x,z),B(z,y));结束结束结束

在哪里F ()是用户定义的函数。在这些操作中,使用一个输入矩阵的一行和第二个输入矩阵的一列来计算输出矩阵的对应元素。每个线程都重新加载行和列。这种设计模式允许通过重用数据和让每个线程计算多个输出元素来优化该结构。

例如,F ()可以是一个规则矩阵的乘法,F () = @mtimes.对于这种模式,GPU Coder提供MatrixMatrix内核在GPU上创建一个高效、快速的矩阵-矩阵运算实现。

使用gpucoder.matrixMatrixKernel函数并创建CUDA代码来执行矩阵-矩阵类型的操作。

另请参阅

||||

相关的例子

更多关于

Baidu
map