Rzadkie tworzenie macierzy równolegle

Czy istnieją algorytmy pozwalające na sprawne tworzenie (wypełnianie elementów) macierzy rzadkiej (np. CSR lub współrzędnych) równolegle?


person Fic Firic    schedule 01.08.2010    source źródło


Odpowiedzi (2)


Jeśli przechowujesz swoją macierz jako mapę współrzędnych, każdy język, w którym dostępna jest współbieżna implementacja słownika, powinien wykonać zadanie za Ciebie.

Java ma ConcurrentHashMap, a .NET 4 ma ConcurrentDictionary, z których oba umożliwiają równoległe wstawianie wielowątkowych elementów nieblokujących (afaik).

person tzaman    schedule 01.08.2010
comment
Współbieżność i równoległość to nie to samo. Problemem jest tutaj tak naprawdę równoległe wypełnianie elementów do rzadkiej macierzy. Konkretnie w moim przypadku chcę go zaimplementować na GPU. - person Fic Firic; 01.08.2010

Nie ma wydajnych algorytmów tworzenia rzadkich macierzy w sposób równoległy do ​​danych. Prawdopodobny jest typ macierzy współrzędnych, który wymaga sortowania po wypełnieniu zawartości, ale ten typ jest powolny dla produktów macierzy itp.

Rozwiązaniem jest to, że nie budujesz rzadkiej macierzy - nie przechowujesz jej w pamięci; wykonujesz operacje niejawne w miejscu, gdy obliczasz elementy macierzy rzadkiej.

person Fic Firic    schedule 03.08.2010