我正在做一个sort_by_key
大小为 8000 万的键值 int 数组。该设备是具有2GB VRAM的GTX 560 Ti 。当 sort_by_key 之前的可用(空闲)内存为时,它将完成排序。但是,当可用内存下降到 时,相同键值数组的 sort_by_key 需要!1200MB
200ms
600MB
1.5-3s
我在Compute Visual Profiler下运行该程序。我发现 GPU 时间戳在之前的最后一个内核sort_by_key
和内部的第一个内核调用sort_by_key
(即 a
RakingReduction
)之间跳跃了 1.5-3 秒。
sort_by_key
我怀疑在调用它的第一个内部内核之前,内部已经完成了内存分配。需要的内存sort_by_key
是可用的(即使可用内存是600MB
),因为
sort_by_key
工作正常,即使速度较慢。我看到发生这种情况时计算机会冻结 1 秒。如果我保持进程资源管理器打开,我还会在 CPU物理内存图中看到一个凸起
。
当可用内存较少时,我能做些什么来使这项sort_by_key
工作同样快吗?此外,导致内存碰撞和暂时冻结的设备和主机之间发生了什么?