From 1b7d44b30d49c1134d514a3129cf04d7d1b89a54 Mon Sep 17 00:00:00 2001 From: Rafael Ravedutti <rafaelravedutti@gmail.com> Date: Wed, 18 May 2022 23:50:08 +0200 Subject: [PATCH] Add CUDA compilation rules Signed-off-by: Rafael Ravedutti <rafaelravedutti@gmail.com> --- Makefile | 8 +++++++- src/pairs/__init__.py | 2 +- src/pairs/code_gen/cgen.py | 7 +++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 1bcaa4a..60e3a0a 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ .PHONY: all build clean lj_ns -all: build lj_ns clean +all: build lj_ns @echo "Everything was done!" build: @@ -10,8 +10,14 @@ build: lj_ns: @echo "Generating and compiling CPP for Lennard-Jones example..." python3 examples/lj_func.py + +# Targets +cpu: build lj_ns g++ -o lj_ns lj_ns.cpp +gpu: build lj_ns + nvcc -o lj_ns lj_ns.cu + clean: @echo "Cleaning..." rm -rf build lj_ns lj_ns.cpp dist pairs.egg-info functions functions.pdf diff --git a/src/pairs/__init__.py b/src/pairs/__init__.py index 75615c3..d0e878d 100644 --- a/src/pairs/__init__.py +++ b/src/pairs/__init__.py @@ -4,7 +4,7 @@ from pairs.sim.simulation import Simulation def simulation(ref, dims=3, timesteps=100, debug=False): - return Simulation(CGen(f"{ref}.cpp", debug), dims, timesteps) + return Simulation(CGen(ref, debug), dims, timesteps) def target_cpu(): return Target(Target.Backend_CPP, Target.Feature_CPU) diff --git a/src/pairs/code_gen/cgen.py b/src/pairs/code_gen/cgen.py index f11a8ce..e8772a9 100644 --- a/src/pairs/code_gen/cgen.py +++ b/src/pairs/code_gen/cgen.py @@ -26,11 +26,12 @@ from pairs.code_gen.printer import Printer class CGen: temp_id = 0 - def __init__(self, output, target, debug=False): + def __init__(self, ref, target, debug=False): self.sim = None self.target = None + self.print = None + self.ref = ref self.debug = debug - self.print = Printer(output) def assign_simulation(self, sim): self.sim = sim @@ -39,6 +40,8 @@ class CGen: self.target = target def generate_program(self, ast_node): + ext = ".cu" if self.target.is_gpu() else ".cpp" + self.print = Printer(self.ref + ext) self.print.start() self.print("#include <math.h>") self.print("#include <stdbool.h>") -- GitLab