2011-01-18 14 views
9

Qt wypuściło ładną owijkę dla Opencl (QtOpencl), która bardzo dobrze ukrywa wiele płyt kotła i sprawia, że ​​OpenCL dobrze gra z widżetem Qt i Opengl.Opakowanie CUDA dla Qt

Ale jest kilka rzeczy, które mogę zrobić lepiej w Cuda niż OpenCL, a narzędzia Cuda są znacznie bardziej dojrzałe.

Jest stosunkowo łatwo zrobić proste opakowanie Cuda C++ i zintegrować z procesem budowania Qt, ale zastanawiałem się, czy ktoś zrobił coś więcej? Idealnie odpowiednia biblioteka o nazwie QtCuda.

QT ludzie nie są zainteresowani wsparciem Cuda bo to nie jest wieloplatformowym wystarczająco

edit: Tylko dla wyszukiwania, istnieje Qt CUDA wrapper dla OpenGL PBO. Jest oparty na Dr Dobbs simplePBO example. Jest kilka poprawek, które sprawią, że będzie ładnie grał z Cuda4, ale to dobry początek.

ps nie ma sposobu, aby skontaktować się z autorem bloga, a komentarze nie działają - jeśli znajdzie to daj mi znać, a ja prześlę poprawki.

Odpowiedz

8

QT ludzie nie są zainteresowani wsparciem Cuda bo to nie jest wieloplatformowym wystarczająco

Dokładnie. Jeśli chcesz to zignorować, nie rozumiesz filozofii Qt. I po co tworzyć jeszcze więcej kodu legacy, a jednocześnie łatwo przetłumaczyć istniejące jądro na OpenCL z MultiscaleLab Swan?

Źródło biblioteki można jednak bezpłatnie pobrać i wykorzystać jako bazę.

+5

Zależy od twojego defn dziedzictwa! Dzięki cuda moja aplikacja będzie działać w kamerze CCTV przy użyciu chipsetu Tegra. Z OpenCL utknąłem na "starszych" procesorach na komputerach. Potrzebuję tego, aby być Cudą, ponieważ niektórzy ludzie przenieśli do Cudy bardzo skomplikowane biblioteki, to mniej pracy, aby owijać Cudę dla mojej aplikacji niż implementować i udowadniać wszystkie matematyki na OpenCL. Dzięki temu, że wszystko jest zapakowane w Qt, mogę znacznie łatwiej korzystać z Cuda lub OpenCL. –

+1

Byłby to dobry punkt, gdyby to była prawda; Oficjalna lista http://www.nvidia.com/object/cuda_gpus.html w ogóle nie mówi o Tegrze. Również CCTV z Qt byłoby dość dziwne, ponieważ skupia się na rozwoju GUI. Pliki CUDA-lib, do których się odwołujesz, nie są przeniesione do ARM; biblioteki open-source są najczęściej przenoszone do OpenCL. Kod przeniesiony ma tę samą matematykę, ponieważ CUDA i OpenCL są rodzajem niekompatybilnych dialektów. –

+1

Przepraszam, że nie wyjaśniłem się. Dwa powody, dla których warto wybrać się na Cudę, to fakt, że wbudowane chipsety NVidii (takie jak Tegra) z Cudą zastępują niestandardowe procesory DSP w wielu aplikacjach wbudowanych (zwłaszcza w wizje maszynowe), a drugim jest wiele istniejącego przetwarzania obrazu i kodu matematycznego w Cuda. Qt było przeznaczone do prototypowania komputerów stacjonarnych, ponieważ Qt wykonał wszystkie specyficzne dla OpenCL/GPU operacje na kotłach i pozwolił mi z łatwością przełączać się między nimi na etapie prototypowania. –

3

Sposób, w jaki zrobiłem to było zbudować DLL w Visual Studio, wypaczone wywołanie funkcji CUDA wśród normalnych eksportowanych funkcji C. Użyto LoadLibrary i GetProcAddress z QT IDE. W sumie działało całkiem dobrze.