def get_launch_params(self, slvr, D): polchans_per_block = D['BLOCKDIMX'] ants_per_block = D['BLOCKDIMY'] times_per_block = D['BLOCKDIMZ'] ntime, na, npolchan = slvr.dim_local_size('ntime', 'na', 'npolchan') polchan_blocks = mbu.blocks_required(npolchan, polchans_per_block) ant_blocks = mbu.blocks_required(na, ants_per_block) time_blocks = mbu.blocks_required(ntime, times_per_block) return { 'block' : (polchans_per_block, ants_per_block, times_per_block), 'grid' : (polchan_blocks, ant_blocks, time_blocks), }
def get_kernel_params(self, solver): ntime, na, nchan = solver.dim_local_size('ntime', 'na', 'nchan') D = FLOAT_PARAMS if solver.is_float() else DOUBLE_PARAMS chans_per_block = D['BLOCKDIMX'] if nchan > D['BLOCKDIMX'] else nchan ants_per_block = D['BLOCKDIMY'] if na > D['BLOCKDIMY'] else na times_per_block = D['BLOCKDIMZ'] if ntime > D['BLOCKDIMZ'] else ntime chan_blocks = mbu.blocks_required(nchan, chans_per_block) ant_blocks = mbu.blocks_required(na, ants_per_block) time_blocks = mbu.blocks_required(ntime, times_per_block) return { 'block' : (chans_per_block, ants_per_block, times_per_block), 'grid' : (chan_blocks, ant_blocks, time_blocks), }
def get_kernel_params(self, solver, nx, ny): slvr = solver D = FLOAT_PARAMS if slvr.is_float() else DOUBLE_PARAMS #x_per_block = D['BLOCKDIMX'] if nx > D['BLOCKDIMX'] else nx #y_per_block = D['BLOCKDIMY'] if ny > D['BLOCKDIMX'] else ny TILE_DIM = D['TILE_DIM'] x_per_block = D['BLOCKDIMX'] y_per_block = D['BLOCKDIMY'] x_blocks = mbu.blocks_required(nx, TILE_DIM) y_blocks = mbu.blocks_required(ny, TILE_DIM) return { 'block' : (x_per_block, y_per_block,1), 'grid' : (x_blocks, y_blocks, 1), }
def get_kernel_params(self, solver): slvr = solver nsrc, ntime, nbl, nchan = slvr.dim_local_size('nsrc', 'ntime', 'nbl', 'nchan') D = FLOAT_PARAMS if slvr.is_float() else DOUBLE_PARAMS njones = nbl * nchan * ntime * nsrc jones_per_block = D['BLOCKDIMX'] if njones > D['BLOCKDIMX'] else njones jones_blocks = mbu.blocks_required(njones, jones_per_block) return { 'block' : (jones_per_block,1,1), \ 'grid' : (jones_blocks,1,1) }
def get_kernel_params(self, solver): slvr = solver nsrc, ntime, nbl, nchan = slvr.dim_local_size( 'nsrc', 'ntime', 'nbl', 'nchan') D = FLOAT_PARAMS if slvr.is_float() else DOUBLE_PARAMS njones = nbl*nchan*ntime*nsrc jones_per_block = D['BLOCKDIMX'] if njones > D['BLOCKDIMX'] else njones jones_blocks = mbu.blocks_required(njones,jones_per_block) return { 'block' : (jones_per_block,1,1), \ 'grid' : (jones_blocks,1,1) }