主要内容

GPU编程范式

GPU-accelerated计算遵循一个异构编程模型。高度并行的软件应用程序的一部分映射到内核,在物理上独立GPU设备上执行,而剩下的顺序代码仍然在CPU上运行。每个内核分配几个工人或线程,组织块和网格。每个线程在内核中执行并发彼此。

异构编程模型显示的应用程序划分成不同的顺序和并行的部分

GPU编码器™的目标是连续的MATLAB®程序并生成分区,优化的CUDA®代码。这个过程包括:

  • CPU / GPU分区-识别部分的代码在CPU上运行,部分运行在GPU上的。不同方式的GPU编码器确定CUDA内核,明白了内核创建。内存CPU和GPU之间转移成本是一个重要的考虑在内核中创建算法。

  • 内核分区完成后,GPU编码器之间的数据依赖分析CPU和GPU分区。CPU和GPU之间共享的数据(通过使用GPU上分配内存cudaMalloccudaMallocManagedapi)。分析还决定了最低的位置数据必须复制CPU和GPU之间使用cudaMemcpy。如果在CUDA使用统一的内存,然后通过分析也决定了最低位置代码cudaDeviceSync电话必须插入正确的功能行为。

  • 接下来,在每个内核,GPU编码器可以选择将数据映射到共享内存或常量内存。如果使用得当,这些记忆是GPU内存层次结构的一部分,可能会导致更大的内存带宽。信息在GPU编码器选择如何映射到共享内存,明白了模板处理。对GPU编码器选择如何映射到信息不变的记忆,看到的coder.gpu.constantMemory

  • 一旦分区和内存分配和转移语句,GPU编码器生成CUDA代码遵循分区和内存分配决策。生成的源代码可以编译成一个目标被称为墨西哥人在MATLAB或共享库与外部集成项目。信息,请参阅使用命令行接口代码生成

相关的话题