内存瓶颈分析
数据一致性
条件
MATLAB是列主要的算法可以实现一个行优化实现。最快在生成的代码中,如果你改变尺寸不是最内层循环,然后记忆不是合并。通常,置换矩阵的输入可以解决这个问题。
行动
尝试更换数据。
小的数据大小
条件
如果你的问题/数据大小太小,然后移动数据的开销GPU(即使它只是在I / O边界)可以抵消任何运行在GPU的性能收益。
行动
试算法具有较大的数据大小。
太多cudaMemcpys
条件
如果你只使用coder.gpu.kernel
,然后一切外循环的CPU。尽量保持大部分GPU上的代码,建议使用语法。同时,存在不支持的功能或任何函数声明,不万博1manbetx能运行在GPU,导致更多cudaMemcpys
生成。
行动
常数输入
建议
如果某些输入你的入口点函数是常数,包装使用coder.const
对象。使用coder.const
对象表明这些变量在代码生成是不变的。没有这个功能,GPU编码器™认为这些输入变量,因此对所有由这些变量矩阵大小的变尺度矩阵。GPU编码器不创造良好的内核的变尺度矩阵,因为目前不支持动态分级的内核也可以是动态的万博1manbetxcudaMemcpy
函数调用。
栈内存使用
建议
使用大型栈内存内核可以减少内部生成的代码的性能。在这种情况下考虑重写算法以不同方式或将它分解成较小的计算减少栈内存使用量和提高性能。