1 感想
南溪看了一些关于Taichi的资料,我感觉它就是“JIT+CUDA”的超强编译器,既具有“CUDA-C++”的超快速度,而且像numba.jit
一样可以通过装饰器的方式使用,比较方便;
Note:
需要注意的是,Taichi跟原生PyTorch一样也不能基于Dataloader在dataset.__getitem__()
中调用GPU来进行数据预处理。
Taichi具有具有以下库的同等作用:
- 类似OpenCV:基本的图像处理操作;
2 CPU优化性能:比不上PyTorch
下面的结果是我们比较Taichi和PyTorch在进行sum运算时的性能,可以看到,对于一维向量的求和操作在CPU上的性能,PyTorch的运算速度要比Taichi要快;
3 控制流
3.1 For-loop:仅最外层的for循环会被优化
今天在Taichi-Slack上看到一个有趣的问题:“Is it possible to format the for loop in such a way shown in the figure, putting a parallel-for in side a serial-for? Will the inside for loop be parallel?”,这里的关键是讨论Taichi是否可以优化多层循环;
答案是:Taichi只会优化最外层的for循环(No, only the for loop in the outermost scope can be parallelized.)。
Note
这也许就是为什么Taichi给出的demo中常常会使用单层for循环的原因。