请教,在debug和release下,编译器对cuda代码的编译会有怎样的差别,为什么会出现运行结果不一致的差别。
所能占用的GPU资源是不是也有差别,这种差别会不会造成结果不一致呢?
结果不一致是指用release模式运行结果正确,而debug模式就报错。而除去cuda部分的代码就没有区别。所以起码可以定位是由于cuda引起的运行结果不一致。
请教,在debug和release下,编译器对cuda代码的编译会有怎样的差别,为什么会出现运行结果不一致的差别。
所能占用的GPU资源是不是也有差别,这种差别会不会造成结果不一致呢?
结果不一致是指用release模式运行结果正确,而debug模式就报错。而除去cuda部分的代码就没有区别。所以起码可以定位是由于cuda引起的运行结果不一致。
还有一个现象就是在不同的数据规模下,同样使用debug模式,得到的结果也是一个可以运行,一个报错。而报错这个如果用release模式就没有问题。所以这个问题应该同时和debug模式和数据规模有关,请教这两者之间的关系是怎样的?
LZ您好:
1:debug和release两种编译模式下,编译出来的二进制代码是不同的,debug模式多了很多调试代码,并且更慢以及占用更多的GPU资源,比如寄存器用量等。
但是如果代码正确的话,两者的结果一般不会有什么区别。
2:关于您的问题,请您提供您报错的具体信息以及您的代码,以便确定问题所在。我们无法仅凭您这样简单的叙述就得知您的代码问题究竟在哪里。
祝您好运~
谢版主,只是代码涉密不便于公开,不过按照debug模式对资源占用的区别,可能还是由于超出某种限制引起的,等我查清了原因再来回复此贴,关于debug和release的编译区别,在哪里可以找到相关的资料?
LZ您好:
欢迎您进一步排查该问题,以确定是您的代码有BUG还是编译模式不同造成的。
如果可以押10个论坛CUDA币的话,我考虑押前者。
两种编译模式在device端的差别,原则上说您可以dump出汇编来看,以及可以从profiler结果看出资源占用的差别。但是我并不清楚哪个资料介绍了两者编译时的具体差别。希望了解这一点的网友/版主/原厂支持予以补充。
祝您调试顺利~