Mặc dù thời gian đã trôi qua kể từ câu hỏi ban đầu đã được hỏi, tôi nghĩ rằng đây vẫn là một câu hỏi cho rất nhiều nhà phát triển.
Có hai khía cạnh trong câu trả lời. Đầu tiên, không may là Google không hỗ trợ OpenCL chính thức.
Thứ hai, may thay, nhiều nhà cung cấp chip cung cấp thư viện của họ để hỗ trợ OpenCL. Hiện tại, hầu hết các điện thoại thông minh hàng đầu và trung cấp (với GPU Qualcomm Adreno, GPU ARM Mali hoặc GPU PowerVR tưởng tượng) đều bao gồm các thư viện OpenCL.
Để sử dụng OpenCL trên Android, có một số bước sau:
- kiểm tra nếu có OpenCL thư viện trên thiết bị. Điều này có thể được thực hiện bằng cách sử dụng OpenCL-Z Android. Đây là một công cụ tuyệt vời để kiểm tra tính khả dụng của OpenCL trên thiết bị Android và nó cũng cung cấp các chỉ số hiệu suất tính toán thô, có thể rất hữu ích.
Các thư viện OpenCL cho các nhà cung cấp chip lớn có thể được tìm thấy trong các thiết bị: Sau đây là vị trí của thư viện OpenCL:
Qualcomm Adreno:
/system/vendor/lib/libOpenCL.so
or /system/lib/libOpenCL.so (older devices)
ARM Mali:
/system/vendor/lib/egl/libGLES_mali.so
or /system/lib/egl/libGLES_mali.so
PowerVR:
/system/vendor/lib/libPVROCL.so
Viết chương trình OpenCL bạn sử dụng C hoặc C++
Tạo dự án NDK để biên dịch C/C++, và thử nghiệm chúng trên các thiết bị như thực thi.
Tạo giao diện JNI cho các chức năng chương trình NDK của bạn.
Tạo dự án Android, sử dụng các hàm JNI trong mã JAVA để gọi các hàm gốc có liên quan đến OpenCL.
Hướng dẫn sony là nguồn tốt để tham khảo. Các kỹ thuật được trình bày trong hướng dẫn đó có thể được áp dụng cho bất kỳ GPU Qualcomm Adreno nào. Với sự sửa đổi rất nhỏ, mã và các tệp makefiles cũng có thể chạy trên các thiết bị có khả năng OpenCL khác (như Mali và PowerVR).
Hy vọng điều này sẽ hữu ích.
Nguồn
2015-04-14 18:32:19
Tôi tự hỏi nếu bản cập nhật có thể theo thứ tự ở đây, sau khi đọc câu chuyện này về sự thích ứng của Intel đối với AMP của Microsoft vào OpenCL & llvm/Clang: http://www.phoronix.com/scan.php?page=news_item&px = MTIyOTk kết hợp với sự bao gồm cũng rất gần đây của llvm/Clang trong chuỗi công cụ NDK của Android: http://clang-developers.42468.n3.nabble.com/Clang-now-included-in-Android-NDK-r8c-td4028206 .html Chỉ xem xét điều này ngay bây giờ và chưa thử nó, tôi sẽ thử nghiệm và cung cấp tin tức về kết quả của tôi trong một bài đăng trong tương lai. – Jackalope