/ / Oblicz wartości własne / wektory własne setek małych macierzy za pomocą CUDA - macierz, cuda, opencl, algebra liniowa, metody numeryczne

Oblicz wartości własne / wektory własne setek małych macierzy przy użyciu CUDA - macierz, cuda, opencl, algebra liniowa, metody numeryczne

Mam pytanie dotyczące rozkładu własnego setek małych matryc za pomocą CUDA.

Muszę obliczyć wartości własne iwektory własne setek (np. 500) małych (64 na 64) rzeczywistych macierzy symetrycznych jednocześnie. Próbowałem to zaimplementować metodą Jacobi, używając kolejności turniejów szachowych (patrz ten artykuł (PDF) po więcej informacji).

W tym algorytmie zdefiniowano 32 wątkiblok, podczas gdy każdy blok obsługuje jedną małą matrycę, a 32 wątki współpracują ze sobą, aby napompować 32 elementy o przekątnej aż do zbieżności. Jednak nie jestem bardzo zadowolony z jego działania.

Zastanawiam się, gdzie jest coś lepszegoalgorytm dla mojego pytania, tj. rozkład własny wielu prawdziwych macierzy symetrycznych 64 na 64. Myślę, że metoda gospodarza może być lepszym wyborem, ale nie jestem pewna, czy można ją skutecznie wdrożyć w CUDA. Nie ma zbyt wielu przydatnych informacji w Internecie, ponieważ większość innych programistów jest bardziej zainteresowana użyciem CUDA / OpenCL do dekompozycji duża matryca zamiast wielu małych matryc.

Odpowiedzi:

3 dla odpowiedzi № 1

Przynajmniej dla wartości własnych próbkę można znaleźć w zestawie SDK Cuda

http://www.nvidia.de/content/cudazone/cuda_sdk/Linear_Algebra.html

Obrazy wydają się uszkodzone, ale pobieranie próbek nadal działa. Sugerowałbym pobranie pełnego zestawu SDK i przejrzenie tego przykładu. Ponadto ten dokument może być pomocny:

http://docs.nvidia.com/cuda/samples/6_Advanced/eigenvalues/doc/eigenvalues.pdf