матричные операции над большими матрицами на ограниченной памяти - PullRequest
4 голосов
/ 20 сентября 2010

Мне нужно выполнить некоторые матричные операции на моем компьютере. Эти матрицы имеют размер 1000000x1000000 и более, некоторые операции требуют ТБ памяти. Очевидно, что они не могут быть непосредственно загружены в память и вычислены. Какие подходы я могу использовать для решения этих матриц на моем компьютере? Предполагая, что матрицы не могут быть уменьшены в дальнейшем с помощью оптимизации матриц и уже хранятся в компактной форме. Я подумываю об использовании схемы с отображением памяти, но мне нужны идеи.

1 Ответ

2 голосов
/ 20 сентября 2010

Два предложения:

  1. Используйте системный вызов mmap2 для сопоставления файлов, содержащих как входные, так и выходные данные.Это позволяет отображать файлы размером до 2 ^ 44 байтов и обрабатывать их, как если бы они уже были в памяти.Т.е. вы просто используете стандартный синтаксис указателя для доступа к данным, а ОС заботится о том, чтобы либо читать, либо записывать их с / на диск, не беспокоясь об этом.Мало того, но mmap во много раз значительно быстрее ручного ввода / вывода файла - См. Этот пост SO .

  2. Чтение " Что должен делать каждый программистзнать о памяти"Ульриха Дреппера.Одной из примеров проблем, с которыми он сталкивается, является высокая оптимизация операций с матрицами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...