【问题标题】:Typecasting a JNI Java array to NEON将 JNI Java 数组类型转换为 NEON
【发布时间】:2011-08-09 14:22:21
【问题描述】:

我相信人们一直都在这样做,但我在这里过得很艰难。我将浮点数组传递给 JNI 函数,但随后我打算使用 ARM 的 NEON SIMD 功能对这个数组执行一些操作。无论如何,我都不是 C 专家,所以我有点卡住了。这是我正在尝试做的事情的草图。

JNIEXPORT jfloatArray JNICALL Java_com_blah (JNIEnv *env, jobject obj, jfloatArray input)
{
    jfloat * x;
    float32_t * y;

    x = (*env)->GetFloatArrayElements(env,input,0);

    // Assign x to y

    // Perform some stuff on y

    // Return y as a Java float array back to caller

}

我必须想出如何使用 C 对整个数组进行类型转换。此外,也许有一种方法可以在从 Java (x = (*env)->GetFloatArrayElements(env,input,0)) 中提取数组条目时直接执行此操作。这样做的正确方法是什么?

【问题讨论】:

    标签: android java-native-interface type-conversion simd neon


    【解决方案1】:

    我认为您不必将整个数组分配给 y。如果您确定必须这样做,那么您可以使用 GetArrayLength 来查找浮点数组的大小。一个一个地复制元素。执行您的工作,然后创建一个新的浮点数组。
    一定要调用ReleaseFloatArrayElements,否则会有泄漏。

    【讨论】:

      猜你喜欢
      • 2011-09-12
      • 1970-01-01
      • 2014-10-09
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      • 2013-04-23
      相关资源
      最近更新 更多