def _specialize_iet(cls, graph, **kwargs): options = kwargs['options'] platform = kwargs['platform'] sregistry = kwargs['sregistry'] # 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, sregistry=sregistry) # Parallelism parizer = cls._Target.Parizer(sregistry, options, platform) parizer.make_simd(graph) parizer.make_parallel(graph) # Misc optimizations hoist_prodders(graph) # Symbol definitions cls._Target.DataManager(sregistry).process(graph) # Initialize the target-language runtime parizer.initialize(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']) # 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) # Shared-memory parallelism 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 _specialize_iet(cls, graph, **kwargs): options = kwargs['options'] platform = kwargs['platform'] compiler = kwargs['compiler'] sregistry = kwargs['sregistry'] # Flush denormal numbers avoid_denormals(graph, platform=platform) # Distributed-memory parallelism mpiize(graph, sregistry=sregistry, options=options) # Lower BlockDimensions so that blocks of arbitrary shape may be used relax_incr_dimensions(graph) # Parallelism parizer = cls._Target.Parizer(sregistry, options, platform, compiler) parizer.make_simd(graph) parizer.make_parallel(graph) parizer.initialize(graph) # Misc optimizations hoist_prodders(graph) # Symbol definitions cls._Target.DataManager(sregistry).process(graph) # Linearize n-dimensional Indexeds linearize(graph, mode=options['linearize'], sregistry=sregistry) 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'] compiler = kwargs['compiler'] sregistry = kwargs['sregistry'] # Distributed-memory parallelism mpiize(graph, sregistry=sregistry, options=options) # Loop tiling relax_incr_dimensions(graph) # GPU parallelism parizer = cls._Target.Parizer(sregistry, options, platform, compiler) parizer.make_parallel(graph) parizer.initialize(graph) # Misc optimizations hoist_prodders(graph) # Symbol definitions cls._Target.DataManager(sregistry, options).process(graph) # Linearize n-dimensional Indexeds linearize(graph, mode=options['linearize'], sregistry=sregistry) return graph