gpt4 book ai didi

c++ - cuda内存带宽计算

转载 作者:行者123 更新时间:2023-11-30 03:24:53 25 4
gpt4 key购买 nike

我有几个与 cuda 编程和 GPU 架构相关的问题要问:

1.假设GPU的显存带宽为144Gb/s,PCIe总线带宽为2.25Gb/s,将一个100,000,000个double的数组传输到GPU需要多少毫秒?

2.假设GPU全局内存的大小是3Gb,你能处理的最大数组大小是多少?如果您必须处理更长的数组,您如何更改程序来完成此操作?

我不知道怎么计算这个,谁能帮帮我,谢谢

最佳答案

  1. PCIE 总线将成为这里的限制因素。只需将总数据传输大小(以字节为单位)除以速度(以字节/秒为单位)即可得到持续时间(以秒为单位)。 2.25 Gb/s 看起来不像我所知道的 PCIE 的典型传输速度,但您的系统可能就是这种情况。现代系统通常可以达到 ~6GB/s(对于 PCIE Gen2 x16 链接)或~11GB/s(对于 PCIE Gen3 x16 链接)的速度。您可以使用 bandwidthTest CUDA 示例代码测量您的传输速度(可能)。请注意,要在您的应用程序中获得峰值传输吞吐量,通常需要传输到/从 a pinned allocation (<-- 提示,点击并阅读)。

  2. 如果一个 GPU 总共有 3GB 内存,其中一些内存将被 CUDA 和其他系统开销用完。可以使用 nvidia-smi 实用程序或 cudaMemGetInfo() runtime API call估计剩余的“免费”数量。 .可用内存大约是可能的总数据存储的“上限”。您实际可以分配的金额将比这少一些。如果您确定或估计可以分配的数量,则将此数量(以字节为单位)除以您要存储的数据元素的大小。例如,double 数量占用 8 个字节的存储空间。 C 库 sizeof() 函数可用于发现这一点。将可用内存大小除以元素大小后,您将得到可以存储在该内存量中的元素总数。实际可行的数量会比估算的少一些。

关于c++ - cuda内存带宽计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49378903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com