Czy istnieją algorytmy pozwalające na sprawne tworzenie (wypełnianie elementów) macierzy rzadkiej (np. CSR lub współrzędnych) równolegle?
Rzadkie tworzenie macierzy równolegle
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
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