taichi debug方式总结
今天听了刘天添老师的课,总结一下taichi debug的方法
1 ti.init的设置(开启debug mode)
进行如下设置
ti.init(arch=ti.cpu, debug=True, excepthook=True, cpu_max_num_threads=1, advanced_optimization=False)
第一个表示用cpu
第二个表示debug mode,意味着开启断言
第三个表示使得报错更加美观
第四个表示单核运行
第五个表示关闭高级的编译优化
如图为更美观的报错
如图为一般的报错
2 print使用方法
- taichi不等同于python的print,有些功能如print(f"the i is {i}")不能用
- taichi的变量需要转为numpy数据才能输出
print用法1: 输出整个filed到csv
例子
(要import csv)
np.savetxt("out.csv", position.to_numpy(), delimiter=',')
这代表我有一个taichi的field,表示粒子的位置,名为position
把他输出到一个叫out.csv的文件里,用逗号分割,每行换行
用excel就可以打开
如图
print 用法2:format print
现在可以使用format print了,如下方法
print("\i is {}, j is {}:".format(i,j),end='')
类似于c++中的变量输出,按顺序填写
end=’'表示最后不换行
3 使用GUI看流场
例如我要看SPH结果的粒子
gui = ti.GUI("SPHDamBreak")
while gui.running: gui.circles(position.to_numpy(),radius=1.5,)
即可
4 使用断言
有两种,一种是python本身的断言,一种是ti.static_assert
4.1 assert
必须开启debug mode, 运行时断言
例如对一个数x求根号,那么当x输入为负数的时候自动报错。即将x断言为>=0
@ti.kernel
def sqroot(x:ti.f32)->ti.f32:assert x>=0sq=ti.sqrt(x)return sqsqroot(-99.1)
那么我传入了负数,就会如下报错
4.2 ti.static_assert()
编译时断言,不必开启debug mode
只能检查数据类型,容器形状和维度
一般搭配ti.template()使用
官方例子:
@ti.func
def copy(dst: ti.template(), src: ti.template()):ti.static_assert(dst.shape == src.shape, "copy() needs src and dst fields to be same shape")for I in ti.grouped(src):dst[I] = src[I]return x % 2 == 1
使用断言暂停的一些技巧
在定位bug位置的时候,使用
assert 1==2
可以保证在想要停下的位置停下,以确保之前的代码运行正确。
taichi debug方式总结相关推荐
- Scrapy的debug方式
Scrapy不方便调试,但是为了深入学习框架内部的一些原理,有时候仅仅依靠日志是不够的.下面提供一种scrapy的debug方式 demo直接用来自官方例子来演示:https://github.com ...
- InterlliJ Debug方式启动:Method breakpoints may dramatically slow down debugging
一:错误 debug方式启动idea的时候IDE 提示该问题,且启到mybatis的时候不动也不报错,原因是在方法上添加了断点,将断点取消即可. 二:解决 查看所有断点:: ...
- oracle的存储过程调试,oracle 运行普通方式及调试debug方式存储过程性能区别
调试某一存储过程时,在plsql developer debug调试执行时,20多分钟都执行不完, 后分析如下: 1,查询调试会话运行存储过程的对应sql select sid,serial#,eve ...
- tomcat源码分析(一)初始化---Debug方式
引用网址: http://tomcat.apache.org/tomcat-6.0-doc/architecture/startup/serverStartup.txt http://tomcat.a ...
- debug方式看Activity启动流程小记
Activity启动流程虽然很多博客讲了很多次了,但是这一次是自己的亲身体会 1.前言 debug需要gradle里面编译版本和官方模拟器api版本一致(这里源码是api25) 2.准备材料 1.ap ...
- php有哪些debug方式,Console有哪些Debug方法
这次给大家带来Console有哪些Debug方法,使用ConsoleDebug的注意事项有哪些,下面就是实战案例,一起来看一下. 前言 在过去的十年中,我最热衷的事情之一就是前端开发(特别是JavaS ...
- Android 8.1 Doze模式分析(五) Doze白名单及Debug方式
1.Doze模式下豁免的应用和白名单列表 1.什么是白名单列表? 一系列应用包名的集合. 2.有什么作用? 处于白名单列表中的应用,不受Doze的影响,即Doze不会对该应用进行限制,如该应用的Job ...
- 关于Debug和Release编译方式
问:怎么在VC6中把工程编译成release版本? 答:可以project->Set Active Config,选中release版本.此后,按F5或F7编译所得的结果就是release版本. ...
- Debug 和 Release 编译方式
Debug 和 Release 编译方式的区别本文主要包含如下内容: 1. Debug 和 Release 编译方式的本质区别 2. 哪些情况下 Release 版会出错 3. 怎样"调试& ...
最新文章
- idea崩溃导致的svn插件丢失问题, maven dependencies视图丢失问题
- MySQL 的性能(下篇)—— 性能优化方法
- spring根据名称获取bean_带你从零开始手写 spring ioc 框架,深入学习 spring 源码
- Kafka常用操作命令总结
- python的numpy库的基本用法_python numpy库np.percentile用法说明
- ​多任务学习漫谈:行梯度之事
- 可以公开访问的 SAP gateway demo system ES5/002
- 比较全的log4j示例
- 在C语言中如何让常量起作用,解析C语言中如何正确使用const
- 《Business Rules Engine Overview》--《业务规则引擎概述》write by Mark Kamoski
- pod install速度慢解决方案
- UVA1226 LA3997 Numerical surprises【大数】
- PowerPhotos:Mac照片库管理软件
- 英雄联盟大乱斗一个队出现两个杰斯-多线程死锁
- python寻找完全平方数_279 完全平方数(bfs)
- 尾气冒黑烟是什么问题_汽车排气管冒黑烟,怎么回事?
- 失语者的狂欢,觉醒者的自焚 ——《杀生》影评
- 用户路径分析之利器“桑基图”
- Android 仿微信实现语音聊天功能
- JavaScript中的计时器与定时器