def _specialize_iet(cls, graph, **kwargs): options = kwargs['options'] platform = kwargs['platform'] # Flush denormal numbers avoid_denormals(graph) # Distributed-memory parallelism optimize_halospots(graph) if options['mpi']: mpiize(graph, mode=options['mpi']) # Lower IncrDimensions so that blocks of arbitrary shape may be used relax_incr_dimensions(graph, counter=generator()) # SIMD-level parallelism ompizer = Ompizer() ompizer.make_simd(graph, simd_reg_size=platform.simd_reg_size) # Misc optimizations hoist_prodders(graph) # Symbol definitions data_manager = DataManager() data_manager.place_definitions(graph) data_manager.place_casts(graph) return graph
def _make_passes_mapper(cls, **kwargs): options = kwargs['options'] platform = kwargs['platform'] blocker = Blocker(options['blockinner'], options['blocklevels'] or cls.BLOCK_LEVELS) ompizer = Ompizer() return { 'denormals': partial(avoid_denormals), 'optcomms': partial(optimize_halospots), 'wrapping': partial(loop_wrapping), 'blocking': partial(blocker.make_blocking), 'openmp': partial(ompizer.make_parallel), 'mpi': partial(mpiize, mode=options['mpi']), 'simd': partial(ompizer.make_simd, simd_reg_size=platform.simd_reg_size), 'prodders': partial(hoist_prodders) }
def _specialize_iet(cls, graph, **kwargs): options = kwargs['options'] sregistry = kwargs['sregistry'] # Distributed-memory parallelism if options['mpi']: mpiize(graph, mode=options['mpi']) # Shared-memory parallelism if options['openmp']: ompizer = Ompizer(sregistry, options) ompizer.make_parallel(graph) # Symbol definitions DataManager(sregistry).process(graph) return graph
def _specialize_iet(cls, graph, **kwargs): options = kwargs['options'] # Distributed-memory parallelism if options['mpi']: mpiize(graph, mode=options['mpi']) # Shared-memory parallelism if options['openmp']: ompizer = Ompizer() ompizer.make_parallel(graph) # Symbol definitions data_manager = DataManager() data_manager.place_definitions(graph) data_manager.place_casts(graph) return graph
def _specialize_iet(cls, graph, **kwargs): options = kwargs['options'] platform = kwargs['platform'] sregistry = kwargs['sregistry'] # Distributed-memory parallelism optimize_halospots(graph) if options['mpi']: mpiize(graph, mode=options['mpi']) # Lower IncrDimensions so that blocks of arbitrary shape may be used relax_incr_dimensions(graph, sregistry=sregistry) # SIMD-level parallelism ompizer = Ompizer(sregistry, options) ompizer.make_simd(graph, simd_reg_size=platform.simd_reg_size) # Shared-memory parallelism ompizer.make_parallel(graph) # Misc optimizations hoist_prodders(graph) # Symbol definitions DataManager(sregistry).process(graph) return graph
def _specialize_iet(cls, graph, **kwargs): options = kwargs['options'] platform = kwargs['platform'] # Flush denormal numbers avoid_denormals(graph) # Distributed-memory parallelism optimize_halospots(graph) if options['mpi']: mpiize(graph, mode=options['mpi']) # Tiling blocker = Blocker(options['blockinner'], options['blocklevels'] or cls.BLOCK_LEVELS) blocker.make_blocking(graph) # Shared-memory and SIMD-level parallelism ompizer = Ompizer() ompizer.make_simd(graph, simd_reg_size=platform.simd_reg_size) if options['openmp']: ompizer.make_parallel(graph) # Misc optimizations hoist_prodders(graph) # Symbol definitions data_manager = DataManager() data_manager.place_definitions(graph) data_manager.place_casts(graph) return graph
def _make_iet_passes_mapper(cls, **kwargs): options = kwargs['options'] platform = kwargs['platform'] ompizer = Ompizer() return { 'denormals': avoid_denormals, 'optcomms': optimize_halospots, 'wrapping': loop_wrapping, 'blocking': partial(relax_incr_dimensions, counter=generator()), 'openmp': ompizer.make_parallel, 'mpi': partial(mpiize, mode=options['mpi']), 'simd': partial(ompizer.make_simd, simd_reg_size=platform.simd_reg_size), 'prodders': hoist_prodders }