Can I render the viewport with CUDA?
I think you are missing the point of what CUDA is. CUDA is a tooklit for running calculations on a gpu that are not part of a 'normal' graphics display pipeline. In the case of the viewport, rendering is already happening on the gpu using this normal display pipeline (in this case, opengl is the API used to communicate with the gpu). 

The fact that playback is slow, and most time is spent on the cpu suggests that the performance bottleneck is somewhere other than rendering. The most likely case for this are modifiers, if they are doing expensive recalculation each frame. Many modifiers in blender are not efficiently multithreaded. Try disabling or tuning as many as possible (e.g hide corrective smoothing, subdivision etc). You may also want to look at limiting the number of armature weights per vertex, as this can cause reduced performance too.