Source

Branch

1/ @tomcr2100

@AgileJebrim

mapreduce. simple enough answer ? 😉

2/ @AgileJebrim

@tomcr2100

Design its implementation.

3/ @tomcr2100

@AgileJebrim

start with processing in N chunks, every chunk is a wave, loading wide to feed ALU, and avoid trashing cache by different wave reads. Waves write to a fixed location in a buffer of size N. Works for sets that don’t fit into memory (transfers). Overflow TBD. Out of characters👾

4/ @AgileJebrim

@tomcr2100

I don’t see any additions or reductions discussed, just memory loads and stores.

5/ @tomcr2100

@AgileJebrim

Sorry, typical twitter superficial moment. I meant each block reduces a portion of the array, multiple kernel invocations to reduce sync, and try to rely on sequential addressing d[i] + d[i + offset] to avoid bank conflicts when writing the result to global memory.

6/ @AgileJebrim

@tomcr2100

Can you show me what the first for loop looks like?