From 731fbc91d130911bef3c876ef9f9fb0909d10ed1 Mon Sep 17 00:00:00 2001 From: Rafael Ravedutti <rafaelravedutti@gmail.com> Date: Fri, 18 Feb 2022 16:47:04 +0100 Subject: [PATCH] Add static arrays declaration on GPU constant memory Signed-off-by: Rafael Ravedutti <rafaelravedutti@gmail.com> --- src/pairs/code_gen/cgen.py | 10 ++++++++++ src/pairs/ir/arrays.py | 3 +++ 2 files changed, 13 insertions(+) diff --git a/src/pairs/code_gen/cgen.py b/src/pairs/code_gen/cgen.py index 7b05e17..7f0a05e 100644 --- a/src/pairs/code_gen/cgen.py +++ b/src/pairs/code_gen/cgen.py @@ -50,6 +50,16 @@ class CGen: self.print("") self.print("using namespace pairs;") self.print("") + + if self.target.is_gpu(): + for array in self.sim.arrays.statics(): + if array.device_flag: + t = array.type() + tkw = Types.ctype2keyword(t) + size = self.generate_expression(BinOp.inline(array.alloc_size())) + self.print(f"__constant__ {tkw} d_{array.name()}[{size}];") + + self.print("") for module in self.sim.modules(): self.generate_module(module) self.print.end() diff --git a/src/pairs/ir/arrays.py b/src/pairs/ir/arrays.py index 8316fc0..1ca7ca8 100644 --- a/src/pairs/ir/arrays.py +++ b/src/pairs/ir/arrays.py @@ -27,6 +27,9 @@ class Arrays: def all(self): return self.arrays + def statics(self): + return [a for a in self.arrays if a.is_static()] + def find(self, a_name): array = [a for a in self.arrays if a.name() == a_name] if array: -- GitLab