jittor中使用gpu和cpu的算法有些不同

当我在用jittor.nn.matmul()函数进行多维矩阵乘法时注意到函数定义里有这么一段:

 if jt.flags.use_cuda and jt.compile_extern.cublas_ops:
    return jt.compile_extern.cublas_ops.cublas_batched_matmul(a, b, 0, 0)

也就是说你设置了 jt.flags.use_cuda = 1之后,jittor会优先用为gpu定义的函数进行运算,但是这两个函数的运算方式有些不同,具体表现在:

当我关闭cuda的时候,运算维度为(270,480,3,1)和(1,1,3,3)的矩阵乘法不会报错(因为第一个矩阵的倒数第二维等于第二个矩阵的最后一维)。但是我使用cuda进行运算的时候就会弹出错误信息:a.shape[0] = b.shape[0]检测失败,也就是说使用cuda进行运算之后jittor会检测这两个函数的第一维是否相等,但不用cuda就不会检测,而且也不需要检测就能够运算,这让我一头雾水。

为了实验的进行,我把那两行注释掉了,我想问问这样除了效率之外会有什么影响,和为什么两种算法一个报错一个没报错,具体的错误信息如果需要,我做完实验会想办法复现一下这个bug