ThreadPool和ParallelExecutor

各位好,

我想请教下taichi实现的ThreadPool和ParallelExecutor最主要的区别是什么呢?在我看来这两个东西的用处是比较类似的,都是实现对于函数运行的多线程管理,不过ThreadPool的代码看起来更复杂一点,我没有完全读懂,希望有大佬帮忙指点一下,感谢!

Hi LLin,
这两个在实现的时候分别针对不同粒度的并行任务:

ThreadPool是对Kernel内部 “for loop” 的并行处理,其中每个线程每次处理一轮或几轮loop。

ParallelExecutor是针对更大粒度的并行处理,比如对 “一整个Kernel的编译/执行” 进行并行。其中每个线程负责不同Kernel的编译,或每个线程负责不同Kernel的执行这样。

另外ParallelExecutor目前只在有限的场景下收益比较大,可能需要重新设计、优化,所以目前没有太多的应用。

了解了,感谢回复!