gpt4 book ai didi

c++ - 如何获得适合 gpu 内存的最大数组大小?

转载 作者:行者123 更新时间:2023-11-28 07:08:25 25 4
gpt4 key购买 nike

我在 cuda 5.5 中使用推力来进行整数 vector 排序。排序 100*1024*1024 int 应该分配 400MB 内存,但是 nvidia-smi 总是显示“Memory-Usage 105MB/1023MB”。(我的测试 GPU 是 GTX260M)

排序 150*1024*1024 给出分配错误:

terminate called after throwing an instance of 'thrust::system::detail::bad_alloc'
what(): std::bad_alloc: out of memory
Aborted (core dumped)

在数组分配之前,我正在使用它返回的 cudaMemGetInfo 检查内存:

GPU memory usage: used = 105.273682, free = 918.038818 MB, total = 1023.312500 MB

我可以在开始 gpu 分析之前检查我的整数数组可用的最大内存吗?

编辑:

好的,在排序之前我的内存使用是关于这个的。GPU 内存使用:已用 = 545.273682,可用 = 478.038818 MB,总计 = 1023.312500 MB

在我看来,排序算法需要一些额外的内存。

最佳答案

推力排序操作require significant extra temporary storage .

nvidia-smi 在不同时间对内存使用情况进行有效采样,采样点使用的内存量可能无法反射(reflect)您的应用程序使用(或要求)的最大内存。正如你所发现的 cudaMemGetInfo可能更有用。

我通常发现 thrust 能够对数组进行排序,最多占 GPU 内存的 40%。但是没有具体的数字,您可能需要通过反复试验来确定。

不要忘记 CUDA 使用一些开销内存,如果您的 GPU 正在托管显示器,那也会消耗额外的内存。

关于c++ - 如何获得适合 gpu 内存的最大数组大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21415769/

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