为什么我的C程序突然使用了30g的虚拟内存?

jmilloy:

最重要的是,我注意到我的c程序(使用CUDA 3.2)从一开始就每次运行都具有28g或更大的虚拟大小(从VIRT看)。这对我没有任何意义。常驻内存很有意义,在我最大的数据集上只有2g左右。我知道过去的某个时候虚拟大小不是很大,但是我不确定何时发生更改。

为什么我的进程将使用28g的虚拟内存(或者为什么top的VIRT会这么大)?我了解VIRT包含可执行二进制文件(仅437K),共享库和“数据区域”。什么是“数据区”?如何找出共享库需要多少内存?我的流程总内存中的其他元素呢?

/ proc / <pid> / smaps的内容(1022行)在这里:http ://pastebin.com/fTJJneXr

来自smap的条目之一显示其中一个占了它的大部分,但没有标签...我如何找出这个具有28gb的“空白”条目是什么?

200000000-900000000 ---p 00000000 00:00 0 
Size:           29360128 kB
Rss:                   0 kB
Pss:                   0 kB
Shared_Clean:          0 kB
Shared_Dirty:          0 kB
Private_Clean:         0 kB
Private_Dirty:         0 kB
Referenced:            0 kB
Anonymous:             0 kB
Swap:                  0 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
Locked:                0 kB

-

ubuntu 11.04 64位
16 GB RAM

njuffa:

UVA要求CUDA分配足够的虚拟内存以映射所有GPU和系统内存。在NVIDIA论坛的以下主题中查看帖子#5

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么这么多应用程序在不使用任何虚拟内存的情况下分配了难以置信的大量虚拟内存?

什么是虚拟内存?

什么是虚拟内存?

尽管在程序中的某个位置使用了free(),但是为什么我的程序仍在C中泄漏内存?

为什么同一程序的虚拟内存区域在每次运行时都不同?

为什么我只能在 4 GB 的虚拟内存空间上分配 2 GB?

为什么Windows总是使用与已安装RAM一样多的虚拟内存?

为什么 top 报告虚拟内存和交换空间使用情况不同?

为什么使用gdb在Linux虚拟内存中重复某些库和其他部分?

每次在C#中运行程序时如何使用相同的虚拟内存块

为什么我看到7个用户,虚拟内存使用异常,大量流连接以及所有进程处于休眠状态?

我还需要使用虚拟内存吗?

使用分页实现虚拟内存是什么意思?

为什么使用e mmap函数通过stdin创建虚拟内存的需求零区域?

使用内部存储创建虚拟内存

使用批处理更改虚拟内存

iOS中的进程使用的虚拟内存?

为什么 Google Chrome 会保留 TB 级虚拟内存?

为什么CGO_ENABLE对虚拟内存有这种影响?

为什么虚拟内存中分配的块在一次运行之间差异很大?

虚拟内存和MMU:什么时候使用,什么时候不使用?

虚拟内存混乱

如果我们不使用虚拟内存会发生页面错误吗?

在Linux进程的虚拟内存空间中使用内核部分有什么用?

为什么这个C程序不能让我访问内存?

为什么我的程序使用那么多的内存运行?

为什么使用Parallel :: Loops的程序会耗尽我的内存?

为什么我的浏览器使用了如此多的内存?

为什么我的自定义堆栈类使用了如此多的内存?