Skip to content
Snippets Groups Projects
Commit 1282bfe3 authored by René Heß's avatar René Heß
Browse files

Merge branch 'feature/loopy-patch-globalarg-base-storage' into 'master'

Add patch to allow globalarg base storage in loopy

See merge request !147
parents b7ba40cf 607e6b95
No related branches found
No related tags found
No related merge requests found
From b15ad57a11b774bde714f058c85248990c461048 Mon Sep 17 00:00:00 2001
From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de>
Date: Tue, 23 May 2017 12:55:25 +0200
Subject: [PATCH] Allow using globalargs as base storage
---
loopy/preprocess.py | 2 +-
loopy/target/c/__init__.py | 23 ++++++++++++-----------
2 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/loopy/preprocess.py b/loopy/preprocess.py
index 17226b6..65a9df1 100644
--- a/loopy/preprocess.py
+++ b/loopy/preprocess.py
@@ -165,7 +165,7 @@ def find_temporary_scope(kernel):
for temp_var in six.itervalues(kernel.temporary_variables):
if temp_var.base_storage is not None:
# no nesting allowed
- if temp_var.base_storage in kernel_var_names:
+ if temp_var.base_storage in kernel.temporary_variables:
raise LoopyError("base_storage for temporary '%s' is '%s', "
"which is an existing variable name"
% (temp_var.name, temp_var.base_storage))
diff --git a/loopy/target/c/__init__.py b/loopy/target/c/__init__.py
index e4835a3..7c6a617 100644
--- a/loopy/target/c/__init__.py
+++ b/loopy/target/c/__init__.py
@@ -439,20 +439,21 @@ class CASTBuilder(ASTBuilderBase):
assert tv.initializer is None
offset = 0
- base_storage_sizes.setdefault(tv.base_storage, []).append(
- tv.nbytes)
- base_storage_to_scope.setdefault(tv.base_storage, []).append(
- tv.scope)
+ if not tv.base_storage in kernel.arguments:
+ base_storage_sizes.setdefault(tv.base_storage, []).append(
+ tv.nbytes)
+ base_storage_to_scope.setdefault(tv.base_storage, []).append(
+ tv.scope)
- align_size = tv.dtype.itemsize
+ align_size = tv.dtype.itemsize
- from loopy.kernel.array import VectorArrayDimTag
- for dim_tag, axis_len in zip(tv.dim_tags, tv.shape):
- if isinstance(dim_tag, VectorArrayDimTag):
- align_size *= axis_len
+ from loopy.kernel.array import VectorArrayDimTag
+ for dim_tag, axis_len in zip(tv.dim_tags, tv.shape):
+ if isinstance(dim_tag, VectorArrayDimTag):
+ align_size *= axis_len
- base_storage_to_align_bytes.setdefault(tv.base_storage, []).append(
- align_size)
+ base_storage_to_align_bytes.setdefault(tv.base_storage, []).append(
+ align_size)
for idi in decl_info:
cast_decl = POD(self, idi.dtype, "")
--
2.1.4
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment