I've just grabbed the 8.501 (8.6) release of the Catalyst driver for Linux, which I note is a higher release number than that of the driver with SDK 1.1. I'm using a Radeon 3870. Is the 8.501 Linux Catalyst driver what I should be using?
Also, In Brook+ do the Kernel intrinsics work with double or only float numbers. So should
b = cos(a);
work. (So far it doesn't work for me).
That's consistent with my results today.
I'm not sure about all of the intrinsic operations being float-only. For example, this compiles:
check_ops( double fu<>, out double bar<> )
bar = fmod(fu,10.0);
clamp( bar, (double) 1.0, (double) 2.0 );
x = dot( fu, bar );
From the R600 instruction set I can't really tell what is available in double precision and the intermediate language document doesn't seem to be on line.
If the usual double-single computations are happening for the arithmetic operations, then there are extensions of various transcendental operations (see dsfun90 for example) but I have no feeling for how well these would work in a GPGPU context.
I see also that Brook defines a double2, which I suppose is reasonable since the double is two floats.
Thanks, I'd missed it.
I'm guessing that even if the FPU's in the GPU don't do transcendentals to double precision that it would be useful, depending on how the double-single representation works in the GPU, to have approximations. I was looking more into DSFUN90 (the classic Fortran implementation) and I'm guessing those approaches could be adapted easily enough, possibly using the single-precision result as a starting point for cases where iteration is required.