Why Taichi (1): 为什么设计新的编程语言?

您好,欢迎访问我们的网站,我们将竭诚为您服务!

Why Taichi (1): 为什么设计新的编程语言?

时间:2022-10-16 23:24:42 阅读:106
胡渊鸣是太极图形联合创始人兼CEO,麻省理工学院计算机科学博士(2021年3月通过MIT EECS Ph.D.thesis defense)。主要研究方向为计算机图形学与编译器。胡渊鸣博士2017年7月本科毕业于清华大学姚班。

  匡冶是太极图形联合创始人兼CTO,前Google软件工程师。匡冶拥有哈佛大学计算机科学硕士学位、清华大学学士学位。

  太极图形(Taichi Graphics)公司主导开发开源基础设施太极(Taichi)编程语言,专注图形学、编译器、高性能计算、人工智能相关技术,拥有世界领先的技术积累。团队成员均来自麻省理工学院、哈佛、宾夕法尼亚大学、清华、Google、微软等顶尖学府和企业,54%+成员本科毕业于清华大学,人均IOI/NOI/ACM-ICPC金牌数>=2。团队旨在打造图形计算、物理仿真的标准基础设施,让图形编程惠及每一人。

  从图像处理、真实感渲染到物理模拟、VR/AR,视觉计算(visual computing)任务在当今社会已经无处不在,成为连接物理世界与数字世界的桥梁。挑战与机遇并存,视觉计算任务通常需要极高的性能以处理海量数据,如视频、粒子、体积、网格等。研究者和开发人员投入了大量精力去设计和优化相关的视觉计算硬件(多核CPU、大规模并行GPU、以及DSP)、软件(如渲染器及物理引擎等)和算法(如快速傅里叶变换、多重网格算法等)。这里的讨论集中于视觉计算的软件开发部分。

  本系列文章部分译自胡渊鸣同学的在麻省理工学院的博士论文"The Taichi High-Performance and Differentiable Programming Language for Sparse and Quantized Visual Computing",意在回顾、探讨Taichi视觉计算编程语言的一系列工作。话题包括:

  为什么需要新的视觉计算编程语言?

  高度优化的视觉计算软件系统通常用相对接近硬件的语言(如C++、CUDA、GLSL等)来实现。这些语言提供了编写高性能程序的可能性。不幸的是,仅仅使用(而不进一步优化)一个接近硬件的语言是不够的。视觉计算任务对于高分辨率和实时性能的需求,通常意味着只有通过复杂且有挑战性的性能工程(performance engineering),才能使得一个能工作的系统达到理想的性能。

  一个高度优化的视觉计算程序常常可以比一个实现合理的C++/CUDA程序快一个数量级。比如说,一个移动最小二乘物质点法(Moving Least Squares Material Point Method,MLS-MPM,SIGGRAPH 2018)中的粒子到网格(Particle-to-grid,P2G)程序,经过合理的C++性能工程,在同样的硬件上能够达到一个朴素实现的7倍的性能。其中,性能提升来自使用SSE的4-wide向量化、用软件实现能够在L-1 data cache缓存全局稀疏数据结构上局部节点的数据的机制、循环展开等。

  生产力、性能、可移植性取舍

  宏观上,传统编程语言往往面临生产力和性能的取舍。类似C++和CUDA的语言往往自身就有一定学习难度。其中高级特性,如模板元编程(Template meta-programming),虽然合理使用后能够实现代码到计算硬件的直接映射(direct mapping to hardware)与零开销抽象(zero-overhead abstraction)以达到高性能,但是其学习难度往往让新手望而生畏。另外,要开发高性能视觉计算系统,开发者需要对于C++编译过程、乃至计算机体系结构的深入理解。用一句话总结,一个基本的C++程序本身通常不会为视觉计算等任务带来高性能,而向量化、循环展开、加速数据结构、内存排布优化、数据压缩等性能优化技巧,会让代码非常难以阅读、维护和调试。

  另一方面,taichi传统编程语言通常缺乏可移植性,并且常常将软件实现与硬件捆绑。最简单的例子是C++和CUDA会限制程序仅能在CPU或NVIDIA GPU上运行。这对于视觉计算任务往往是难以接受的,因为视觉计算可以在任何地方发生,从配备高端GPU的工作站到没有GPU的移动设备-开发者可能会希望在没有GPU的时候程序能够自动选择CPU运行。我们需要一个可移植的编程系统使得同样一段代码能够在不同平台运行。taichi https://taichi-lang.cn/
郑重声明:文章内容来自互联网,纯属作者个人观点,仅供参考,并不代表本站立场 ,版权归原作者所有!

上一篇:太极(Taichi)编程语言及其设计目标

下一篇:乐刷依托总部优势,打造高品质支付体验

相关推荐

返回顶部