Jittor / jittor

Jittor is a high-performance deep learning framework based on JIT compiling and meta-operators.
https://cg.cs.tsinghua.edu.cn/jittor/
Apache License 2.0
3.07k stars 307 forks source link

copy.deepcopy(jitttor.nn.Sequential)的时候会产生循环调用造成stackoverflow #566

Open krauwu opened 2 months ago

krauwu commented 2 months ago

采用的是目前的jittor版本(git下载并编译

在执行: block = jnn.Sequential( jnn.Conv2d(embed_dims, embed_dims // 2, kernel_size=3, padding=1), jnn.ReLU(), jnn.Conv2d(embed_dims // 2, embed_dims, kernel_size=1), ) NBlocks = 3
BLOCK= [copy.deepcopy(block) for
in range(N_Blocks)] 的时候会进入死循环;目测是 jnn.Sequential 的getattr的问题; def getattr(self, key): if key in self.layers: return self.layers[key] return super().getattr(key) 其中,在该死循环下, key是'deepcopy'

krauwu commented 2 months ago

另外、jittor的unique方法似乎随着cuda thrust库的版本替换出现了问题; 要在jt.code 头文件中添加 #include <thrust/sequence.h>

include <thrust/sort.h>

        #include <thrust/unique.h>