在流体计算中 Taichi kernel 的应用
时间:2022-10-30 21:49:52 阅读:80
什么样的场景适合使用ti.kernel
很多同学对于ti.kernel中的kernel这个术语可能有些陌生,其实kernel是来自于GPU运算的一个名词,其含义是被运行在GPU的计算核心上的运算代码。什么样的代码是适合被运行在GPU上的呢?往往是那些对大量数据进行重复类似同时又相互独立的计算,比如遍历屏幕上所有像素并对于每个像素点进行色彩计算的代码,图形程序员往往把他们做成一个一个的函数,并指定这样的函数为kernel,告诉编译器这些函数需要被大量计算核心并行执行。
-不适合使用ti.kernel的场景
当然并不是所有看上去是循环的计算都是可以做成kernel被并行化的。一个经典的例子是斐波那契数列的计算:由于每个后续数字的计算都是依赖于前面的结果的,这样的计算往往不适合被并行执行。放到计算流体力学中,不同时间层次间的推进由于需要依赖上个时间步的结果,也是不能被并行的,而每个时间层次在同一迭代层面上的计算则往往是可以被并行的。这部分kernel的应用区分我们也会在后续的计算流体相关博客中继续结合实例说明。
我们回顾并思考了数值流体计算的核心需求,其中计算量最大的往往是对2维或者3维数组进行的操作,而Taichi提供的并行加速机制非常适合用在此类的计算上,因此taichi完全可以用来做CFD相关的代码开发。作为社区活动的一环,我们拟定展开流体数值计算SIG(Special Interest Group)的活动,帮助大家一起学习交流使用Taichi进行CFD项目编写,现正在邀请社区成员填写问卷调查并加入群组,请有兴趣的同学不要错过!taichi https://taichi-lang.cn/
很多同学对于ti.kernel中的kernel这个术语可能有些陌生,其实kernel是来自于GPU运算的一个名词,其含义是被运行在GPU的计算核心上的运算代码。什么样的代码是适合被运行在GPU上的呢?往往是那些对大量数据进行重复类似同时又相互独立的计算,比如遍历屏幕上所有像素并对于每个像素点进行色彩计算的代码,图形程序员往往把他们做成一个一个的函数,并指定这样的函数为kernel,告诉编译器这些函数需要被大量计算核心并行执行。
-不适合使用ti.kernel的场景
当然并不是所有看上去是循环的计算都是可以做成kernel被并行化的。一个经典的例子是斐波那契数列的计算:由于每个后续数字的计算都是依赖于前面的结果的,这样的计算往往不适合被并行执行。放到计算流体力学中,不同时间层次间的推进由于需要依赖上个时间步的结果,也是不能被并行的,而每个时间层次在同一迭代层面上的计算则往往是可以被并行的。这部分kernel的应用区分我们也会在后续的计算流体相关博客中继续结合实例说明。
我们回顾并思考了数值流体计算的核心需求,其中计算量最大的往往是对2维或者3维数组进行的操作,而Taichi提供的并行加速机制非常适合用在此类的计算上,因此taichi完全可以用来做CFD相关的代码开发。作为社区活动的一环,我们拟定展开流体数值计算SIG(Special Interest Group)的活动,帮助大家一起学习交流使用Taichi进行CFD项目编写,现正在邀请社区成员填写问卷调查并加入群组,请有兴趣的同学不要错过!taichi https://taichi-lang.cn/
郑重声明:文章内容来自互联网,纯属作者个人观点,仅供参考,并不代表本站立场 ,版权归原作者所有!
相关推荐