【发布时间】:2015-10-15 04:48:57
【问题描述】:
我正在尝试编写一个使用 OpenCL 1.2(不用于分发,因此通用访问不是问题)进行计算的简短应用程序。但是,OpenCL 在 Android 上给我带来了一些麻烦。我的计算机上有 libopencl.so 文件和 AMD SDK 的 1.2 标头。问题是:我如何正确使用它们?
我在 gradle(最新版本)构建文件中的什么地方指定了这个,或者有人可以推荐一个好地方让我转向阅读这个吗?或者,我需要从理论上理解什么才能自己弄清楚 - 正确链接到 OpenCL 库需要什么?
我已经尝试过这里提到的答案: Android Studio fatal error: CL/cl.h No such file or directory
apply plugin: 'com.android.model.application'
model {
android {
compileSdkVersion = 21
buildToolsVersion ="22.0.1"
defaultConfig.with {
applicationId = "com.example.thing"
minSdkVersion.apiLevel = 14
targetSdkVersion.apiLevel = 14
}
}
/*
* native build settings
*/
android.ndk {
moduleName = "otherThing"
ldLibs += "log"
ldLibs += "android"
//cFlags "~/OpenCL1-2HeaderFiles"
}
android.buildTypes {
release {
isMinifyEnabled = false
proguardFiles += file('proguard-rules.txt')
}
}
android.productFlavors {
create("arm") {
ndk.abiFilters += "armeabi"
}
create("arm7") {
ndk.abiFilters += "armeabi-v7a"
}
create("arm8") {
ndk.abiFilters += "arm64-v8a"
}
create("x86") {
ndk.abiFilters += "x86"
}
create("x86-64") {
ndk.abiFilters += "x86_64"
}
create("mips") {
ndk.abiFilters += "mips"
}
create("mips-64") {
ndk.abiFilters += "mips64"
}
create("all")
}
}
谢谢
【问题讨论】:
-
因为 Android 和 OpenCL 并不是真正的好朋友(感谢 google 偏爱 RenderScript)。我建议您使用非库实现,使用 CLEW 作为基础,并从设备动态加载 .lib。在某些设备中,OpenCL 位于 libGLES_MALI.so 等其他库中,因此您需要加载它们。
标签: android android-studio opencl android-gradle-plugin build.gradle