Games201_lecture9_高性能计算与物理引擎

Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎

1 计算机体系结构

Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
现在 的cache都做到cpu中了!
Games201_lecture9_高性能计算与物理引擎
一层cash不够用,搞了三层cash.
page tabel 虚拟内存map到物理内存。
c++地址没有内存保护,程序之间会有互相干扰。
地址之间的分离,安全性更高。
Games201_lecture9_高性能计算与物理引擎

Games201_lecture9_高性能计算与物理引擎
一个cpu core如下
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
cpu的处理能力和内存给你的数据的能力其差距就很大。
Games201_lecture9_高性能计算与物理引擎
现在的程序很多都卡在访存上了。
Games201_lecture9_高性能计算与物理引擎

如果提高你的计算性能,提高访存的局部性。

Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
粒子:
Games201_lecture9_高性能计算与物理引擎
B访问的是连续访存,所以快点。A中的指针跳跃比较大,所以慢点
Games201_lecture9_高性能计算与物理引擎
程序的运行时间与计算量有关系,但是没那么复杂,更大的是程序的访存。
Games201_lecture9_高性能计算与物理引擎

2 memory

看下面两本书吗,第五章
Games201_lecture9_高性能计算与物理引擎

Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎

3 CPU

Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
cpu的浮点数运算
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎

Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎

计算机体系结构越来越重要
计算是便宜的
但是从内存过来的资源是昂贵的。

Games201_lecture9_高性能计算与物理引擎

4 Taichi高级编程技巧

Games201_lecture9_高性能计算与物理引擎

1 高级数据data布局,访存更好

Games201_lecture9_高性能计算与物理引擎

dense SNode

最多支持8个下标。
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎

Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎

Games201_lecture9_高性能计算与物理引擎

Using coordinate space offsets

Games201_lecture9_高性能计算与物理引擎
编写无边界的simulation
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎

4 AOS和SOA

SOA在随机访问的时候利用率会很低。
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎

Games201_lecture9_高性能计算与物理引擎

6 Taichi 稀疏数据结构

Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
Taichi手openVDB启发很大
openVDB
稀疏数据
Games201_lecture9_高性能计算与物理引擎

Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
节约内存的计算,
Games201_lecture9_高性能计算与物理引擎

Pointer SNode

可以是空的
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
例子1:
Games201_lecture9_高性能计算与物理引擎
taichi很好的可以实现稀疏数据结构
Games201_lecture9_高性能计算与物理引擎
例子2
Games201_lecture9_高性能计算与物理引擎
例子3:
**Games201_lecture9_高性能计算与物理引擎
**

Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
Games201_lecture9_高性能计算与物理引擎
注意事项:
Games201_lecture9_高性能计算与物理引擎

6 总结

Games201_lecture9_高性能计算与物理引擎

7 视频

https://www.bilibili.com/video/BV1ZK411H7Hc?p=9