Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wykonywanie algorytmów na GPU

Ostatnio zmodyfikowano 2012-03-19 09:37
Autor Wiadomość
Elaine
» 2012-03-16 23:49:28
to ty masz najwieksze doswiadczenie programistyczne z calego cpp0x : P
Tu jest kilkoro użytkowników mających większe doświadczenie - inna sprawa, że nawet najaktywniejszy z nich ostatnio rzadko kiedy coś napisze :P

Czy mogę sobie bezkarnie używać dynamicznych struktur danych, typu std::vector (do odczytu i do zapisu). Przygotowane dane chciałbym dostarczyć poprzez wskaźnik na klasę (każdy wątek otrzymałby wskaźnik na inne dane), natomiast wykonywać obliczenia chciałbym już w tym wydzielonym wątku.
Nie bardzo da się zrobić ani jedno, ani drugie, CUDA wymusza sztywny podział na kod działający na CPU i ten działający na GPU. CUDA zresztą jest czymś  innym i bardziej skomplikowanym niż wątki działające na innymi chipie niż zwykle, jest kilka rzeczy o których trzeba pamiętać, żeby wydobyć z tego sensowną wydajność.
P-52743
DejaVu
Temat założony przez niniejszego użytkownika
» 2012-03-16 23:54:25
No właśnie... tak jak widziałem to najpierw trzeba przerzucić dane z RAM do GPU, potem można wykonywać na tych danych efektywnie obliczenia, potem strzela się sync-a i zrzuca dane z GPU do RAM. W każdym razie jak ktoś coś mądrego ma do dodania w tym temacie to chętnie się zapoznam :)
P-52744
akwes
» 2012-03-16 23:59:39
W tym całym Akcenelatorze w .NET pisze


In the GPU Threads window, you can examine and work with threads that are running on the GPU in the application that you are debugging. For more information about applications that run on the GPU, see Overview of C++ Accelerated Massive Parallelism (C++ AMP).

The GPU Threads window contains a table in which each row represents a thread that is running on the GPU in the application. You can sort, reorder, remove, and group items that are in the columns.

http://msdn.microsoft.com/en-us/library/hh418502(v=vs.110).aspx


C++ Accelerated Massive Parallelism (C++ AMP) accelerates execution of C++ code by taking advantage of data-parallel hardware such as a graphics processing unit (GPU) on a discrete graphics card. It allows you to code multi-dimensional data algorithms in a way that execution can be accelerated on heterogeneous hardware using parallelism. The C++ AMP programming model includes multidimensional arrays, indexing, memory transfer, tiling, and a mathematical function library. You can use C++ AMP language extensions and compiler restrictions to control how data is moved from the CPU to the GPU and back, so that you can improve performance.

http://msdn.microsoft.com/en-us/library/hh265136(v=vs.110).aspx

Wygląda na to, że można sterować przepływem danych.


http://www.developerfusion.com/article/132336 /massive-data-parallelism-on-the-gpu-with-microsofts-c-amp-accelerated-massive-parallelism/

Cały czas widzę tylko dwie rzeczy: CUDA i Microsoft Accelerate.

Nie wiem czy ktoś z was kojarzy szał z Bitcoinami. Jak nie to: http://pl.wikipedia.org/wiki/Bitcoin Tam w każdym razie niektórzy kartami graficznymi grzali domy. W każdym razie, były różne programy, które używały kart.
https://bitcointalk.org/index.php?topic=28402.0
Tutaj są źródła do minnera do bitcoinów, który na linuksie wykorzystuje GPU. Można by popatrzeć.
P-52745
DejaVu
Temat założony przez niniejszego użytkownika
» 2012-03-17 00:22:28
Hm... po zapoznaniu się z lekturą doszedłem do wniosku, że mogę sobie podarować obliczenia na GPU i lepiej będzie wykorzystać wszystkie rdzenie CPU. Na GPU trzeba pisać kod praktycznie rzecz biorąc 'indywidualnie', a wynika to przede wszystkim ze sposobu organizacji danych.

/edit:
W każdym razie dorzuciłem nową pozycję w dokumentacji i dodałem 4 podstawowe funkcje do pracy z CUDA-em ;p

» DokumentacjaCUDA
P-52747
DejaVu
Temat założony przez niniejszego użytkownika
» 2012-03-19 09:37:47
Porównanie wydajności - CPU vs GPU: http://ixbtlabs.com/articles3/video/cuda-1-p1.html
P-52923
1 « 2 »
Poprzednia strona Strona 2 z 2