Esempio n. 1
0
    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),
        }
Esempio n. 2
0
    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),
        }
Esempio n. 3
0
    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),
        }
Esempio n. 4
0
    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)
        }
Esempio n. 5
0
    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)
        }