def generate_sin(a): gid = clrt.get_global_id(0) n = clrt.get_global_size(0) r = c_float(gid) / c_float(n) x = r * c_float(16.0) * c_float(3.1415) a[gid].x = c_float(r * 2.0) - c_float(1.0) a[gid].y = clrt.native_sin(x)
def generate_sin(a): gid = clrt.get_global_id(0) n = clrt.get_global_size(0) r = cl.cl_float(gid) / cl.cl_float(n) # sin wave with 8 peaks y = r * cl.cl_float(16.0 * 3.1415) # x is a range from -1 to 1 a[gid].x = r * 2.0 - 1.0 # y is sin wave a[gid].y = clrt.native_sin(y)
def generate_sin(a): gid = clrt.get_global_id(0) n = clrt.get_global_size(0) r = c_float(gid) / c_float(n) # sin wave with 8 peaks y = r * c_float(16.0 * 3.1415) # x is a range from -1 to 1 a[gid].x = r * 2.0 - 1.0 # y is sin wave a[gid].y = clrt.native_sin(y)
def generate_sin(a): gid = clrt.get_global_id(0) n = clrt.get_global_size(0) r = c_float(gid) / c_float(n) # sin wave with 16 occilations x = r * c_float(16.0 * 3.1415) # x is a range from -1 to 1 a[gid].x = r * 2.0 - 1.0 # y is sin wave a[gid].y = clrt.native_sin(x)
def compute_gravitation(a): m_ind = 0 fx_ind = 1 fy_ind = 2 px_ind = 3 py_ind = 4 vx_ind = 5 vy_ind = 6 gid = clrt.get_global_id(0) n = clrt.get_global_size(0) G = 100000.0 #Q = 0.1 a[fx_ind,gid] = 0.0 a[fy_ind,gid] = 0.0 for i in range(n): if not(i==gid): diff_x = a[px_ind,gid] - a[px_ind,i] diff_y = a[py_ind,gid] - a[py_ind,i] distance = clrt.math.sqrt(diff_x*diff_x + diff_y*diff_y) forceNorm = G*a[m_ind,gid]*a[m_ind,i]/ pow((distance*distance) + 200.0**2,3/2.0) a[fx_ind,gid] -= forceNorm*diff_x/distance a[fy_ind,gid] -= forceNorm*diff_y/distance
def _linspace(a, start, stop): i = clrt.get_global_id(0) gsize = clrt.get_global_size(0) a[i] = i * (stop - start) / gsize