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

机智客 2021-12-09 20:24:45

太极编程语言是一种主要面向以并行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循环的写法,反倒是没有形式上的不同。所以乍一看,容易让人犯迷糊,也没什么。

0 阅读:6014
评论列表
  • 2021-12-10 10:22

    def paint 改成 函数 运算名

  • 2021-12-12 22:48

    别在侮辱太极了。太极只能对应汉子而不是拉丁字母。

  • 2021-12-10 18:03

    猜测像素的循环应该会给GPU来做并行计算,可能是解释器或者编译器自动处理的。

  • 2021-12-14 09:37

    我嵌入式工作十年,C语言,C++,java,python我都会,最后学的python,我只用了两天就学会了,跟闹着玩一样的简单,库强大方便,做视觉验证时真的很快速方便,但是效率和运行速度真跟不上,嵌入式项目里,python不是好选项,但确实好助手

    Ծ‸Ծ 回复:
    高级开发语言只要学通一种再学其它应该不难,主要东西基本上就是那七个语句,最后只是编程思想与书写格式不同,再加上提供的包(库或函数)、运算符等细微差别,学的时候多注意一下应该能很快上手的
    沙漠死神内瑟斯 回复:
    第一次python是用记事本写的,结果他区分tab和空格,人在那儿郁闷一整天都没想明白问题出在哪儿
    机智客 回复:
    Python适合快速验证实现一些应用东西。多面手好助手,但未必是强悍的好语言
  • 2021-12-23 11:40

    c/c++ yyds,其他都是垃圾![睡觉]

    机智客 回复:
    学精C/C++,无敌
  • 2021-12-10 10:20

    比如print改成输出

  • 2021-12-10 10:20

    看不懂能开发那些中文函数名方法名的编程语言吗?吗

    该评论内容被举报过多已屏蔽 回复:
    找几个懂方言的程序员就可以了啊,用方言开发软件!!
    用户10xxx36 回复:
    这函数名起,avi转mp4就行了然后备注一下就知道是什么了。谁起管理员AVI转mp4

机智客

简介:始于计算机;陷于AI机器人等现代科技;终于,学傻了吧