找回密码
 加入怎通
查看: 656|回复: 0

太极 (taichi) 图形编程语言的数据类型和作用域

[复制链接]
3065236092@qq.c 发表于 2023-04-15 11:28:37 | 显示全部楼层 |阅读模式
  之前我们介绍太极语言的ti.kernel内核的时候,提到它支持的参数类型,其中举例所i32和f32这两种,这是太极编程语言中的数据类型。机智客觉得在编程语言中,数据类型广泛用于函数和方法的参数中,比如在kernel中,比如在ti.field方法中,所以是基础,重要性毋庸置疑。# Q" K4 B- C" l) E$ X+ N
9 z, [0 Z; D/ n% r7 s, p
  和其他编程语言类似,太极目前的数据类型也有几种:有符号整数类型,无符号整数类型,浮点类型。太极不同的数据都是由数据类型和精度组成的。其中,Signed integers包含ti.i8,ti.i16,ti.i32,ti.i64。Unsigned integers类型则用u为前缀,比如ti.u8,ti.u16等。而浮点则有两种,ti.f32和ti.f64。机智客在以前的文章里提到的i32和f32,其实是太极语言里用得最普遍的。当然和其他编程语言不太一样的也有,太极语言的数据类型并不多,布尔类型则是由ti.i32表示。  @" Y: }/ q' Z2 V3 {
) r* @& R6 B- L. ?: n
  默认的数据类型精度都是32位。需要说明的是,CPU和CUDA后端支持所有的数据类型,而其他则由于后端API的约束,要参考相应后端的API才能确定是否缺少某些数据类型支持。# X0 u7 [- }) a: F" t" \" e, D9 m

" \6 a7 c2 y( }' _3 @) r& F  上面是太极语言的数据类型,可用于函数里的参数。太极语言规定只能是标量,返回也是。如果函数有返回值,则要指定返回数据类型。而且返回值也只能是一个标量(不能是两个以上),而不能是矢量或矩阵,哪怕Python中的元组也不行。所以参数可以有多个标量,而返回只能是一个标量。比如这段来源于英文文档中的代码片段。
5 s# l" {+ C& h  r7 d8 N/ r3 G" u: y1 D
/ f! H8 L5 b2 `4 v+ T   ti.kernel
* i3 J- K' x) j, K2 m$ u
. g( `( @& Z; d% B0 O  def my_kernel()->ti.f32:
) a! n' `# m4 I
. a; J8 e) t- T: s" r  return 233.33
, z+ x8 m: j' j; ^
( |1 `5 B4 h5 I' T, X4 G3 x/ s8 n. e  我们以前介绍过,太极语言的初始化,说过,初始化,也可以指定数据类型。这里说下,如果我们要设置初始化的数据类型,可以这样ti.init(default_ip=ti.i64,default_fp=ti.f32)。当然了,数据类型这块,还有很多其他细节知识,比如数据类型转化,矢量和矩阵的知识等。我们以后遇到再学习。$ i! f8 b" W3 T+ N4 V. e6 W! D
8 y1 Q$ w! l7 [2 d* s+ n. C! O' T
  taichi而关于太极语言的作用域,相信学习了上文或者以前文章的朋友,都了解了。其实就是 ti.kernel或 ti.func装饰的代码区域内。ti.kernel里的是太极内核,ti.func里的是太极函数。可以调用ti.func里的函数,也可以嵌套调用函数,然而不支持递归函数。外部就是普通Python代码了,不同代码不同处理,各找各妈,各归各管。如果用CUDA做类比的话,Taichi作用域等于device side。taichi https://taichi-lang.cn/7 k& \# J9 U! W& o2 k

2 P3 f; e1 t9 x  I# J/ [3 y$ d% j
! q. _- s; g, T5 S
回复

使用道具 举报

    您需要登录后才可以回帖 登录 | 加入怎通

    本版积分规则

    QQ|手机版|小黑屋|网站地图|真牛社区 ( 苏ICP备2023040716号-2 )

    GMT+8, 2026-7-6 23:44 , Processed in 0.036702 second(s), 25 queries , Gzip On.

    免责声明:本站信息来自互联网,本站不对其内容真实性负责,如有侵权等情况请联系420897364#qq.com(把#换成@)删除。

    Powered by Discuz! X3.5

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