Что вы знаете о данных в матрице? Являются ли данные в основном нулями, поэтому матрица имеет размер разреженный ? Если это так, то должны быть сохранены только ненулевые элементы. Здесь - это пример библиотеки C для операций с разреженными матрицами.
Есть ли в матрице симметрия ? Если он имеет, например, диагональную симметрию, необходимо сохранить только половину данных.
ИЗМЕНЕНО, чтобы добавить:
Очевидно, что в ваших входных данных нет 37 ГБ математической информации , поэтому большая часть данных в матрице может быть отброшена без ущерба для результата вашей программы. Я предполагаю, что элементы матрицы, меньшие определенного значения, могут быть сброшены в ноль, что может привести к преобразованию вашей матрицы в разреженную матрицу, если она еще не разрежена.