At least on mad24(get_global_id(1), get_global_size(0), get_global_id(1)) compiler gives this so I have to explicitly conver all of the size_t to unsigned. At least on AMD GPUs the code compiles fine without explicit casting.
line 347: error: more than one instance of overloaded function "mad24" matches the argument list: function "mad24(int, int, int) C++" function "mad24(int2, int2, int2) C++" function "mad24(int3, int3, int3) C++" function "mad24(int4, int4, int4) C++" function "mad24(int8, int8, int8) C++" function "mad24(int16, int16, int16) C++" function "mad24(uint, uint, uint) C++" function "mad24(uint2, uint2, uint2) C++" function "mad24(uint3, uint3, uint3) C++" function "mad24(uint4, uint4, uint4) C++" function "mad24(uint8, uint8, uint8) C++" function "mad24(uint16, uint16, uint16) C++" argument types are: (size_t, size_t, size_t) out[mad24(get_global_id(1), get_global_size(0), get_global_id(1))] = value; ^