Yes, you should send all the variables in cuda, but in addition you also need to send both the neural networks in cuda, in addition to the criterior (which contains the cost function).
Something like:
if opt.cuda:
    discriminator.cuda()
    generator.cuda()
    criterion.cuda()
    input, label = input.cuda(), label.cuda()

might do the trick.