mmap?
linux only?
не знаю стоит ли связываться с hdf5? для каких задач это используется?
Может быть стоит посмотреть сразу в сторону каких то пакетов для Large-scale Data Mining тогда уж.
вообще у меня задача такая, что есть матрица nxm(n сэмплов m длина вектора) она не помещается в память, а надо сделать knn search по ней, найти например для данного вектора 10 ближайших.
Можно грузить кусками которые влезают в память и искать тупо попарно(тут только время поиска) или строить дерево и искать чуть быстрее(хотя тут будет уже время на построение дерева+ время поиска), хотя есть еще и
knn на cuda (тут получается загрузка с диска+загрузка в память GPU + сам процесс).
Можно придумать какое то специальное дерево, листья которого лежат на диске, а верхушка в памяти, но писать самому такое не очень хочется, возможно есть что то готовое?
кстати насчёт матриц, я та кпонял что этот метод блочного перемножения используется когда матрица не помещается в L2 кэш.
например пробовал в матлабе делать PCA для матрицы(наверно там делается через SVD) например для матрицы 100000х10 делается довольно быстро, т.е. проблемы с тем что много сэмплов не возникает(не помню как зависит от самой длины вектора), а если матрица не помещается в память, то либо получаем out of memory,но если своп большой, то всё работает и так, т.е. всё ложится на плечи винды, но работает очень долго.
(есть вроде методы типа batch PCA, которые позволяют обрабатывать данные кусками, но вопрос тут больше стоит в том как работать с большими матрицами, т.е. оптимально ли полагаться что система всё сама разрулит кидая всё в своп)
кстати есть какой то алгоритм для SVD если не влезает полностью в память? это опять же полезно и для GPU у которого тоже ограниченная память.
если поставить вопрос более глобально есть ли матричные библиотеки, которые могут работать с матрицами которые не помещаются в память?