编程|太极编程语言别具一格的for循环,还是并行的

编程|太极编程语言别具一格的for循环,还是并行的

【编程|太极编程语言别具一格的for循环,还是并行的】太极编程语言是一种主要面向以并行for循环+命令式编程为主体的编程语言 , 利用多核处理器并行编程、贴近处理器和高性能程序员编程习惯的命令式 , 融入到太极(taichi)语言后 , 统统成了一个并行for循环 , 简洁明了 。 所以 , for循环简直就是灵魂的存在 。
并行嘛 , 怎能简简单单学Python代码一样 。 少不了要for循环 , 这几乎是一个必不可少的环节了 。 虽然说太极语言潜入了python , 使得编写样式也象是Python , 不过还是有不同的 , 比如这次学习的for循环 。 太极编程语言的循环——更具体一点是for循环 , 算是别具一格 , 与众不同 。 它分为年中循环形式:区间for循环 , 结构for循环 。

不管哪种 , 正如文章开头说的 , 太极编程面向以并行for循环 , 所以它其实是并行执行的循环 , 这个和平常我们熟悉的有点点不一样 。
在官方教学展示一段for循环代码时称 , 类似for i in range(10)这样的循环 , 在Python中和在@ti.kernel中并不一样 。 比如Python代码中这样会按顺序输出从0到9 , 而在太极kernel中由于是并行 , 可能输出不是从0到9 。 不过机智客在Ubuntu系统上多次测试这段代码 , 结果就是 , 不管是Python中还是太极的kernel中其实都一样 , 于是就不懂了 。
再分开聊两种循环形式 , 其中区间for循环和我们熟悉的诸如Python的for循环没什么区别 。 你循环套循环 , 也都可以 , 可以按照Python的写法编程 。 而结构for循环则很不同 。
按照官方的说法 , 它是Taichi稀疏计算(Sparse computation (WIP))的关键 。 它只会遍历稀疏张量中的活跃元素 。 对于稠密张量而言 , 所有元素都是活跃元素 。 在遍历张量元素的时候很有用 。 就类似于我们在做深度学习的时候处理张量 。
不过结构for循环只能用于内核的最外层作用域 , 同样是作用域的循环并行执行 , 而这个并行循环并不支持break语句 。 上面这个似乎很抽象是吧 。 其实机智客看文档的理解就是 , for循环是函数下的开头语句 , 你不能用判断或者别的语句放在循环代码之前 , 这个作用整个外层作用域的for循环 , 不接受直接break , 除非你又嵌套了其他for循环 , 才能在其他循环里使用break 。 看官方文档的说明 , 这两种for循环的写法 , 反倒是没有形式上的不同 。 所以乍一看 , 容易让人犯迷糊 , 也没什么 。