Próbuję uruchomić jądro na GPU i wykonać dodatkowe obliczenia na hoście (CPU). Widzę ten efekt:Wykonywanie jądra OpenCL nie rozpoczyna się, dopóki nie zostanie wywołany clFinish lub clWaitForEvents
tylko jądro potrzebuje około 2000 MS:
clEnqueueNDRangeKernel ...
clFinish (lub clWaitForEvents, próbowałem obu)
I symulowane dodatkowych obliczeń na procesorze ze snem (10):
clEnqueueNDRangeKernel ...
sleep (10);
clFinish (lub clWaitForEvents)
Teoretycznie jądro powinno uruchomić na GPU i po śnie 10 sek jądro powinno być zakończone. Ale pomiar czasu powiedział, że to wszystko wymaga 12000ms zamiast 10000.
Czy clFinish lub clWaitForEvents wywołają jądro, aby uruchomić czy czy coś przegapiłem?
Używam procesora/procesora AMD Fusion i Linuksa AMD.
Wielkie dzięki.
Jak duże są Twoje dane? Czy to możliwe, że 2000 ms reprezentuje czas potrzebny na przesłanie danych z procesora graficznego do procesora? – user1202136
Dane mają mniej niż 1 MB. Ale nie powinno to być w moim pomiarze. Skopiowuję dane do urządzenia, zaczynam odmierzanie, wykonuję jądro + sleep + clFinish, zatrzymuję pomiar, kopiuję dane z powrotem do hosta – Tomas
Jak dokładnie mierzysz? Czy synchronizujesz swoje dane z urządzeniem? – reima