Source code for tomobar.cuda_kernels
import os
from typing import List, Tuple
try:
import cupy as cp
except ImportError:
print(
"Cupy library is a required dependency for this part of the code, please install"
)
[docs]
def load_cuda_module(
file: str, name_expressions: List[str] = None, options: Tuple[str] = tuple()
) -> cp.RawModule:
"""Load a CUDA module file, i.e. a .cu file, from the file system,
compile it, and return is as a CuPy RawModule for further
processing.
"""
dir = os.path.dirname(os.path.abspath(__file__))
file = os.path.join(dir, file + ".cu")
# insert a preprocessor line directive to assist compiler errors (so line numbers show correctly in output)
escaped = file.replace("\\", "\\\\")
code = '#line 1 "{}"\n'.format(escaped)
with open(file, "r") as f:
code += f.read()
return cp.RawModule(
options=("-std=c++11", *options), code=code, name_expressions=name_expressions
)