Матрица разреженного параллельного доступа в Java - PullRequest
1 голос
/ 01 июня 2011

Я ищу библиотеку матричной / линейной алгебры в Java, которая предоставляет разреженную матрицу, которая может быть записана одновременно из разных потоков. Большинство библиотек, с которыми я сталкивался, либо не предоставляют разреженных матриц вообще, либо 1.) возвращают их с хэш-картой с открытым адресом, либо 2.) сохраняют их в формате CSR или CSC, который совсем не поддается многопоточности строительство. Прямо сейчас я собираю записи параллельно, используя параллельную хеш-карту, и они заполняют разреженную матрицу из одного потока, но это кажется пустой тратой ресурсов (места для хранения параллельной хеш-карты и времени для существенного заполнения матрица дважды).

Ответы [ 2 ]

1 голос
/ 01 июня 2011

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

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

Самый распространенный способ сборки разреженных матриц - это сборка их в триплетном формате и преобразование в сжатыеформат строки или столбца.Сборка может быть дорогой, но это легко сделать параллельно.Просто дайте каждому потоку иметь свой собственный список триплетов и соедините их вместе перед преобразованием в сжатый формат.

0 голосов
/ 01 июня 2011

Я помню, что матрицы в параллельный кольт были поточно-ориентированными. Библиотека является многопоточной версией кольта.

...