1) , OpenCL? , . , for OpenCL, - , (.. 1 0 ~ 9, 2 10 ~ 19 ..).
. , , . . ( AMD) warp ( NV), .
. . , . , , , , . , :
if(condition is true)
do_a();
else
do_b();
, , do_a(); do_b(). , , . , do_a(), do_a(); , do_b(), . .
, , , , , . :
for(int jb=0; jb < nb; jb++) {
pblock[ti] = pos_old[jb*nt+ti];
barrier(CLK_LOCAL_MEM_FENCE);
for(int j=0; j<nt; j++) {
, , , .
2) , ? OpenCL, ?
(1), , .
OpenCL, , , . OpenCL , . , . ,
unsigned int gid = get_global_id(0);
buf[gid] = input1[gid] + input2[gid];
.
3) ( , for , , ), ? a = a + f * d, , .
float4 d = p2 - p;
float invr = rsqrt(d.x*d.x + d.y*d.y + d.z*d.z + eps);
float f = p2.w*invr*invr*invr;
a += f*d; /* Accumulate acceleration */
a, f d , , . GPU ; , , , , , , ( -, , , , ).
, , a, f d, .