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的每美元浮点运算数,从而判断哪个GPU性价比最高。如果应用程序的周转时间是最重要的标准,也可以据此选择最合适的GPU。
超级会员免费看
订阅专栏 解锁全文
4

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



