Games 201 高级物理引擎实战_问题与知识总结

本博客仅用于记录自己在学习胡渊鸣老师的Games 201 高级物理引擎实战课程中,遇到的问题以及知识总结,不定时更新。如有侵权,请联系, 删除处理。有内容问题欢迎批评指出。

课程相关链接:
Games201 常用链接(上面的论坛帖子里也有)
GAMES 的主页【201相关链接在:导航栏/在线课程/GAMES201】
课程主页:https://www.cnblogs.com/marsggbo/p/13033357.html
Taichi 论坛 forum.taichi.graphics/c/games201/ ; 记得在 GAMES201的版块发帖,其余板块用的是英文
课程课件 github.com/taichi-dev/games201/releases
Taichi 主页 github.com/taichi-dev/taichi
Taichi 中文文档 taichi.readthedocs.io/zh_CN/latest
直播地址 webinar.games-cn.org

问题总结

一、代码运行错误

1. “OSError: could not get source code”

在这里插入图片描述
问题描述: 只要是加了 @ t i . k e r n e l @ti.kernel @ti.kernel 命令后的函数,在调用时就会出现 " O S E r r o r : c o u l d n o t g e t s o u r c e c o d e " "OSError: could not get source code" "OSError:couldnotgetsourcecode"错误。并且在win运行没有错误,ubantu 16运行时出现的这个问题。

问题原因: 在bash或者idle直接运行时会报这个错误,可以考虑切换到jupyter或者iPython。

问题解决: 由于我是远程使用,jupyter操作不顺,于是就直接安装ipython,输入 i p y t h o n ipython ipython命令即可使用。(可搜索安装教程操作)


知识总结

1. cuda中前缀global、host和device的区别

CUDA 三种前缀分别用于在定义函数时限定该函数的调用和执行方式,例如:
(1)host int foo(int a){}与C或者C++中的foo(int a){}相同,是由CPU调用,由CPU执行的函数
(2)global int foo(int a){}表示一个内核函数,是一组由GPU执行的并行计算任务,以foo<<>>(a)的形式或者driver API的形式调用。目前__global__函数必须由CPU调用,并将并行计算任务发射到GPU的任务调用单元。随着GPU可编程能力的进一步提高,未来可能可以由GPU调用。
(3)device int foo(int a){}则表示一个由GPU中一个线程调用的函数。由于Tesla架构的GPU允许线程调用函数,因此实际上是将__device__ 函数以__inline形式展开后直接编译到二进制代码中实现的,并不是真正的函数。

总结:device前缀定义的函数只能在GPU上执行,所以device修饰的函数里面不能调用一般常见的函数;global前缀,CUDA允许能够在CPU,GPU两个设备上运行,但是也不能运行CPU里常见的函数;host前缀修饰的事普通函数,默认缺省,可以调用普通函数。

在深度学习框架中(例Caffe、Faster R-CNN),调用 CUDA函数,使代码加速。
源自转载,详见博客:cuda 函数前缀:device/global/host 相关问题

延伸到 Taichi 中函数和内核的区别:
在这里插入图片描述

2. bash 和shell的区别

shell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序。你在提示符下输入的每个命令都由shell先解释然后传给Linux内核。shell 是一个命令语言解释器(command-language interpreter)。拥有自己内建的 shell 命令集。此外,shell也能被系统中其他有效的Linux 实用程序和应用程序(utilities and application programs)所调用。

常用的shell:在Linux 和 UNIX系统里可以使用多种不同的shell可以使用。最常用的几种是 Bourne shell (sh), C shell (csh), 和 Korn shell (ksh)

bash: Bourne Again shell (bash), 正如它的名字所暗示的,是 Bourne shell 的扩展。bash 与 Bourne shell 完全向后兼容,并且在 Bourne shell 的基础上增加和增强了很多特性。bash 也包含了很多 C 和 Korn shell 里的优点。bash 有很灵活和强大的编程接口,同时又有很友好的用户界面。
源自转载,详见:什么是shell? bash和shell有什么关系?

查看当前shell版本及更改 shell 版本:
在这里插入图片描述
查看 shell 版本,对应的“ s h e l l 名 称 − − v e r s i o n shell名称 --version shellversion" 即可。
在这里插入图片描述
参考博客:https://www.cnblogs.com/20170722-kong/articles/8018452.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值