Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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
Java android opengl矩阵类是否在计算中使用GPU?_Java_Android_Performance_Opengl Es_Matrix Multiplication - Fatal编程技术网

Java android opengl矩阵类是否在计算中使用GPU?

Java android opengl矩阵类是否在计算中使用GPU?,java,android,performance,opengl-es,matrix-multiplication,Java,Android,Performance,Opengl Es,Matrix Multiplication,如果是的话,最好的使用方法是什么 如果我使用它,我认为最好尽可能经常(在合理的范围内)使用它来使GPU饱和,这对吗 如果没有,什么是一个简单的方法来做很多矩阵乘法真的很快?我在Android Studio中使用Java。仅对一组4×4矩阵进行操作并不能真正受益于GPU加速。原因有四: 向GPU提交工作任务有一定的开销 尽管GPU是通过高带宽互连连接的,但从GPU到GPU的I/O带宽通常仍比CPU内存带宽低一个数量级 一组4×4矩阵很容易放入一级缓存 现代CPU有向量指令,基本上把整个4×4矩阵作

如果是的话,最好的使用方法是什么

如果我使用它,我认为最好尽可能经常(在合理的范围内)使用它来使GPU饱和,这对吗


如果没有,什么是一个简单的方法来做很多矩阵乘法真的很快?我在Android Studio中使用Java。

仅对一组4×4矩阵进行操作并不能真正受益于GPU加速。原因有四:

  • 向GPU提交工作任务有一定的开销
  • 尽管GPU是通过高带宽互连连接的,但从GPU到GPU的I/O带宽通常仍比CPU内存带宽低一个数量级
  • 一组4×4矩阵很容易放入一级缓存
  • 现代CPU有向量指令,基本上把整个4×4矩阵作为一个整体进行运算
  • 如果没有,什么是一个简单的方法来做很多矩阵乘法真的很快

    这实际上取决于数据类型:矩阵的总体分布是什么?矩阵集合之间发生了多少交换?您的矩阵访问主要是聚集读取还是分散写入


    有许多病态的情况下,单线程CPU的性能实际上超过了GPU。

    如果我有足够的4x4矩阵乘法,这会克服将其全部移动到GPU的开销吗?还是这些矩阵太小了?@FelixBrakel:盈亏平衡阈值实际上取决于平台。然而,典型的执行设置时间大约为1µs。所以你可以在CPU上做任何事情,比如说,如果你愿意只针对ARM,你可以通过NDK/JNI使用霓虹灯矢量化指令