def __init__(self, slvr_cfg): """ RimeSolver Constructor Parameters: slvr_cfg : SolverConfiguration Solver Configuration variables """ # Call the parent constructor super(RimeSolver, self).__init__(slvr_cfg) self.register_default_dimensions() # Configure the dimensions of the beam cube self.register_dimension('beam_lw', slvr_cfg[Options.E_BEAM_WIDTH], description='E cube l width') self.register_dimension('beam_mh', slvr_cfg[Options.E_BEAM_HEIGHT], description='E cube m height') self.register_dimension('beam_nud', slvr_cfg[Options.E_BEAM_DEPTH], description='E cube nu depth') self.rime_e_beam = RimeEBeam() self.rime_b_sqrt = RimeBSqrt() self.rime_ekb_sqrt = RimeEKBSqrt() self.rime_sum = RimeSumCoherencies() self.rime_reduce = RimeReduction() from montblanc.impl.rime.v4.ant_pairs import monkey_patch_antenna_pairs monkey_patch_antenna_pairs(self) # Create # (1) A stream that this solver will asynchronously # operate on # (2) An event indicating when an iteration of # the kernels above have finished executing with self.context: self.stream = cuda.Stream() self.kernels_done = cuda.Event() # Create constant data for transfer to GPU self._const_data = mbu.create_rime_const_data(self) # Indicate these variables have not been set self._dev_mem_pool = None self._pinned_mem_pool = None self._pool_lock = None
def __init__(self, slvr_cfg): """ RimeSolver Constructor Parameters: slvr_cfg : SolverConfiguration Solver Configuration variables """ # Set up a default pipeline if None is supplied slvr_cfg.setdefault('pipeline', get_pipeline(slvr_cfg)) super(RimeSolver, self).__init__(slvr_cfg) self.register_default_dimensions() # Configure the dimensions of the beam cube self.register_dimension('beam_lw', slvr_cfg[Options.E_BEAM_WIDTH], description='E Beam cube l width') self.register_dimension('beam_mh', slvr_cfg[Options.E_BEAM_HEIGHT], description='E Beam cube m height') self.register_dimension('beam_nud', slvr_cfg[Options.E_BEAM_DEPTH], description='E Beam cube nu depth') # Monkey patch these functions onto the object # TODO: Remove this when deprecating v2. from montblanc.impl.rime.v4.ant_pairs import monkey_patch_antenna_pairs monkey_patch_antenna_pairs(self) from montblanc.impl.rime.v4.config import (A, P) self.register_properties(P) self.register_arrays(A) self.create_arrays() self._const_data = mbu.create_rime_const_data(self)
def __init__(self, slvr_cfg): """ RimeSolver Constructor Parameters: slvr_cfg : SolverConfiguration Solver Configuration variables """ # Set up a default pipeline if None is supplied slvr_cfg.setdefault("pipeline", get_pipeline(slvr_cfg)) super(RimeSolver, self).__init__(slvr_cfg) self.register_default_dimensions() # Configure the dimensions of the beam cube self.register_dimension("beam_lw", slvr_cfg[Options.E_BEAM_WIDTH], description="E Beam cube l width") self.register_dimension("beam_mh", slvr_cfg[Options.E_BEAM_HEIGHT], description="E Beam cube m height") self.register_dimension("beam_nud", slvr_cfg[Options.E_BEAM_DEPTH], description="E Beam cube nu depth") # Monkey patch these functions onto the object # TODO: Remove this when deprecating v2. from montblanc.impl.rime.v4.ant_pairs import monkey_patch_antenna_pairs monkey_patch_antenna_pairs(self) from montblanc.impl.rime.v4.config import A, P self.register_properties(P) self.register_arrays(A) self.create_arrays() self._const_data = mbu.create_rime_const_data(self)