Кроме того, я заметил, что моя программа c (с использованием CUDA 3.2) имеет виртуальный размер 28 г или более (если смотреть на VIRT) при каждом запуске с самого начала.Это не имеет никакого смысла для меня.Резидентная память имеет смысл и составляет всего около 2 г на моем самом большом наборе данных.Я знаю, что когда-то в прошлом виртуальный размер был не таким большим, но я не уверен, когда произошло изменение.
Почему мой процесс использовал бы 28 г виртуальной памяти (или почему VIRT top был бы такимбольшой)?Я понимаю, что VIRT включает исполняемый двоичный файл (только 437 КБ), разделяемые библиотеки и «область данных».Что такое «область данных»?Как я могу узнать, сколько памяти требуют разделяемые библиотеки?А как насчет других элементов общей памяти моего процесса?
содержимое / proc / / smaps (1022 строки) здесь: http://pastebin.com/fTJJneXr
Одна из записей из smaps показывает, что однаиз них приходится МОСТ, но нет метки ... как я могу узнать, что это за "пустая" запись, которая имеет 28 ГБ?
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.0464-разрядная
16 ГБ ОЗУ