GPU 编程与优化实践指南
1. GPU 架构与概念
在进行幽灵单元交换时,即便使用向量版本,也需注意不能修改仍在发送过程中的缓冲区。虽然在不发送角落数据时,这种情况发生的概率较小,但仍有可能出现。为确保安全,在更改数组之前,需要检查发送是否完成。
对于幽灵交换例程,尝试将显式标签替换为 MPI_ANY_TAG 。使用 MPI_ANY_TAG 作为标签参数是可行的,可能会稍微快一些,但提升幅度可能难以测量。使用显式标签可以额外检查是否接收到了正确的消息。
在幽灵交换示例的同步计时器中移除屏障,运行原始的同步计时器代码和移除屏障后的异步计时器代码。移除计时器中的屏障可以提高性能,使进程能够更独立地异步运行,但可能会增加理解计时测量结果的难度。
另外,有一个关于不同 GPU 在 1 flop/load 应用中的可实现性能表格,如下:
| GPU | 可实现性能(Gflops/sec) | 价格 | 每美元浮点运算次数(Flops/$) |
| ---- | ---- | ---- | ---- |
| V100 | 108.23 | | |
| Vega 20 | 91.38 | | |
| P100 | 74.69 | | |
| GeForce GTX1080Ti | 44.58 | | |
| Quadro K6000 | 31.25 | | |
| Tesla S2050 | 18.50 | | |
可以查找市场上这些 GPU 的当前价格,填充最后两列,以确定哪个 GPU 的性价比最高。如果应用程序
超级会员免费看
订阅专栏 解锁全文

587

被折叠的 条评论
为什么被折叠?



