bug记录:遇到的tinycudann编译的N种错误

1. 编译成功,但是import tinycudann报错找不到DLL

  1. 编译成功,但是import tinycudann的时候,报错:
    在这里插入图片描述
    开始打断点,搜索电脑文件,发现_75_c.py应该是存在的,但就是读不到。

发现其所在的文件夹名称并不是干净的tinycudann_bindings,而是有不少后缀。

在这里插入图片描述

而原本的tinycudann_bindings文件夹中,却只有一个pyd文件,猜测这个是找不到dll的原因,因此,将带有后缀的文件夹中的所有文件,即这三个文件:
bug记录:遇到的tinycudann编译的N种错误_第1张图片
拷贝到tinycudann_bindings文件夹中,发现生效。错误解除。

这次bug给我的启发主要是:

  1. 需要明确conda环境中的import模块与其他模块之间的工作关系,简单理解的话,大概是这样:当在Python程序中使用import语句导入一个模块时,Python解释器会在site_packages文件夹中查找该模块,并且加载它到内存中。我開始的時候,会以为是我的cuda库之类的没有装好,去倒腾了一下环境变量,发现未果。真正令我意识到可能是简单的命名问题的是源于这几句代码:
    bug记录:遇到的tinycudann编译的N种错误_第2张图片
    将其打印出来后,是:在这里插入图片描述

我才逐渐意识到,是不是有可能因为tinycudann_bindings里面并没有这个_75_C的py文件,然后才去检查,最终解决了问题。
2. 导致我误以为是cuda问题的很大原因其实是那句 DLL找不到,我以为是说系统库找不到,也不太熟悉_75_C是什么,感觉像是跟cuda有关的东西。但其实不是,而是其自身安装在site_packages里的库的读取除了些问题。这个给了我一些误导,之后可以注意一下。
3. 第三点的启发其实是,这个tinycudann我其实已经在不同的电脑里面,安装过了很多遍,包括与cuda相关的pybindings,也安装了几遍,但是每一次遇到的问题都蛮新鲜,以往都是过了就过了,继续往下走,去钻研算法原理,现在觉得,其实这些过程也很有意思,解决问题的过程,本身就值得记录和欣喜。

2. 编译tinycudann报错,expect “(”…

这个的原因主要是因为:
cuda11.3只支持到vs2019的16.9,不支持16.11.
而我的vs版本是2019 - 16.11。
这个其实在nerfstudio的document的QA部分有提到,但是没那么显眼,所以还是踩了点坑。

https://github.com/nerfstudio-project/nerfstudio/blob/main/docs/quickstart/installation.md#dependencies

【待补充文档FAQ对这个问题的补充】

你可能感兴趣的:(其他,bug,python,开发语言)