mirror of
https://github.com/smyalygames/FiniteVolumeGPU.git
synced 2025-05-18 14:34:13 +02:00
docs(GPUSimulators): add documentation for CudaContext
This commit is contained in:
parent
ef207432db
commit
7c312c255f
@ -44,8 +44,10 @@ class CudaContext(object):
|
|||||||
def __init__(self, device=None, context_flags=None, use_cache=True, autotuning=True):
|
def __init__(self, device=None, context_flags=None, use_cache=True, autotuning=True):
|
||||||
"""
|
"""
|
||||||
Create a new CUDA context
|
Create a new CUDA context
|
||||||
Set device to an id or pci_bus_id to select a specific GPU
|
|
||||||
Set context_flags to cuda.ctx_flags.SCHED_BLOCKING_SYNC for a blocking context
|
Args:
|
||||||
|
device: To use a specific GPU, provide either an ``id`` or ``pci_bus_id`` for the GPU.
|
||||||
|
context_flags: To set a blocking context, provide ``cuda.ctx_flags.SCHED_BLOCKING_SYNC``.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.use_cache = use_cache
|
self.use_cache = use_cache
|
||||||
@ -119,8 +121,21 @@ class CudaContext(object):
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "CudaContext id " + str(self.cuda_context.handle)
|
return "CudaContext id " + str(self.cuda_context.handle)
|
||||||
|
|
||||||
def hash_kernel(kernel_filename, include_dirs):
|
def hash_kernel(self, kernel_filename: str, include_dirs: list[str]) -> str:
|
||||||
# Generate a kernel ID for our caches
|
"""
|
||||||
|
Generate a kernel ID for our caches.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
kernel_filename: Path to the kernel file.
|
||||||
|
include_dirs: Directories to search for ``#include`` in the kernel file.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
MD5 has for the kernel in the cache.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
RuntimeError: When the number of ``#include``s surpassed the maximum (101) permitted ``#include``s.
|
||||||
|
"""
|
||||||
|
|
||||||
num_includes = 0
|
num_includes = 0
|
||||||
max_includes = 100
|
max_includes = 100
|
||||||
kernel_hasher = hashlib.md5()
|
kernel_hasher = hashlib.md5()
|
||||||
@ -131,7 +146,7 @@ class CudaContext(object):
|
|||||||
while len(files):
|
while len(files):
|
||||||
|
|
||||||
if (num_includes > max_includes):
|
if (num_includes > max_includes):
|
||||||
raise("Maximum number of includes reached - circular include in {:}?".format(kernel_filename))
|
raise RuntimeError("Maximum number of includes reached - circular include in {:}?".format(kernel_filename))
|
||||||
|
|
||||||
filename = files.pop()
|
filename = files.pop()
|
||||||
|
|
||||||
@ -166,12 +181,23 @@ class CudaContext(object):
|
|||||||
|
|
||||||
return kernel_hasher.hexdigest()
|
return kernel_hasher.hexdigest()
|
||||||
|
|
||||||
def get_module(self, kernel_filename,
|
def get_module(self, kernel_filename: str,
|
||||||
include_dirs=[], \
|
include_dirs: list[str]=[], \
|
||||||
defines={}, \
|
defines: dict={}, \
|
||||||
compile_args={'no_extern_c', True}, jit_compile_args={}):
|
compile_args: dict={'no_extern_c': True}, jit_compile_args: dict={}) -> cuda.Module:
|
||||||
"""
|
"""
|
||||||
Reads a text file and creates an OpenCL kernel from that
|
Reads a text file and creates an OpenCL kernel from that.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
kernel_filename: The file to use for the kernel.
|
||||||
|
include_dirs: List of directories for the ``#include``s referenced.
|
||||||
|
defines: Adds ``#define`` tags to the kernel, such as: ``#define key value``.
|
||||||
|
compile_args: Adds other compiler options (parameters) for ``pycuda.compiler.compile()``.
|
||||||
|
jit_compile_args: Adds other just-in-time compilation options (parameters)
|
||||||
|
for ``pycuda.driver.module_from_buffer()``.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
The kernel module (pycuda.driver.Module).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def cuda_compile_message_handler(compile_success_bool, info_str, error_str):
|
def cuda_compile_message_handler(compile_success_bool, info_str, error_str):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user