Hacker News new | ask | show | jobs
by paperwork 3700 days ago
Can someone provide a quick overview of the current GPU landscape?

There seems to be Nvidia's pascal, gtx, titan, etc. Something called geforce. And I believe these are just from Nvidia.

If I'm interested in building out a desktop with a gpu for: 1. Learning computation on GPU (matrix math such as speeing up linear regression, deep learning, cuda) using c++11 2. Trying out oculus rift

Is this the right card? Note that I'm not building production models. I'm learning to use gpus. I'm also not a gamer, but am intrigued by oculus. Which GPU should I look at?

5 comments

Do you need FP64? If so, right now the OG GTX Titan is the default choice - it offers full double-precision performance with 6 GB of VRAM. There's nothing better south of $3000.

If not, the 980 Ti or Titan X offer excellent deep learning performance, albeit only at FP32. And their scheduling/preemption is not entirely there, they may not be as capable of Dynamic Parallelism as Kepler was. The 780 Ti is actually a more capable card in some respects.

The new consumer Pascal cards will almost certainly not support FP64, NVIDIA has considered that a Quadro/Tesla feature since the OG Titan. If DP performance is a critical feature for you and you need more performance than an OG Titan will deliver, you want the new Tesla P100 compute cards, and you'll have to convince NVIDIA you're worthwhile and pay a 10x premium for it if you want it within the next 6 months. But they probably will support compute better, although you should wait for confirmation before spending a bunch of money...

For VR stuff or deep learning, the consumer Pascal cards sound ideal. Get a 1070 or 1080, definitely. The (purportedly) improved preemption performance alone justifies the premium over Maxwell, and the FP16 capability will significantly accelerate deep learning (FP16 vs FP32 is not a significant difference in overall net output in deep learning).

Question following up on the remark "Do you need FP64? If so, right now the OG GTX Titan is the default choice"

I am purely after FP64 performance for scientific compute.

a) what does the "OG" stand for? b) what about the titan black model? seems to offer yet a bit more FP64 performance than the normal Titan?

nothing better south of 3k$? does that include the new amd duo pro? or is that just useful for VR?
The AMD Pro Duo seems aimed at the workstation/rendering market rather than the compute market.

NVIDIA is totally dominant in the compute market. They have an enormous amount of software running on CUDA that you would be locking yourself out of with AMD, and since NVIDIA has such a dominant share of the compute hardware you would also be tuning for what amounts to niche hardware.

AMD has recently been working on getting a CUDA compatibility layer working, hopefully this will improve in the future.

The other replies cover what's best for machine learning, but as for your terminology question:

- Pascal: codename for Nvidia's latest microarchitecture, used in the new GeForce 10-series announced today. (AMD counterpart is "Polaris".)

- GeForce: Nvidia's consumer graphics card brand. (AMD equivalent is "Radeon".)

- GTX: label for GeForce graphics cards meant for gaming and other demanding tasks (see AMD Radeon "R9").

- Titan: special name for super high-end GeForce graphics cards. (For AMD, see "Fury".)

You might also encounter Nvidia Quadro graphics cards (comparable to AMD FirePro), which are meant for professional workstations, and Nvidia Tesla graphics cards, which target high performance computing.

If you have any interest in deep learning, NVIDIA is your only option. They are miles ahead of everyone else. For deep learning the 1080 is the best option. You'll be waiting for models to train and the extra money is well worth the many hours it will save you. If you aren't serious about deep learning then get the 1070, it's more than enough for VR and CUDA experimentation. Or, if you just can't wait until June (or July/August with supply constraints probably), get a 970 now (min spec for VR).

The 1080 will probably be the best card available until next year, when HBM2 cards (~3x memory bandwidth) reach general availability. I'm hoping for a 1080 Ti or a new Titan then.

Question:

What are the characteristics of NVIDIA GPUs that make them superior for deep learning applications?

Phrased another way, if you're designing a card specifically to be good for training deep neural nets, how does it come out differently from cards designed to be good at other typical applications of GPGPU?

Nvidia's main advantage over AMD for deep learning is software, not the hardware itself. Nvidia's software advantage has lead to network effects where almost all GPU supporting deep learning libraries build on top of Nvidia. There's no Tensorflow/Theano/Torch/Keras/etc for AMD/OpenCL for the most part. Nvidia also releases high performance kernels for common neural net operations (such as matrix multiply and convolution).

On the hardware end, Nvidia has slightly superior floating point performance (which is the only thing that matters for neural nets). Pascal also contains 16 bit floating point instructions, which will also be a big boost to neural net training performance.

That makes a lot of sense about the software.

I would be interested to hear about the difference in floating point performance. I would have guessed that, at this point, pretty much every chip designer in the world knows equally well how to make a floating-point multiplier. So it must be that nvidia vs amd have made different trade-offs in when it comes to caching memory near the FP registers or some such thing?

I'm unsure about the floating point performance differences, but 2 other reasons for potential differences are (1) number of floating point units and (2) different clock speeds.
It doesn't hurt that the Titan X and it's professional counterpart have 12 GB of VRAM.
Buy a GTX 1070 if you are on a "budget" (around $350ish, comes out June 10th) or a GTX 1080 if not ($600ish, comes out may 27th). Do not buy a Titan model unless you feel you really need to work with 64 bit numbers on the GPU (32 bit floats should cover most of your cases).
I would get a NVIDIA card that Oculus recommends. Any card that can support Oculus Rift will have more than enough power for learning GPU computation.