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编程与优化核心技术解析
超级会员免费看
订阅专栏 解锁全文
1311

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



