Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.12.2013, 19:17
mustimur mustimur вне форума
Прохожий
 
Регистрация: 20.11.2013
Сообщения: 17
Версия Delphi: Delphi xe4
Репутация: 10
По умолчанию Размер массива

Программа должна обрабатывать большие массивы данных. И вот при определенном размере трехмерного массива вылетает сообщение OUT of memmory, при чем на втором массиве (пользовательском), первый (тоже пользовательский почти аналогичный) проглатывается нормально!! Комп обладает ресурсами, задействовано должно быть лишь 3Гб по моим подсчетам оперативки из 16, а еще есть не ограниченная виртуальная память.
Как обойти это?
Ответить с цитированием
  #2  
Старый 18.12.2013, 19:38
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
задействовано должно быть лишь 3Гб
Всего-то. Досчитай от 0 до 3 миллиардов устно и потом еще раз напиши фразу "лишь 3Гб".
Цитата:
оперативки из 16, а еще есть не ограниченная виртуальная память.
С каких пор ВП стало неограниченным, да еще и стало каким-то отдельным сферическим куском памяти в вакууме? Виртуальное адресное пространство приложения - не больше 4 Гб, из которых около 1-2 занимает винда, хоть она и умеет перемапивать себя. И откуда уверенность, что, учитывая наличие винды, кода приложения, стеков потоков и созданных объектов найдется 3 миллиарда подряд идущих свободных байт?
Больше 4 ГБ в сумме задействовать в Win32 приложении нельзя в принципе. И не надо примешивать сюда физическую память - она вообще из другой оперы.
Если компилируется под х64, то памяти, конечно, значительно больше, но все же выделять такими гигантскими кусками нельзя. Стоит хорошенько подумать о смысле жизни таких гигантских манипуляций.
ПыСы даже на серваках, которые я видел, поднятые сложные вычислительные задачи редко отжирают столько.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 18.12.2013 в 19:48.
Ответить с цитированием
  #3  
Старый 18.12.2013, 20:30
mustimur mustimur вне форума
Прохожий
 
Регистрация: 20.11.2013
Сообщения: 17
Версия Delphi: Delphi xe4
Репутация: 10
Печаль

Когда речь идет об около 1000000 точек сетки для вычисления физического поля. Имеешь дело с системой из такого же числа уравнений с таким же числом неизвестных. Для их решения создаются квадратная матрица с размером соответствующим. А для ее формирования ещё надо с полтора десятка одномерных массива с тем же числом строк!!! Естественно на первых порах буду грубить сетку многократно... Но боюсь точность слетит... Как вычислители работают под win32? Для них не предел матрица с размером 10^6*10^6
Ответить с цитированием
  #4  
Старый 18.12.2013, 20:37
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Я правильно понимаю, что это связано с предыдущей темой про многопоточность?
Если да, то все вычисления можно делать параллельно, а значит - можно и последовательно. Что мешает загрузить кусочек - рассчитать - выгрузить - загрузить следующий - рассчитать - выгрузить - ... ?
Даже если нет - идеология та же. Рассчитать часть, сохранить промежуточные результаты, рассчитать следующую с их учетом, ...
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 18.12.2013 в 20:44.
Ответить с цитированием
  #5  
Старый 19.12.2013, 14:41
mustimur mustimur вне форума
Прохожий
 
Регистрация: 20.11.2013
Сообщения: 17
Версия Delphi: Delphi xe4
Репутация: 10
По умолчанию

Ну да это и мне пришло в голову, просто надеялся что обойтись без сохранения (жалко тратить машинное время на это)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:26.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter