Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android中的浮点矢量化_Android_Android Ndk_Arm_Vectorization_Neon - Fatal编程技术网

Android中的浮点矢量化

Android中的浮点矢量化,android,android-ndk,arm,vectorization,neon,Android,Android Ndk,Arm,Vectorization,Neon,我计算了很多从n维(10-39)点到阵列的距离实例。我希望Android 4.0+的速度尽可能快,特别是Galaxy S3。 我已经让硬件FPU工作了,但听说你可以通过矢量化和霓虹灯来加快速度。 然而,像这样的问题并没有给我一个简单的答案 我可以在S3中使用这种矢量化的最简单方法是什么?一个例子显示了这种计算的加速(n dim point distance to n dim vector) 以下是循环代码: // go through each point in the vector for (

我计算了很多从n维(10-39)点到阵列的距离实例。我希望Android 4.0+的速度尽可能快,特别是Galaxy S3。 我已经让硬件FPU工作了,但听说你可以通过矢量化和霓虹灯来加快速度。 然而,像这样的问题并没有给我一个简单的答案

我可以在S3中使用这种矢量化的最简单方法是什么?一个例子显示了这种计算的加速(n dim point distance to n dim vector)

以下是循环代码:

// go through each point in the vector
for (bi=0; bi<sizeOfVect; bi++) { 
    r[bi] = 0.0; // initialise distance

    //calculate distance in each dimension (d is 10-39 depending)
    for (di=0; di<d; di++) { 
        rj[di] = s1[i*d+di] - b[bi*d+di]; 
            // s1 is the n dim point, b is the vector array
        r[bi] += rj[di]*rj[di];
    }
}
//遍历向量中的每个点

对于(bi=0;bi要使用GPU为您执行计算,有两条路线:

    <> LI>:使用Android原生开发工具包,C++中用特定于硬件(NEON)的调用来创建代码,以加快算法的速度。
  • :您将使用Renderscript计算API来处理所有数据,并让框架在CPU和GPU之间自动并行

我从未使用过它们中的任何一种,但是如果我必须为特定的应用程序选择一种路径,我会尝试使用renderscript,因为它是一种针对所有设备类型的解决方案(适用于ICS及以上)的代码。

要使用GPU为您执行计算,有两种路径:

    <> LI>:使用Android原生开发工具包,C++中用特定于硬件(NEON)的调用来创建代码,以加快算法的速度。
  • :您将使用Renderscript计算API来处理所有数据,并让框架在CPU和GPU之间自动并行

我从未使用过其中任何一种,但如果我必须为特定的应用程序选择一种方法,我会尝试使用renderscript,因为它是一种针对所有设备的代码类型的解决方案(适用于ICS及以上)

您有两种选择可以从CPU获得矢量化(侧重于ARM);编译器可以帮助您,也可以自己完成

您可以通过编写汇编或使用


您可以从编译器获得帮助,但随后必须编写可矢量化的代码。有关如何实现此目的的示例,请参见此。

您有两个选项可以从CPU获得矢量化(重点是ARM);编译器可以帮您或您自己完成

您可以通过编写汇编或使用

您可以从编译器获得帮助,但您必须编写可矢量化的代码。有关如何获得此代码的示例,请参见此