2009-08-08 5 views
48

Ostatnio dużo czytałem o oprogramowaniu (głównie naukowym/matematycznym i związanym z szyfrowaniem), które przenosi część ich obliczeń na GPU, co powoduje 100-1000 (!) zwiń zwiększ prędkość dla obsługiwanych operacji.C#: Wykonuj operacje na GPU, a nie na CPU (Calculate Pi)

Czy istnieje biblioteka, interfejs API lub inny sposób uruchomienia czegoś na GPU przez C#? Myślę o prostych obliczeniach Pi. Mam GeForce 8800 GTX, jeśli jest to w ogóle istotne (wolałoby to jednak niezależne od karty rozwiązanie).

+1

Nie myślę, że potrzebujesz GPU do "prostej kalkulacji Pi", chyba że robisz to tysiące razy na sekundę ... –

+18

Nie chodzi o "potrzebowanie" tego. Po prostu zasugerowałem to jako przykład dowodu idei. – Alex

+0

Ah, rozumiem. Mój błąd. +1 wtedy. –

Odpowiedz

19

Jest to bardzo nowa technologia, ale możesz zbadać CUDA. Ponieważ twoje pytanie jest oznaczone jako C#, tutaj jest .Net wrapper.

Jako bonus wydaje się, że Twój telefon 8800 GTX obsługuje CUDA.

+1

Twój link do opakowania jest martwy . –

+0

@Alizter - Dzięki.Zrobiłem wyszukiwanie i podałem nowy adres URL, jeśli ludzie go szukają. –

+0

Używaj GPU Alea z www.quantalea.com. Jest to pełnoprawny kompilator .NET do CUDA, platforma krzyżowa z bardzo dobrą obsługą programistów do debugowania i profilowania. – Daniel

8

Możecie zajrzeć do this question

Pewnie szuka Accelerator, ale jeśli jesteś zainteresowany w tworzeniu gier w ogóle będę Proponuję przyjrzeć XNA

+0

Nie słyszałem o tym - ciekawe! Obawiam się, że to wciąż jest projekt badawczy. Czy jest gotowy do zastosowań komercyjnych? –

+0

Szczerze mówiąc, nie wypróbowałem tego i nie wiem, jak stabilne. Zajmuję się programowaniem grafiki i mam je w swoich zakładkach do wykorzystania w przyszłości, i łatwiej było podejść do problemu niż CUDA. – Tchami

+0

Mam kartę ATI, więc może dam akcelerator spróbować. –

4

CUDA.NET powinny być dokładnie to, czego szukasz, i wydaje się, że obsługuje twoją konkretną kartę graficzną.

3

Możesz uzyskać dostęp do najnowszych API Direct3D z .NET przy użyciu Windows API Code Pack. Direct3D 11 jest wyposażony w Shadery Compute. Są one mniej więcej porównywalne z CUDA, ale działają również na procesorach graficznych innych niż NVIDIA.

Należy pamiętać, że zarządzane DirectX i XNA są ograniczone do zestawu funkcji Direct3D 9, który jest nieco trudny w użyciu dla GPGPU.

2

Istnieje zestaw powiązań .Net dla aprapy CUDA Nvidii, nazywa się to CUDA.net. Możesz zapoznać się z reference guide, aby obejrzeć przykładowy kod C#.

Preferowanym sposobem uzyskania dostępu do procesora (GPU) byłoby użycie OpenCL, aby Twój kod był przenośny z kartami ATI, ale uważam, że może być wymagane dodatkowe kodowanie i nie jestem pewien, ile wsparcia OpenCL ma na platformę .Net.

Jeśli chcesz użyć C++, here's a quick overview, aby uzyskać przykładowy kod kompilujący się w Visual Studio.

15

Inną opcją, o której nie wspomniano przy obliczaniu GPU z C#, jest Brahma.

Brahma zapewnia opartą na LINQ abstrakcję do obliczeń GPU - to w zasadzie LINQ do GPU. Działa na OpenGL i DirectX bez dodatkowych bibliotek (ale wymaga SM3). Niektóre z próbek są dość niesamowite.