From fd7ebff455b8db9e78ca3e11031e43e8ef021ab2 Mon Sep 17 00:00:00 2001 From: Marcel Koch <marcel.koch@uni-muenster.de> Date: Tue, 10 Apr 2018 13:57:08 +0200 Subject: [PATCH] remove CInstructions temporarily for lp.extract_subst --- .../perftool/blockstructured/vectorization.py | 18 ++++++++++++------ test/blockstructured/poisson/poisson_vec.mini | 2 -- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/python/dune/perftool/blockstructured/vectorization.py b/python/dune/perftool/blockstructured/vectorization.py index fbf5160f..0ff194a7 100644 --- a/python/dune/perftool/blockstructured/vectorization.py +++ b/python/dune/perftool/blockstructured/vectorization.py @@ -232,17 +232,23 @@ def add_vcl_access(knl, iname_inner): vector_alias = [a for a in knl.arg_dict if a.endswith('alias')] dim = world_dimension() dim_names = ["x","y","z"] + [str(i) for i in range(4,dim+1)] + knl_without_cinsn = knl.copy(instructions=[insn for insn in knl.instructions + if not isinstance(insn, lp.CInstruction)]) for alias in vector_alias: - parameters = 'ex_o,ex_i,'+','.join(['e'+d for d in dim_names[1:dim]])+',ix,'+','.join(['i'+d for d in dim_names[1:dim]]) - knl = lp.extract_subst(knl, alias+'_subst', '{}[{}]'.format(alias, parameters), - parameters=parameters) - new_subst = knl.substitutions.copy() + parameters = 'ex_o,ex_i,' + ','.join(['e'+d for d in dim_names[1:dim]])\ + + ',ix,' + ','.join(['i'+d for d in dim_names[1:dim]]) + knl_without_cinsn = lp.extract_subst(knl_without_cinsn, alias+'_subst', '{}[{}]'.format(alias, parameters), + parameters=parameters) + new_subst = knl_without_cinsn.substitutions.copy() rule = new_subst[alias+'_subst'] rule.expression = prim.Subscript(prim.Variable(alias.replace('alias','vec')), (prim.Variable('ex_i'),)) - knl = knl.copy(substitutions=new_subst) + knl_without_cinsn = knl_without_cinsn.copy(substitutions=new_subst) from loopy.match import All - knl = lp.expand_subst(knl, All()) + knl_without_cinsn = lp.expand_subst(knl_without_cinsn, All()) + knl = knl_without_cinsn.copy(instructions=knl_without_cinsn.instructions + + [insn for insn in knl.instructions + if isinstance(insn, lp.CInstruction)]) # add store and load dependencies and set right accumulation assignee new_insns = [] diff --git a/test/blockstructured/poisson/poisson_vec.mini b/test/blockstructured/poisson/poisson_vec.mini index e1c81889..edaabbac 100644 --- a/test/blockstructured/poisson/poisson_vec.mini +++ b/test/blockstructured/poisson/poisson_vec.mini @@ -15,5 +15,3 @@ blockstructured = 1 number_of_blocks = 16 vectorization_blockstructured = 1 matrix_free = 1 -opcounter = 1 -time_opcounter = 0 -- GitLab