1. I upgraded to the new drivers on a ubuntu 32-bit machine. works fine for me with CAL. I dont use brook but I see no reason why it should not work since brook uses CAL anyway.
2. I dont think there is support for sin/cos etc for doubles built into the hardware.
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.
Look for the IL document in the amdcal installation folder.
On my machine it is /usr/local/amdcal/doc/il.pdf
The IL documentation installed by default.
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.
Could someone from AMD address my questions about DP kernel intrinsics, please?
I apologize for the delay in responding! I couple of us were out at ISC'08 in Dresden last week and have been trying desperately to catch up to forum and other emails.
In Brook+, double precision transcendental functions don't exist at the moment. You will need to convert down to a single precision variable, perform your transcendental operation, and convert back to double.
http://forums.amd.com/devforum...tid=328&threadid=95041 is a similar thread on this topic.
Last time I was in Dresden it took me a couple of days to "catch up" as well.