Хотя прошло время с тех пор, как был задан исходный вопрос, я думаю, что этот вопрос все еще остается вопросом для многих разработчиков.
В ответе есть два аспекта.
Во-первых, к сожалению, Google официально не поддерживает OpenCL.
Во-вторых, к счастью, многие производители микросхем предоставляют свои библиотеки для поддержки OpenCL. На данный момент большинство флагманов и смартфонов среднего уровня (с Qualcomm Adreno GPU, ARM Mali GPU или Imagination PowerVR GPU) включают библиотеки OpenCL.
Чтобы использовать OpenCL на Android, есть несколько шагов:
- проверить, есть ли библиотека OpenCL на устройстве. Это можно сделать с помощью OpenCL-Z Android . Это отличный инструмент для проверки доступности OpenCL на устройствах Android, а также предоставляет необработанные показатели производительности вычислений, которые могут быть очень полезны.
Библиотеки OpenCL для основных производителей микросхем можно найти в устройствах:
Ниже приведено расположение библиотеки OpenCL:
Qualcomm Adreno:
/system/vendor/lib/libOpenCL.so
or /system/lib/libOpenCL.so (older devices)
ARM Мали:
/system/vendor/lib/egl/libGLES_mali.so
or /system/lib/egl/libGLES_mali.so
PowerVR:
/system/vendor/lib/libPVROCL.so
Напишите вашу программу OpenCL, используя C или C ++
Создайте проект NDK для компиляции кода C / C ++ и протестируйте их на устройстве как исполняемые.
Создание интерфейса JNI для функций вашей программы NDK.
Создать проект Android, используя функции JNI в коде JAVA для вызова собственных функций, связанных с OpenCL.
Учебник по Sony является хорошим источником для ссылки. Методы, представленные в этом руководстве, могут быть применены к любому графическому процессору Qualcomm Adreno. С минимальными изменениями этот код и make-файлы могут также запускаться на других устройствах с поддержкой OpenCL (таких как Mali и PowerVR).
Надеюсь, это поможет.