主要内容

记忆瓶颈分析

数据对齐方式

状况

MATLAB是列主要,但可以实现算法以用于优化的行主要实现。在生成的代码中,如果您最快的更改维度不是最内部的循环,则内存不会合并。通常,转换输入矩阵可以简单地解决此问题。

行动

尝试转换数据。

小数据尺寸

状况

如果您的问题/数据大小太小,则将数据的开销开销到GPU(即使它只是在I / O边界处)可以抵消GPU上运行的任何性能增益。

行动

尝试具有较大数据大小的算法。

太多的cudamemcpys.

状况

如果你只使用coder.gpu.kernel.然后,循环外的所有内容都进入CPU。为试图保持GPU上的大部分代码,建议使用两个Pragmas。此外,存在不支持的函数或无法在GPU上运金宝app行的任何功能/语句,导致更多cudamemcpys.要生成。

行动

利用coder.gpu.kernelfun.此外coder.gpu.kernel.

恒定投入

推荐

如果您的入学点函数的某些输入常量,请使用该输入Coder.Const.Const.目的。用于Coder.Const.Const.对象表示在代码生成期间这些变量是恒定的。没有此功能,GPU编码器™认为这些输入是变量,因此将这些变量大小的所有矩阵视为可变维矩阵。GPU编码器不会在可变维矩阵中创建良好的内核,因为目前没有支持内核或动态的动态尺寸金宝appCudamemcpy.函数调用。

堆栈内存用法

推荐

在内核中使用大堆栈内存可以降低生成的代码的性能。在此类条件下,考虑以不同的方式重写算法或将其破坏到较小的计算中以减少堆栈内存使用并提高性能。

相关话题