The code seems to work for me using your custom module:
conv = SuperConv2d(10, 10, 3, 1, 1).cuda()
x = torch.randn(10, 10, 24, 24).cuda()

config = {'channel': 2}

with torch.cuda.amp.autocast():
    out = conv(x, config)

print(out.dtype)
> torch.float16

Could you check, what might be the difference in my code snippet?