Like Ixrec said, you need to test/profile this yourself. If CPU to GPU data transfer is your bottleneck, then CPU-side culling would benefit you. If profiling suggests that a lot of time is wasted during vertex processing because most of the vertices are outside the clipping planes and discarded then CPU-side culling would also benefit you. The GPU is smart when it comes to this. It doesn't really "draw" primitives that are outside the view frustum. Vertices are discarded early to save the rest of the pipeline from rendering primitives that aren't going to contribute to the final framebuffer anyway.
As a general rule of thumb, the earlier you discard data, the more processing you can save. Just don't do this unless there is an imbalance between CPU and GPU load already. It makes little sense to do CPU culling if the CPU is already at 100% load and the GPU is idle most of the time.