I have run the molecular dynamics (MD) code GROMACS on a Ubuntu Linux cluster consisting of nodes containing 24 Intel Xeon CPUs. My particular point of interest turns out to be somewhat sensitive to floating point arithmetic precision, so I have had to run GROMACS in double precision rather than single precision -- despite double precision's higher computational cost. So on the cluster, I have compiled GROMACS in double precision.

I am considering purchasing some GPUs, since there may be a speed-up relative ("GPU acceleration") to CPUs. However, I need a GPU that will allow me to do double precision arithmetic. Do you know if such hardware is commercially available? A recent post on the GROMACS mailing list suggests that double precision GPUs are not commercially available:

The hardware does not support it [double precision arithmetic] yet AFAIK.

This Wikipedia page seems to suggest that double precision GPUs are uncommon since they may be inefficient:

The implementations of floating point on Nvidia GPUs are mostly IEEE compliant; however, this is not true across all vendors. This has implications for correctness which are considered important to some scientific applications. While 64-bit floating point values (double precision float) are commonly available on CPUs, these are not universally supported on GPUs; some GPU architectures sacrifice IEEE compliance while others lack double-precision altogether. There have been efforts to emulate double-precision floating point values on GPUs; however, the speed tradeoff negates any benefit to offloading the computation onto the GPU in the first place.

This NVIDIA Tesla page, in referencing "Peak double precision floating point performance" in the chart, seems to suggest that double precision calculations can, in fact, be done on their GPUs (albeit at higher computational cost).

So, what should I believe? Do you have any experience with this issue?

  • $\begingroup$ check out the gtx titan it is based on gk110 and has double pricision support .....although its bit costly.....around $1k $\endgroup$
    – user6691
    Nov 26 '13 at 6:59
  • $\begingroup$ Wikipedia does not always have current information about rapidly changing topics... $\endgroup$ Feb 22 '14 at 16:36

Double precision is fairly common on newer GPUs. For instance I own a NVIDIA GTX560 Ti (fairly low end when it comes to computing) that has no issue running ViennaCL in double precision. From here (section 4) it appears all NVIDIA cards from GTX4xx onward support double precision natively.

I would guess that the GROMACS information is simply outdated.

  • 5
    $\begingroup$ Very outdated. NVIDIA processors in particular have had double-precision support for years. Frankly, it was significantly slower than the single-precision capability, but it was there (and not just emulated) in the very first Tesla-branded GPUs, and probably before that. More recent incarnations have reduced the gap between signal and double-precision support considerably. $\endgroup$ Apr 15 '13 at 1:24
  • $\begingroup$ Yes, the paper I linked mentioned figures of approximately a factor of 8 difference in performance when emulation was needed, but now that the chips are designed for it, it is closer to a factor of 2. I would say this is likely due to on card memory latency from VRAM to the processors, but that is simply a guess on my part. $\endgroup$ Apr 15 '13 at 1:29
  • $\begingroup$ Actually the primary reason was that earlier GPUs simply did not devote much chip space to double-precision computation. According to this page, the GK110 series has 8 times as many double-precision units per "SMX block" (whatever that means) than the GK104 series. $\endgroup$ Apr 15 '13 at 1:35
  • 1
    $\begingroup$ Ah, yes, I was actually referring to the 2x difference of current GPUs in regards to the memory bandwidth comment. $\endgroup$ Apr 15 '13 at 1:40
  • $\begingroup$ Gotcha. I didn't mean to go down this rabbit hole. Your answer is fine, which is why I commented and voted you up instead of adding my own answer ;-) $\endgroup$ Apr 15 '13 at 2:02

Every GPU with SM 1.3 (Tesla/GTX2xx) or better has hardware double-precision support. Starting with the Fermi architecture, Quadro and Tesla variants have better double-precision support than consumer Ge Force models.

What's weird is that Ge Force Kepler/GTX6xx double-precision support is inferior to GeForce Fermi/GTX5xx support to improve Tesla differentiation in Kepler K20/K20x. Compounding the weirdness, Tesla K10s have Ge Force-level double-precision support. And most recently, this got thrown into complete disarray by the introduction of the Ge Force GTX Titan, which has full double-precision support and many CUDA features only present on Tesla models up to now. A GTX Titan costs ~$1,000 - a screaming bargain IMO.


You should also read the follow-up post from the GROMACS mailing list: http://lists.gromacs.org/pipermail/gmx-users/2013-April/080604.html. Whether or not the GPU implementation in the MD supports the use of double precision to a comparable extent is at least as important as whether double precision is available on the hardware.


According to this discussion, Tesla and Titan GPUs are most the suitable (of the Nvidia GPUs) for double precision.

Looking for example at a list of Nvidia GPUs on Wikipedia (a similar table for AMD GPUs is here) and comparing the single and double precision processing power (in terms of GFLOPs) one sees that double precision performance is much smaller than half the single precision performance for most other GPUs. For example for the GTX 900 series, the article mentions that the double precision performance is 1/32 of the single precision performance, while this Wikipedia article says that for the GTX 700 series, the double precision performance is 1/24 of the single precision performance (except for Titan where it can be as high as 1/3 of the single precision performance).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.