Мне нужно работать с огромным файлом матрицы данных, который больше, чем доступная оперативная память. Например, матрица имеет 2500 строк и 1 миллион столбцов, что приводит к ~ 20 ГБ. В основном мне нужно только прочитать данные в память, без операции записи вообще.
я думал отображение памяти должно сработать. Но оказалось, что это не очень эффективно, так как ОЗУ взорвется. Это связано с тем, что ОС всегда будет автоматически кэшировать данные (страницы) в памяти, пока ОЗУ не заполнится. После этого, как и в случае с данными, превышающими объем ОЗУ, будут возникать сбои страниц, следовательно, процесс вставки страниц и извлечения страниц, который по сути представляет собой чтение / запись на диск и замедляет скорость.
Я должен указать, что я также хотел бы случайным образом прочитать некоторое подмножество данных, скажем, просто строки от 1000 до 1500 и столбцы от 1000 до 5000.
[РЕДАКТИРОВАТЬ]
Файл данных — это текстовый файл, хорошо отформатированный как матрица. По сути, мне нужно прочитать матрицу больших данных и выполнить перекрестное производство с другим вектором столбец за столбцом.
[Конец редактирования]
Мои вопросы:
Заранее большое спасибо!
Задача ещё не решена.
Других решений пока нет …