小编Arm*_*yan的帖子

车顶线模型:计算操作强度

说我有这样的玩具循环

float x[N];
float y[N];
for (int i = 1; i < N-1; i++)
    y[i] = a*(x[i-1] - x[i] + x[i+1])
Run Code Online (Sandbox Code Playgroud)

我假设我的缓存行是64字节(即足够大).然后我将(每帧)基本上2次访问RAM和3 FLOP:

  • 1(缓存)读访问:加载全部3 x[i-1], x[i], x[i+1]
  • 1写访问:存储 y[i]
  • 3 FLOP(1 mul,1 add,1 sub)

操作强度是错误的

OI = 3 FLOP /(2*4 BYTE)

如果我做这样的事情会发生什么

float x[N];
for (int i = 1; i < N-1; i++)
    x[i] = a*(x[i-1] - x[i] + x[i+1])
Run Code Online (Sandbox Code Playgroud)

请注意,现在已经没有y了.这是否意味着我现在只有一个RAM访问权限

  • 1(缓存)读/写:加载x[i-1], x[i], x[i+1],存储x[i]

或仍然2个RAM访问

  • 1(缓存)读:加载 x[i-1], x[i], x[i+1]
  • 1(缓存)写:存储 x[i]

因为在任何一种情况下操作强度OI …

c++ performance memory-bandwidth

7
推荐指数
1
解决办法
1375
查看次数

如何在 OpenGL 中标准化纹理空间的图像坐标?

假设我有一张尺寸为320x240的图像。现在,从sampler2D具有整数图像坐标的采样中ux, uy,我必须对[0,大小]范围内的纹理坐标进行标准化(大小可以是宽度或高度)。

现在,我想知道我是否应该像这样正常化

texture(image, vec2(ux/320.0, uy/240.0))
Run Code Online (Sandbox Code Playgroud)

或者像这样

texture(image, vec2(ux/319.0, uy/239.0))
Run Code Online (Sandbox Code Playgroud)

因为ux = 0 ... 319uy = 0 ... 239后一个实际上会覆盖[0, 1]的整个范围,对吗?这意味着0对应于例如最左边的像素,1对应于最右边的像素,对吧?

另外我想保持过滤,所以我不想使用texelFetch.

谁能告诉我一些关于这个的事情吗?谢谢。

opengl textures glsl texture-mapping

5
推荐指数
2
解决办法
7829
查看次数

将 CSC 转换为 CSR 的算法复杂性

CSC (compressed sparse column)我想知道从到 的转换的算法复杂度CSR (compressed sparse row)是多少?

说我有

  • 具有非零元素的CSCm x m矩阵A = csc(m,m)n
  • 具有非零元素的CSRm x m矩阵B = csr(m,m)n

CSC -> CSR现在我从with进行转换B = convert(A)


它的成本和复杂程度如何?谁能指导我完成它?或者澄清事情?谢谢

algorithm sparse-matrix asymptotic-complexity

5
推荐指数
1
解决办法
4206
查看次数

通过命令行(Makefile)手动创建android apk

问题

我想创建一个安卓应用

  • 仅通过vim&makefile
  • 没有 gradle,没有 ant,没有 maven,没有 android.mk 和所有其他东西

为什么?

它是为 android 设备包装的高性能 C++ 代码。

  • 因此,我不需要 99% 的 gradles 服务
  • 通过 gradle 为小程序构建 15 秒以上的时间?这是不可接受的。
  • 在 gradle 中加入原生代码是荒谬的。这些 gradle 家伙想出了一个实验性的ndk 插件,它不断改变语法。
  • 我只针对 ARMv8-A。我将有部分 AARCH64 汇编代码。我使用*.cpp在编译之前生成的预处理器 m4 。无法想象 gradle 有这方面的东西。

我的进步

我知道下面的步骤REQUIRED

  1. 通过from创建密钥库keytool$JAVA_HOME/bin
  2. 通过javacfrom编译源文件$JAVA_HOME/bin
  3. 通过from为设备创建Dalvik 可执行文件dx$ANDROID_HOME/built-tools
  4. .apk通过aaptfrom创建文件$ANDROID_HOME/built-tools
  5. 通过jarsignerfrom签署 apk 包$JAVA_HOME/bin
  6. 对齐 …

c++ android makefile gradle android-ndk

2
推荐指数
1
解决办法
1959
查看次数