图 1. 最优化数据移动流程
在 OpenCL 执行模型中,首先所有数据都从主机主存储器传输到全局器件存储器,然后从全局器件存储器传输到内核用于执行计算。计算结果从内核重新写入全局器件存储器,最后从全局存储器重新写入主机主存储器。确定内核数据移动最优化策略的关键要素之一是了解如何在不同级别的存储器之间有效移动数据,从而最大程度地有效利用所有存储器接口上的带宽。
建议: 执行计算最优化前,先对应用中的数据移动进行最优化。
数据移动最优化过程中,将数据传输代码与计算代码隔离非常重要,因为计算效率低下可能会导致数据移动停滞。在此最优化步骤中,应侧重于修改主机和内核代码中的数据传输逻辑。这个步骤的目标是通过最大程度提升数据传输带宽和器件全局存储器带宽使用率,来最大程度提升系统级别的数据吞吐量。通常运行软件仿真、硬件仿真以及硬件执行需要经过多次迭代才能达成最优性能。