Another alternative is to brew your own double precision transcendentals. If you really need the precision, then this seems like the only option at the moment. I was able to port the log2(double) function from the Cephes library to IL with good results. Of course, integrating this with Brook+ is another matter altogether. That's one of the reasons I moved to CAL.
Lukasz.
Hello Michael,
how far is the work on the double precision transcendentals ?
They are really important for scientific problems.
Having only mult for double is helpful but not the aim of stream.
Scientific problems need double -> hardware can ..
But now software can not use exp(), log(), sin(), cos() etc ..!
When we can ? 🙂
ps: hoply with sdk2..
Best wishes
Marek
Yes I'm waiting for that too.
And if possible more feature for brook+ (although that won't be included in sdk2, sigh)
Any news from that side ??
Hi,
after i read the release notes to SDK 2.0 beta3 i don't expect any
double exp(),sin() functionality for GPU in 2009...
In the FAQ is the information that double precision is optional in OpenCL (i think AMD/ATI forced it, as OpenCL partner because it seems that there is a bigger problem to realize this option ...).
So my hope died that this will be possible in the near future. Maybe there have to be a hardware fix (i guess which even is not done in RV8xx)..
Thats really sad, GPU power have such potential for scientific tasks, but we can not optimize our programs because there is no support till now ...
Best wishes
Marek
Hello,
because there are no comments about future support of i.e. DP exp() i googled a little bit to find hints where the problem could be.
I found something about HPC 64-bit exponential function implementation in FPGA (especially for scientific demands):
http://www.springerlink.com/content/n553027524j05066/
and other articles about lookup tables.
Now i guess that no gpu (up to rv8xx) contain a DP lookup table for exp() sin() etc ...
So only expensive softwareside solution can be used on current gpus with probable worse performance ..
I would be very happy about any reply of an ATI Developer to that topic ..
Best wishes
Marek
Originally posted by: NurEinMensch Hello,
because there are no comments about future support of i.e. DP exp() i googled a little bit to find hints where the problem could be.
I found something about HPC 64-bit exponential function implementation in FPGA (especially for scientific demands):
http://www.springerlink.com/content/n553027524j05066/
and other articles about lookup tables.
Now i guess that no gpu (up to rv8xx) contain a DP lookup table for exp() sin() etc ...
So only expensive softwareside solution can be used on current gpus with probable worse performance ..
I would be very happy about any reply of an ATI Developer to that topic ..
Best wishes
Marek
I'm not an ATI developer, but at least I've implemented my own exp() in IL for my code. It works more or less the same as it is done on a CPU. Those lookup tables are also not stored in an onchip ROM or so, they are simply provided by the software. exp() is quite expensive on CPUs, too.
Furthermore, one doesn't need the lookup tables at all (but one could use the constant buffer for it, if one wants). There are other implementations using the quotient of two power series of quite low order (3, if I remember it right). So one just needs an argument reduction, a few constants for the power series, the division (which is also done in software btw.) and the ldexp instruction (which the GPU hardware is capable of). There are several different implementations out there using this scheme and it works also on GPUs. Maybe it is not the fastest possible algorithm, but it isn't that slow either if you compare it with the CPU.