Нужна библиотека разреженных матриц - PullRequest
2 голосов
/ 04 августа 2011

Существует ли библиотека разреженных матриц, которая копирует функциональные возможности плотного BLAS?

Я бы хотел по крайней мере:

  1. эффективные SYR и SYRK (обновление ранга-k) с разреженным входом (и, возможно, плотным выводом),
  2. опция для разреженного симметричного хранения,
  3. DOT, NRM2, транспонирование и другие стандартные вкусности.

Именование и API не обязательно должны быть ориентированы на BLAS, если они выполняют свою работу. С или Фортран предпочтительнее, но С ++ тоже подойдет.

Я посмотрел на MKL , scipy.sparse , uBLAS и Eigen3 , но они либо не поддержали то, что мне нужно или я не мог понять, делают ли они.

Ответы [ 2 ]

2 голосов
/ 16 августа 2011

Извините, что разочаровал, но, насколько я могу судить, я боюсь, что ответ - нет.Я много работал с разреженными данными и не нашел глубоких библиотек (например, уровня BLAS) для манипуляций с разреженными матрицами.На более высоком уровне, чем BLAS, существует обширная поддержка в Matlab, R, Python и других языках.

Из того, что я видел, это возникает из-за различий в типах разреженных матриц (разбросанных,симметричный, полосатый или трехдиагональный, блочная диагональ), их содержимое (двоичное, целое, вещественное) и их математические свойства (например, положительно определенное - не гарантировано, полный ранг - не распространено) и т. д. имеет тенденцию усложнять оптимизацию.

Вместо этого я, как правило, пишу свой собственный код для обработки разреженных матриц, повторно используя все, что я могу для хранения и простых вычислений, таких как умножение.

Со временем появится хорошая библиотека низкого уровня,но я еще не видел это.

0 голосов
/ 13 февраля 2012
...