Poszukuję dobrej otoki OpenCL \ library dla Pythona, z dobrą dokumentacją. Próbowałem szukać ... ale nie mogłem znaleźć wystarczająco dobrego.OpenCL for Python
Odpowiedz
Najpopularniejszą i najlepiej udokumentowaną opcją wydaje się być PyOpenCL. Twierdzi, że jest kompletnym opakowaniem dla OpenCL, a dokumentacja wygląda dobrze.
pycl JEST ctypes wiążące do OpenCL (gospodarzem on bitbucket)
Jego podstawowym celem jest prosta: owinąć OpenCL w taki sposób, że wiele implementacji Pythona można wykorzystać go jako wykonalne. Obecnie jest testowany na CPythonie 2. {5,6,7}, 3,2 i PyPy 1.5. Wiadomo, że w dużej mierze nie działa na Jythonie, którego biblioteka ctypów jest wciąż niedojrzała.
Aby to osiągnąć, unikamy modułów rozszerzeń i zależności poza standardową biblioteką. Idealne rzeczy, takie jak tablice NumPy i obrazy PIL, powinny po prostu działać, ale nie powinny być wymagane.
Jest obecnie całkiem nowy. Ostatnio się z tym bawię i działa to ładnie. Nie taktowanie w porównaniu do PyOpenCL, ale wydajność wydaje się być całkiem rozsądna. Nie pracowałem dla mnie z OpenCL 1.0 OS X 10.6 (i AMD Radeon 5870, see here), ale działa idealnie pod 10,7 i OpenCL 1.1
Jeśli chodzi o dokumentację, jest to dość bezpośrednie powiązanie z bibliotekami C, więc każda dokumentacja będzie miała zastosowanie. Również "Adventures in PyOpenCL" jest dobre i dotyczy prawie wszystkich wiązań
Opracowujemy opencl4py, powiązania wyższego poziomu. Ten projekt wykorzystuje CFFI, więc działa na Pypy.
Głównym problemem, jaki napotkał z pyopencl jest to, że „pyopencl import” czy OpenCL inicjalizacji i zajmuje całą pamięć wirtualną w przypadku sterownika NVIDIA, zapobiegając prawidłowego rozwidlającą i skutecznie wyłączając wieloprocesorowe (tak, możemy twierdzić, że za pomocą pyopencl wyłącza wieloprocesorowe przynajmniej z NVIDIA). opencl4py używa leniwej inicjalizacji OpenCL, rozwiązując to "importowane piekło".
Później uzyskał kilka ciekawych funkcji, takich jak super łatwe buforowanie programu binarnego itp. Niestety, dokumentacja jest dość krótka. Najlepszym sposobem, aby dowiedzieć się, jak to działa, są testy.
Autor PyOpenCL tutaj. Największe znaczenie mogę wyciągnąć z tego, że opencl4py nie ładuje libOpenCL.so w czasie importu. Jeśli to jest problem (jak twierdzisz), to dlaczego nie importować PyOpenCL dokładnie tam, gdzie jest potrzebny? Nie jestem pewien, czy rozumiem tutaj twoją motywację. –
Jako kolejny komentarz, PyOpenCL ma gałąź [cffi] (https://github.com/pyopencl/pyopencl/tree/cffi), która może uruchamiać jądra i działa na PyPy. Nie jest jeszcze gotowy na prime-time, ale się tam dostanie. –
Nasza aplikacja zawiera kilkadziesiąt modułów korzystających z OpenCL i opóźniających import sprawia, że kod jest bardzo podatny na błędy. Za każdym razem, gdy ktoś zaimportował pyOpenCL "wcześniej niż powinien", bardzo trudno było debugować i diagnozować błędy ...czasami :) I oczywiście może działać z urządzeniami OpenCL innych niż NVIDIA na komputerze programisty. – markhor
- 1. Database for Python Twisted
- 2. Escape string Python for MySQL
- 3. Wywołanie kernela OpenCL z innego kernela OpenCL
- 4. czy python zamrozić listę przed for-loop?
- 5. Python for-loop do zrozumienia ze zrozumieniem
- 6. Zachowanie pętli "For" w języku Python
- 7. `async for` w języku Python 3.4
- 8. unittest for none type w python?
- 9. C++ Name Mangling Library for Python
- 10. Wiele liczników w pojedynczej pętli for: Python
- 11. OpenCL AMD vs NVIDIA performance
- 12. Unikalność urządzenia OpenCL
- 13. Rozpoczęcie samouczków OpenCL?
- 14. Bariery w OpenCL
- 15. Inwersja macierzy w OpenCL
- 16. OpenCL - wydajność OpenGL Interop
- 17. Kompilacja OpenCL na Linuksie
- 18. OpenCL grupy robocze
- 19. Pamięć w OpenCL
- 20. Porównanie CUDA vs OpenCL
- 21. Czy Android obsługuje OpenCL?
- 22. Mierzenie czasu wykonania OpenCL jądra
- 23. OpenCL - przyrostowe sumowanie podczas obliczeń
- 24. Running nosetests for pyspark
- 25. Niestandardowe typy w jądrze OpenCL
- 26. Różnica między OpenCV a OpenCL
- 27. Jak konstruować duże jądra OpenCL?
- 28. Jak uzyskać pakiet OpenCL SDK?
- 29. Czy opencl obsługuje zmienne boolean?
- 30. Umieścić V8 w aplikacji OpenCL?
Ow. tnx .. wygląda na to, że pobierałem PyOpenCL nie z oficjalnej strony .. i dlatego nie znalazłem dokumentacji do tego ... –
@Ai_boy: oczywiście, nie ma problemu. –