tvm原理入门及FAQ

官方的矩阵相加的示例如下:

2个矩阵相加的实现

for (int i = 0; i < n; ++i) {
  C[i] = A[i] + B[i];
}

怎么优化? 可以并行相加,如下

for (int bx = 0; bx < ceil(n / 64); ++bx) {
  for (int tx = 0; tx < 64; ++tx) {
    int i = bx * 64 + tx;
    if (i < n) {
      C[i] = A[i] + B[i];
    }
  }
}

其实,就是把循环继续拆,一个循环拆成2个循环。

https://docs.tvm.ai/faq.html

TVM和其他框架比如NNVM、XLA的区别?

在tvm看来,nnvm和xla都是计算图级别的优化,属于high level优化,注意做的是内存复用、布局转换和自动微分。

而tvm采用的是一种low level的表示,进行的是内存布局、并行模式、局部性和硬件原语等优化。

TVM和libDNN、cuDNN关系?

tvm会去调用这些库,与这些库共存。

nnvm tensor operator

https://docs.tvm.ai/nnvm_top.html

分5个级别的op:

  • level 1: 基础op(34个)
  • level 2: 卷积op(6个)
  • level 3: 其他tensor op(19个)
  • level 4: 广播和约简op(39个)
  • level 5: 视觉op(5个)

你可能感兴趣的:(tvm原理入门及FAQ)