Pytanie: Czy istnieje emulator karty Geforce, który pozwoliłby mi programować i testować CUDA bez posiadania właściwego sprzętu?
Informacje:
Chcę przyspieszyć kilka moich symulacji w CUDA, ale moim problemem jest to, że nie zawsze jestem w pobliżu mojego pulpitu, aby robić ten program. Chciałbym zamiast tego popracować na moim netbooku, ale mój netbook nie ma GPU. O ile wiem, do uruchomienia CUDA potrzebny jest procesor graficzny obsługujący CUDA. Czy można to obejść? Wydawałoby się, że jedynym sposobem jest emulator GPU (który oczywiście byłby boleśnie powolny, ale działałby). Ale niezależnie od sposobu, w jaki można to zrobić, chciałbym usłyszeć.
Programuję na Ubuntu 10.04 LTS.
Odpowiedzi:
Dla tych, którzy szukają odpowiedzi w 2016 roku (a nawet w 2017 roku) ...
Zrzeczenie się
gpuocelot
jeśli spełniasz listę jego zależności.Próbowałem zdobyć emulator dla BunsenLabs (Linux 3.16.0-4-686-pae # 1 SMP Debian 3.16.7-ckt20-1 + deb8u4 (2016-02-29) i686 GNU / Linux).
Powiem ci, czego się nauczyłem.
nvcc
miał-deviceemu
opcję w CUDA Toolkit 3.0Pobrałem CUDA Toolkit 3.0, zainstalowałem go i próbowałem uruchomić prosty program:
Zauważ, że w CUDA Toolkit 3.0
nvcc
był w/usr/local/cuda/bin/
.Okazało się, że miałem trudności ze skompilowaniem:
Znalazłem w internecie, że gdybym użył
gcc-4.2
lub podobnie starożytny zamiastgcc-4.9.2
błędów może zniknąć. Poddałem się.gpuocelot
Odpowiedź Stringera zawiera link do bardzo starej
gpuocelot
witryny projektu. Więc na początku myślałem, że projekt został porzucony w 2012 roku. W rzeczywistości został opuszczony kilka lat później.Oto kilka aktualnych witryn internetowych:
Próbowałem zainstalować gpuocelot postępując zgodnie z instrukcją . Miałem jednak kilka błędów podczas instalacji i ponownie się poddałem.
gpuocelot
nie jest już obsługiwany i zależy od zestawu bardzo konkretnych wersji bibliotek i oprogramowania.Możesz spróbować skorzystać z tego samouczka od lipca 2015 r., Ale nie gwarantuję, że zadziała. Nie testowałem tego.
MCUDA
Może się przydać. Oto link do strony internetowej .
Odpady CUDA
Jest to emulator do użytku w Windows 7 i 8. Jednak nie próbowałem tego. Wygląda na to, że nie jest już rozwijany (ostatnie zatwierdzenie pochodzi z 4 lipca 2013 r.).
Oto link do strony projektu: https://code.google.com/archive/p/cuda-waste/
CU2CL
Ostatnia aktualizacja: 12.03.2017
Jak dashy zauważył w komentarzach, CU2CL wydaje się być interesującym projektem. Wygląda na to, że jest w stanie przetłumaczyć kod CUDA na kod OpenCL. Jeśli więc Twój procesor graficzny jest w stanie uruchomić kod OpenCL, projekt CU2CL może Cię zainteresować.
Spinki do mankietów:
źródło
nvcc -deviceemu
CUDA Waste
działaćCU2CL
działaćTa odpowiedź może być za późno, ale i tak warto to zauważyć. GPU Ocelot ( którego jestem jednym z głównych współautorów ) można skompilować bez zainstalowanych sterowników urządzeń CUDA (libcuda.so), jeśli chcesz używać zaplecza Emulatora lub LLVM. Pokazałem emulator na systemach bez GPU NVIDIA.
Emulator stara się wiernie zaimplementować specyfikacje PTX 1.4 i PTX 2.1, które mogą zawierać funkcje, których nie obsługują starsze GPU. Translator LLVM dąży do poprawnego i wydajnego tłumaczenia z PTX na x86, co, miejmy nadzieję, uczyni CUDA skutecznym sposobem programowania wielordzeniowych procesorów, a także GPU.
-deviceemu
jest przestarzałą funkcją CUDA od dłuższego czasu, ale tłumacz LLVM zawsze był szybszy.Ponadto w emulator wbudowano kilka narzędzi do sprawdzania poprawności w celu weryfikacji: wyrównane dostępy do pamięci, dostęp do pamięci współdzielonej są odpowiednio zsynchronizowane, a dostępy do wyłuskiwania globalnej pamięci przydzielone obszary pamięci. Wdrożyliśmy również interaktywny debugger z linii poleceń, inspirowany głównie przez gdb, do jednoetapowego przechodzenia przez jądra CUDA, ustawiania punktów przerwania i obserwowania itp. Narzędzia te zostały specjalnie opracowane, aby przyspieszyć debugowanie programów CUDA; może ci się przydać.
Przepraszamy za aspekt związany tylko z Linuksem. Uruchomiliśmy gałąź Windows ( a także port Mac OS X ), ale obciążenie inżynieryjne jest już wystarczająco duże, aby podkreślić nasze poszukiwania. Jeśli ktoś ma czas i zainteresowanie, może chcieć pomóc nam w zapewnieniu wsparcia dla systemu Windows!
Mam nadzieję że to pomoże.
źródło
Możesz też sprawdzić gpuocelot projekt , który jest prawdziwym emulatorem w tym sensie, że będzie emulowany PTX (kod bajtowy, na który konwertowany jest kod CUDA).
Jest też tłumacz LLVM, byłoby interesujące przetestować, czy jest szybszy niż przy użyciu -deviceemu.
źródło
Zestaw narzędzi CUDA miał jeden wbudowany do czasu wydania CUDA 3.0. Jeśli używasz jednej z tych bardzo starych wersji CUDA, upewnij się, że używasz -deviceemu podczas kompilacji z nvcc.
źródło
https://github.com/hughperkins/cuda-on-cl umożliwia uruchamianie programów NVIDIA® CUDA ™ na procesorach graficznych OpenCL 1.2 (pełne ujawnienie: jestem autorem)
źródło
Zachowaj ostrożność podczas programowania przy użyciu -deviceemu, ponieważ są operacje, które nvcc zaakceptuje w trybie emulacji, ale nie podczas rzeczywistego działania na GPU. Dzieje się tak głównie podczas interakcji urządzenie-host.
Jak wspomniałeś, przygotuj się na powolną egzekucję.
źródło
GPGPU-Sim to symulator GPU, który może uruchamiać programy CUDA bez użycia GPU. Stworzyłem obraz dockera z zainstalowanym GPGPU-Simem na wypadek, gdyby było to pomocne.
źródło