Существуют ли алгоритмы, которые позволяют эффективно создавать (заполнение элементов) разреженной (например, CSR или координатной) матрицы параллельно?Создание параллельной матрицы параллельно
3
A
ответ
0
Не существует эффективных алгоритмов для создания разреженных матриц в параллельном доступе. Правдоподобным является тип матрицы координат, который требует сортировки после заполнения содержимого, но этот тип медленный для матричных продуктов и т. Д.
Решение. Вы не строите разреженную матрицу - вы не храните ее в памяти; вы выполняете неявные операции, когда вы вычисляете элементы разреженной матрицы.
0
Если вы храните свою матрицу в качестве карты координат, любой язык, на котором имеется параллельная реализация словаря, должен выполнить эту работу за вас.
У Java есть ConcurrentHashMap
, а .NET 4 имеет ConcurrentDictionary
, оба из которых позволяют параллельно вставлять многопоточный неблокирующий (afaik) элемент.
Параллелизм и параллелизм - это не одно и то же. Проблема в том, что это действительно параллельное заполнение элементов элементами в разреженной матрице. В частности, в моем случае я хочу реализовать его на графических процессорах. –