MPI + GPU: jak połączyć dwie techniki

Mój program jest dobrze przystosowany do MPI. Każdy procesor wykonuje swoje własne, specyficzne (wyrafinowane) zadanie, tworząc pojedynczydouble, a potem używamMPI_Reduce aby pomnożyć wynik z każdego procesora.

Ale powtarzam to wiele, wiele razy (> 100 000). Tak więc przyszło mi do głowy, że GPU znacznie przyspieszy.

Poszukałem go w Google, ale nie mogę znaleźć niczego konkretnego. Jak radzisz sobie z miksowaniem MPI z GPU? Czy istnieje sposób na zapytanie i weryfikację programu"O,to ranga to GPU, wszystkie inne to procesory ”? Czy jest zalecany poradnik czy coś takiego?

Co ważne, nie chcę ani nie potrzebuję pełnego zestawu GPU. Naprawdę potrzebuję dużo procesorów, a następnie jednego GPU, aby przyspieszyć często używaneMPI_Reduce operacja.

Oto schematyczny przykład tego, o czym mówię:

Załóżmy, że mam 500 procesorów. Każdy procesor w jakiś sposób wytwarza, powiedzmy, 50doubles. Muszę pomnożyć wszystkie 250,00 z nichdoubles razem. Następnie powtarzam to między 10 000 a 1 milion razy. Gdybym mógł mieć jeden GPU (oprócz 500 procesorów), mogłoby to być naprawdę wydajne. Każdy procesor obliczyłby jego 50doubles dla wszystkich ~ 1 miliona „stanów”. Następnie wszystkie 500 procesorów wyśle ​​swojedoubles do GPU. GPU pomnoży wtedy 250 000doubles razem dla każdego z 1 miliona „stanów”, produkując 1 miliondoubles.
Te liczby nie są dokładne. Obliczenie jest rzeczywiście bardzo duże. Próbuję tylko przekazać ogólny problem.

questionAnswers(2)

yourAnswerToTheQuestion