|
3 / 3 / 2
Регистрация: 20.12.2014
Сообщений: 54
|
|
Ошибка SystemOutOfMemory при работе с большой разреженной матрицей25.03.2015, 21:17. Показов 1676. Ответов 12
Метки нет (Все метки)
Здравствуйте уважаемые программисты, помогите пожалуйста. Проблема следующая: В моем проекте строится очень большая разреженная матрица порядка 1500на900, из-за нее проект вылетает с ошибкой SystemOutOfMemory, вопрос что с ней делать? существует ли в C# класс/метод для обработки разреженных матриц? Спасибо.
0
|
|
| 25.03.2015, 21:17 | |
|
Ответы с готовыми решениями:
12
Ошибка при работе с матрицей Ошибка сегментирования при работе с матрицей
|
|
3 / 3 / 2
Регистрация: 20.12.2014
Сообщений: 54
|
||
| 25.03.2015, 23:12 [ТС] | ||
|
0
|
||
|
|
|
| 25.03.2015, 23:16 | |
Сообщение было отмечено Student_Vova как решение
Решение
Человечество до вас хранило координаты элемента и его значение:
http://alglib.sources.ru/articles/zeromatr.php А если матрица действительно большая - то я бы еще и зиповал бы в памяти.
1
|
|
|
3 / 3 / 2
Регистрация: 20.12.2014
Сообщений: 54
|
|
| 25.03.2015, 23:25 [ТС] | |
|
спасибо
0
|
|
|
80 / 58 / 11
Регистрация: 16.12.2013
Сообщений: 175
|
||||||
| 27.03.2015, 08:18 | ||||||
Сообщение было отмечено Student_Vova как решение
Решение
Вы что делаете-то? Так, вообще-то задача очень редкая, но мне попалась однажды. Вот код. Идея в том, что значения, очень близкие к нулю ни в матрице ни в векторе не хранятся вообще. В итоге, при умножении вектора на матрицу выполняются только операции со значениями, существенно большими нуля. Но у вас очень маленькая матрица. Ищите проблему в другом месте. Ну-и это очень было экзотическое дело. Даже не верится, что у вас может быть та же проблема.
1
|
||||||
|
3 / 3 / 2
Регистрация: 20.12.2014
Сообщений: 54
|
|
| 27.03.2015, 14:28 [ТС] | |
|
Да действительно матрица у меня получается немного побольше чем я говорил 2213на78377.
Спасибо большое Австрал за код, попробую применить.
0
|
|
|
80 / 58 / 11
Регистрация: 16.12.2013
Сообщений: 175
|
|
| 27.03.2015, 14:45 | |
|
Ой, у вас в массивах на картинке строки... а не числа, как тому в настоящих матрицах должно быть.
0
|
|
|
3 / 3 / 2
Регистрация: 20.12.2014
Сообщений: 54
|
|
| 27.03.2015, 15:00 [ТС] | |
|
В матрице хранятся числа
, создается она по размерам строковых массивов.
0
|
|
|
80 / 58 / 11
Регистрация: 16.12.2013
Сообщений: 175
|
|
| 27.03.2015, 15:10 | |
|
А, понятно, у вас получается порядка 1.4 Гб матрица с учётом, что вы уже там сколько-то памяти заняли другими вещами. Если система 32 бит, то на этом память действительно и закончится. Надо Win7+ и 64 бита. Ну или подумать, как всю матрицу в памяти не хранить.
1
|
|
|
3 / 3 / 2
Регистрация: 20.12.2014
Сообщений: 54
|
|
| 27.03.2015, 15:18 [ТС] | |
|
Да и система у меня слабоватая (3Гб оперативки). Даже не знаю, что проще винду преустановить или код переписать ...
. Еще раз спасибо.
0
|
|
|
80 / 58 / 11
Регистрация: 16.12.2013
Сообщений: 175
|
|
| 27.03.2015, 15:31 | |
|
Кстати, да, может, код, который я запостил, вам может помочь в данной ситуации. Если близкие к нулю значения вам не нужны. У меня было 90..95% нулей. Но все они были на самом деле очень маленькими положительными величинами. Настолько маленькими, что на точность решения не влияли.
Добавлено через 8 минут Переставляйте конечно. Я вижу, у вас ultimate, значит, знаете где брать. А то 32-разрядная даже и ваши 3 Гб не адресует нормально.
1
|
|
|
3 / 3 / 2
Регистрация: 20.12.2014
Сообщений: 54
|
|
| 27.03.2015, 15:51 [ТС] | |
|
(Админ, прости, что не по теме) .... сделаю так, как Вы рекомендуете ... была вообщето лицензионная HomeBasic , считаю, что в условиях санкций, весь пиратский софт нужно считать трофейным
0
|
|
| 27.03.2015, 15:51 | |
|
Помогаю со студенческими работами здесь
13
Как можно распараллелить решение СЛАУ с разреженной матрицей? Переполнение стека при работе с матрицей
Проблема при работе с большой БД Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|