This content has been marked as final. Show 5 replies
Do you mean this ?
Reductions are kernels that decrease the dimensionality of a stream by folding
along one axis using an associative, commmutative binary operation. The re-
quirement that the operation be associative and commutative means that the
result is independent of evaluation order, modulo any issues due to limited oat-
ing point precision.
Reductions are currently only available for 1-dimensional streams and are
not compatible with address translation mode.
Brook provides two mechanisms for specifying reductions: reduction vari-
ables and reduction functions.
you can found information about reduction in C:\Programmi\AMD\BROOKPLUS SDK v1.00.0_beta\doc BrookPlusSpec.pdf
Cuorematto, he is refering to reduction buffers specified in r600isa.pdf. It is introduced as a type of memory read/write in section 3.4.2, further specified in 7.1 with the actual binary instruction format specified in section 8.1. This is very different than the reductions that are done at the brook level.
As for how it is used, we don't have any samples that use it and is not something that is exposed at the IL level. For information on double precision, the only current docs that we have is the il.pdf which has the supported double opcodes.
Hi there Lukasz,
One thing you can do until more documentation is released is to use the gpu shader analyser (or alternatively calDisassembleObject). One can compile simple double precision brook+ kernels to r600isa (look at the end to avoid the address translation code), and also the gather/scatter/scratch il examples to r600isa. They all compile fine and you can see how at least some of the things you mention work and what the syntax is.
Yes, GSA is a good (and perhaps the only) tool to see the assembly codes.
But I found that it's not easy to guessing the meanings of the mnemonics ...
BTW, do we have a assembler? I thought CAL compiler can only compile IL.
You can compile the gpuisa using calclAssembleObject(); as an example, its use came up in this thread.
To see the disassembly, use calclDisassembleObject() on an object. The two "isa"-type documents in the sdk help in understanding the output, but I agree they could do with updating to reflect all the new stuff!