diff --git a/patches/loopy/Current.patch b/patches/loopy/Current.patch index e6bfaf884633839b9a0b4aa43c2c50bbeb27d2e5..0709ea528977ffcf0724283f7c22f5e96898ab12 100644 --- a/patches/loopy/Current.patch +++ b/patches/loopy/Current.patch @@ -1,12 +1,12 @@ -From d75091179a72f10c110276720355dbf82ed33ef3 Mon Sep 17 00:00:00 2001 +From 87331320981ca8f7419f32b48609e6dc465bbfff Mon Sep 17 00:00:00 2001 From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de> -Date: Fri, 9 Dec 2016 14:57:44 +0100 -Subject: [PATCH] Current loopy patch +Date: Tue, 20 Dec 2016 11:25:11 +0100 +Subject: [PATCH] Current patch --- loopy/check.py | 10 +++++----- - loopy/codegen/instruction.py | 6 +++--- - 2 files changed, 8 insertions(+), 8 deletions(-) + loopy/codegen/instruction.py | 43 ++++++++++++++++++++++--------------------- + 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/loopy/check.py b/loopy/check.py index 7562eac..ac03be0 100644 @@ -37,10 +37,54 @@ index 7562eac..ac03be0 100644 kernel.target.pre_codegen_check(kernel) check_that_shapes_and_strides_are_arguments(kernel) diff --git a/loopy/codegen/instruction.py b/loopy/codegen/instruction.py -index c490abb..ec68921 100644 +index c490abb..138fd6f 100644 --- a/loopy/codegen/instruction.py +++ b/loopy/codegen/instruction.py -@@ -219,9 +219,9 @@ def generate_call_code(codegen_state, insn): +@@ -105,24 +105,25 @@ def generate_assignment_instruction_code(codegen_state, insn): + + # {{{ vectorization handling + +- if codegen_state.vectorization_info: +- if insn.atomicity: +- raise Unvectorizable("atomic operation") +- +- vinfo = codegen_state.vectorization_info +- vcheck = VectorizabilityChecker( +- kernel, vinfo.iname, vinfo.length) +- lhs_is_vector = vcheck(insn.assignee) +- rhs_is_vector = vcheck(insn.expression) +- +- if not lhs_is_vector and rhs_is_vector: +- raise Unvectorizable( +- "LHS is scalar, RHS is vector, cannot assign") +- +- is_vector = lhs_is_vector +- +- del lhs_is_vector +- del rhs_is_vector ++# if codegen_state.vectorization_info: ++# if insn.atomicity: ++# raise Unvectorizable("atomic operation") ++# ++# vinfo = codegen_state.vectorization_info ++# vcheck = VectorizabilityChecker( ++# kernel, vinfo.iname, vinfo.length) ++# lhs_is_vector = vcheck(insn.assignee) ++# rhs_is_vector = vcheck(insn.expression) ++# ++# if not lhs_is_vector and rhs_is_vector: ++# raise Unvectorizable( ++# "LHS is scalar, RHS is vector, cannot assign") ++# ++# is_vector = lhs_is_vector ++# ++# del lhs_is_vector ++# del rhs_is_vector ++ is_vector = False + + # }}} + +@@ -219,9 +220,9 @@ def generate_call_code(codegen_state, insn): # {{{ vectorization handling diff --git a/python/dune/perftool/sumfact/sumfact.py b/python/dune/perftool/sumfact/sumfact.py index 80524945e454c2228a52113b69ae44fc153fafa7..ef9cf9a5219fd2e4486c03da6018bf238c6e68cb 100644 --- a/python/dune/perftool/sumfact/sumfact.py +++ b/python/dune/perftool/sumfact/sumfact.py @@ -249,7 +249,7 @@ def generate_accumulation_instruction(visitor, accterm, measure, subdomain_id): # TODO: At the moment this only works if we do not vectorize # (over gradients) because loopy tries to acces a vectorclass # variable. - if get_option('fastdg') and not index: + if get_option('fastdg'): ft = get_global_context_value("form_type") if ft=='residual': accum = accum + ".data()"