佛性SEO

 找回密码
立即注册
查看: 71|回复: 0

太极(Taichi)编程语 言 及其设 计目标

[复制链接]

600

主题

600

帖子

491

积分

积分
491
发表于 2023-2-25 14:21:23 | 显示全部楼层 |阅读模式
  为了解决之前提到的问题,我们设计了Taichi编程语言。Taichi在设计之初就注重通过提供领域特定语言抽象(domain-specific language abstractions)与编译优化(compiler optimizations)来同时达到高生产力和高性能,并满足新兴视觉计算模式的需求。其可移植性通过多后端(multiple backends)的设计来达到,包括x64,ARM,CUDA,Metal,OpenGL compute shader等。

  范围(scope)

  Taichi主要面向以并行for循环+命令式编程为主体的计算任务。利用多核处理器进行并行编程已成为高性能计算的主旋律,而命令式(Imperative,区别于函数式functional)的编程范式更为贴近处理器和高性能程序员的编程习惯。许多视觉计算任务的计算模式也属于这个范围。比如在图像处理、计算物理等任务中,常常需要以并行的方式遍历所有的像素(或粒子、网格、节点等),在Taichi中这些模式均可以表达为一个并行for循环。(注:类似的描述包括SIMD/SPMD/SIMT,如OpenMP parallel for、CUDA kernel等,本文不再对其中细微差异进行区分。)

  尽管Taichi尽力覆盖广泛的视觉计算任务,某些计算在Taichi的应用范围之外:

  具有领域特性硬件(domain-specific hardware)的任务;

  粒度(granularity)足够粗以至于函数调用、数据传输的开销可忽略,并且有高度优化的库解决方案的任务。

  具体来说

  传统渲染任务往往有着光栅化、光线追踪硬件的支持。实时图形API,如OpenGL、DirectX、Metal、Vulkan往往已经足够适用。

  视频编码、解码任务,常常有硬件编码、解码器的支持。

  使用标准层(如卷积、Batch normalization等)的深度神经网络,常常已经被深度学习框架,如TensorFlow/PyTorch较好地解决。

  尽管taichi并非为以上应用设计,我们确实需要考虑Taichi与以上系统的高效交互。良好设计的零拷贝(zero-copy API)通常是好的选择。比如,让OpenGL(用于渲染)的顶点着色器(vertex shader)直接读取Taichi生成的compute shader(用于模拟)的粒子位置数据是非常有帮助的。另一个例子是Taichi的PyTorch界面允许(可微)的Taichi程序深度嵌入PyTorch,使其能够直接用于深度神经网络的训练、推理之中。taichi https://taichi-lang.cn/

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

  • 外链吧 | 雨住水巷 | 五金修配网 | 免费优化 | 全能百科 | 万能社区 | 链接购买
  • 在线咨询

  • 外链吧正规seo交流2群

    QQ|手机版|小黑屋|佛性SEO |网站地图|网站地图

    GMT+8, 2024-11-15 21:24 , Processed in 0.105667 second(s), 25 queries .

    快速回复 返回顶部 返回列表