Разреженное создание матрицы параллельно - PullRequest
3 голосов
/ 01 августа 2010

Существуют ли алгоритмы, которые позволяют эффективно создавать (заполнять элементы) разреженную (например, CSR или координатную) матрицу параллельно?

Ответы [ 2 ]

0 голосов
/ 04 августа 2010

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

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

0 голосов
/ 01 августа 2010

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

В Java есть ConcurrentHashMap, а в .NET 4 - ConcurrentDictionary, которые позволяют параллельно вставлять многопоточные неблокирующие (afaik) элементы.

...