03 Feb 2023 : 最近一周,重新梳理了dnn上rrconv的codegen代码,dnn上rrconv fprop全部test跑通。dnn rrconv dgrad不能通过,部分case计算错误。rrconv cutlass dgrad全部通过。
2.2号来了,先检查dgrad的codegen部分代码,然后检查convolution_operation.h中的代码。最后检查dnn的exec逻辑和cutlass中是否一致
2.3: dnn的exec里面为啥diff,filter,grad的指针值都一样?是不是在dnn/src/cuda/cutlass/convolution_operation.h:798才初始化的这些指针?看起来在convolution_operation.h中initialize和run都已经是进入到cutlass kernel,如果昨天检查错误不在此,那么错误就在这之前了。检查参数和指针吧
看起来这个exec中的op->run是直接到了convolution_operation.h中的run
我认为,可以进一步确认cutlass rrconv是否真的正确,因为cutlass上的gt是一个naive,与dnn上的naive实现不同,需要确保其正确性。其次,rrconv cutlass的testcase是否还需要再进一步的丰富?我最后一次测试使用的bias=z=0,matA/matB = gaussian,rin=rout=uniformrng。
【rrconv dgrad错误的解决顺序】
rrconv cutlass naive正确
rrconv cutlass kernel各种testcase全部正确
rrconv dnn naive 正确
rrconv dnn kernel正确
15 Mar 2023 看下这个GEMM_TN/GEMM_NT具体什么影响?在DefaultMmaCore@432,这个src虽然是T,但仍然是K维度连续(advancerank=1),这代码没问题?测一下
标签:cutlass,快照,convolution,rrconv,naive,dnn,进度,operation From: https://www.cnblogs.com/ijpq/p/18098754