GPUs are really good at doing math. The Achilles heel is when it comes to 64-bit double precision math. GPUs, at least consumer grade, are not built for high performance FP64. This is because they are targetted towards gamers and game developers, who do not really care about high precision compute. So vendors like NVIDIA and AMD do not cram FP64 compute cores in their GPUs.
For example, on a GTX 780, the FP64 performance is 1/24 FP32. Which means in an ideal case, running the same code by only changing float types to double types, would yield the double precision run time to be about 1/24th of the single precision time.

<iframe width="600" height="371" seamless frameborder="0" scrolling="no" src="https://docs.google.com/spreadsheets/d/1gEjX5751zdYWom0_JG1FFLhM17l0OyWbUgWK90of59Q/pubchart?oid=381229711&amp;format=interactive"></iframe>
<iframe width="600" height="371" seamless frameborder="0" scrolling="no" src="https://docs.google.com/spreadsheets/d/1gEjX5751zdYWom0_JG1FFLhM17l0OyWbUgWK90of59Q/pubchart?oid=722963661&amp;format=interactive"></iframe>
<iframe width="600" height="371" seamless frameborder="0" scrolling="no" src="https://docs.google.com/spreadsheets/d/1gEjX5751zdYWom0_JG1FFLhM17l0OyWbUgWK90of59Q/pubchart?oid=1083990145&amp;format=interactive"></iframe>
<iframe width="600" height="371" seamless frameborder="0" scrolling="no" src="https://docs.google.com/spreadsheets/d/1gEjX5751zdYWom0_JG1FFLhM17l0OyWbUgWK90of59Q/pubchart?oid=1438814030&amp;format=interactive"></iframe>

