Peano 4
Loading...
Searching...
No Matches
GPULaunch.py
Go to the documentation of this file.
1# This file is part of the Peano project. For conditions of distribution and
2# use, please see the copyright notice at www.peano-framework.org
3import os
4import stat
5
6from jinja2 import Environment, FileSystemLoader
7
8from .Helper import parse_cmake_cache_for_mpi_and_gpu_vendor
9from .Helper import parse_makefile_for_mpi_and_gpu_vendor
10from .Helper import find_CMake_build_dir
11
12
13class GPULaunch(object):
14 def __init__(self):
15 template_dir = os.path.dirname(os.path.abspath(__file__))
16 env = Environment(loader=FileSystemLoader(template_dir))
17 self._template = env.get_template("GPULaunch.template")
18 self._generate = True
19
20 cmake_build_dir = find_CMake_build_dir()
21 if cmake_build_dir == "":
22 mpi_vendor, gpu_vendor = parse_makefile_for_mpi_and_gpu_vendor()
23 else:
24 mpi_vendor, gpu_vendor = parse_cmake_cache_for_mpi_and_gpu_vendor()
25
26 if gpu_vendor is None:
27 self._generate = False
28
29 self._context = {"GPU_VENDOR": gpu_vendor, "MPI_IMPLEMENTATION": mpi_vendor}
30
31
32 def generate(self, directory):
33 if self._generate:
34 output_file_path = os.path.join(directory, "gpu-launch")
35 with open(output_file_path, "w") as output:
36 output.write(self._template.render(self._context))
37
38 # Define permission bits
39 executable_permissions = stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR | stat.S_IRGRP | stat.S_IXGRP | stat.S_IROTH | stat.S_IXOTH
40 # Change the file permissions to make it executable
41 os.chmod(output_file_path, executable_permissions)