在本章中,我们使用CUDA依次创建了dist_v1与dist_v2的并行化版本—dist_v1_cuda与dist_v2_cuda。
dist_v2_cuda为CUDA应用标准工作流程提供范例。下面是一些简明的内容回顾(CUDA应用包括的大致步骤):
创建主机端输入和输出的数组,为输入数据和结果提供存储空间。
在设备端上为类似的输入和输出数组声明指针并分配内存。
将输入数据从主机端复制到设备端对应的数组上。
启动一个核函数在设备端上进行计算并将结果写入设备端的输出数组。
将结果从设备端的数组复制到主机端对应的数组上。
释放为数组分配的内存。
恭喜你,你已经迈入了大规模并行计算的大门。现在你应该能够开始修改一些样例应用和CUDA样例来创建你自己的CUDA应用了。注意我们用“需知”(Need-to-know)的理念来尽量快速和简明地完成CUDA的入门部分。我们实现了标准的CUDA操作流程(其中包括在主机端和设备端分别存储一份数据以及显式的数据传输的函数调用),也实现了使用统一内存这一简便方法来让开发方法变得尽可能简单。
虽然我们快速实现了最初希望利用CUDA能力的目标,但是值得注意的是我们跳过了一些应该考虑的重要问题(错误处理、CUDA调试、计时以及性能分析等),当你开发较大的CUDA项目时。这些是你需要(至少是想要)知道的。这些主题将在附录D中讨论,读者现在已经掌握了阅读它们的背景知识。在这里,我们推荐读者去进行下面章节的学习,并在需要掌握关于错误处理、调试、计时或者性能分析的相关细节知识时,再去参阅附录D中一些实践技巧的内容。
相关资源:cuda9.1-tensorflow1.6-python3.5