kernel-tuner 1.1.2__tar.gz → 1.1.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/PKG-INFO +1 -1
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/backends/pycuda.py +4 -1
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/core.py +10 -10
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/pyproject.toml +1 -1
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/LICENSE +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/README.md +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/__init__.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/accuracy.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/backends/__init__.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/backends/backend.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/backends/compiler.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/backends/cupy.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/backends/hip.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/backends/nvcuda.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/backends/opencl.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/energy/__init__.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/energy/energy.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/file_utils.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/hyper.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/integration.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/interface.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/kernelbuilder.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/observers/__init__.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/observers/compiler.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/observers/cupy.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/observers/hip.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/observers/ncu.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/observers/nvcuda.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/observers/nvml.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/observers/observer.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/observers/opencl.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/observers/pmt.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/observers/powersensor.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/observers/pycuda.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/observers/register.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/observers/tegra.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/runners/__init__.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/runners/runner.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/runners/sequential.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/runners/simulation.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/schema/T4/1.0.0/metadata-schema.json +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/schema/T4/1.0.0/results-schema.json +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/searchspace.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/strategies/__init__.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/strategies/basinhopping.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/strategies/bayes_opt.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/strategies/brute_force.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/strategies/common.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/strategies/diff_evo.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/strategies/dual_annealing.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/strategies/firefly_algorithm.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/strategies/genetic_algorithm.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/strategies/greedy_ils.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/strategies/greedy_mls.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/strategies/hillclimbers.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/strategies/minimize.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/strategies/mls.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/strategies/ordered_greedy_mls.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/strategies/pso.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/strategies/random_sample.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/strategies/simulated_annealing.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/util.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/utils/__init__.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/kernel_tuner/utils/directives.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/__init__.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/context.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/strategies/test_bayesian_optimization.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/strategies/test_common.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/strategies/test_genetic_algorithm.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/strategies/test_strategies.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/synthetic_fp32_cache_NVIDIA_RTX_A4000.json +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_accuracy.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_backend.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_cache_file.json +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_common.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_compiler_functions.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_core.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_cuda_functions.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_cupy_functions.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_energy.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_file_utils.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_hip_functions.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_hyper.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_integration.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_kernelbuilder.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_nvml_mocked.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_observers.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_opencl_functions.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_pycuda_functions.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_pycuda_mocked.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_runners.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_searchspace.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_toml_file.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/test_util_functions.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/utils/__init__.py +0 -0
- {kernel_tuner-1.1.2 → kernel_tuner-1.1.3}/test/utils/test_directives.py +0 -0
|
@@ -106,7 +106,7 @@ class PyCudaFunctions(GPUBackend):
|
|
|
106
106
|
)
|
|
107
107
|
if cc == "00":
|
|
108
108
|
cc = self.context.get_device().compute_capability()
|
|
109
|
-
self.cc = str(cc
|
|
109
|
+
self.cc = str(cc)
|
|
110
110
|
self.iterations = iterations
|
|
111
111
|
self.current_module = None
|
|
112
112
|
self.func = None
|
|
@@ -180,6 +180,9 @@ class PyCudaFunctions(GPUBackend):
|
|
|
180
180
|
# pycuda does not support bool, convert to uint8 instead
|
|
181
181
|
elif isinstance(arg, np.bool_):
|
|
182
182
|
gpu_args.append(arg.astype(np.uint8))
|
|
183
|
+
# pycuda does not support 16-bit formats, view them as uint16
|
|
184
|
+
elif isinstance(arg, np.generic) and str(arg.dtype) in ("float16", "bfloat16"):
|
|
185
|
+
gpu_args.append(arg.view(np.uint16))
|
|
183
186
|
# if not an array, just pass argument along
|
|
184
187
|
else:
|
|
185
188
|
gpu_args.append(arg)
|
|
@@ -122,7 +122,7 @@ class KernelSource(object):
|
|
|
122
122
|
The files beyond the first are considered additional files that may also contain tunable parameters
|
|
123
123
|
|
|
124
124
|
For each file beyond the first this function creates a temporary file with
|
|
125
|
-
preprocessors statements inserted.
|
|
125
|
+
preprocessors statements inserted. Occurrences of the original filenames in the
|
|
126
126
|
first file are replaced with their temporary counterparts.
|
|
127
127
|
|
|
128
128
|
:param kernel_name: A string specifying the kernel name.
|
|
@@ -180,7 +180,7 @@ class KernelSource(object):
|
|
|
180
180
|
temp_file = util.get_temp_filename(suffix="." + f.split(".")[-1])
|
|
181
181
|
temp_files[f] = temp_file
|
|
182
182
|
util.write_file(temp_file, ks)
|
|
183
|
-
# replace
|
|
183
|
+
# replace occurrences of the additional file's name in the first kernel_string with the name of the temp file
|
|
184
184
|
kernel_string = kernel_string.replace(f, temp_file)
|
|
185
185
|
|
|
186
186
|
return name, kernel_string, temp_files
|
|
@@ -511,7 +511,7 @@ class DeviceInterface(object):
|
|
|
511
511
|
# run the kernel
|
|
512
512
|
check = self.run_kernel(func, gpu_args, instance)
|
|
513
513
|
if not check:
|
|
514
|
-
return # runtime failure
|
|
514
|
+
return # runtime failure occurred that should be ignored, skip correctness check
|
|
515
515
|
|
|
516
516
|
# retrieve gpu results to host memory
|
|
517
517
|
result_host = []
|
|
@@ -595,7 +595,7 @@ class DeviceInterface(object):
|
|
|
595
595
|
if kernel_options.texmem_args is not None:
|
|
596
596
|
self.dev.copy_texture_memory_args(kernel_options.texmem_args)
|
|
597
597
|
|
|
598
|
-
# stop compilation stopwatch and convert to
|
|
598
|
+
# stop compilation stopwatch and convert to milliseconds
|
|
599
599
|
last_compilation_time = 1000 * (time.perf_counter() - start_compilation)
|
|
600
600
|
|
|
601
601
|
# test kernel for correctness
|
|
@@ -628,7 +628,7 @@ class DeviceInterface(object):
|
|
|
628
628
|
)
|
|
629
629
|
raise e
|
|
630
630
|
|
|
631
|
-
# clean up any temporary files, if no error
|
|
631
|
+
# clean up any temporary files, if no error occurred
|
|
632
632
|
instance.delete_temp_files()
|
|
633
633
|
|
|
634
634
|
result["compile_time"] = last_compilation_time or 0
|
|
@@ -815,9 +815,9 @@ def _default_verify_function(instance, answer, result_host, atol, verbose):
|
|
|
815
815
|
if isinstance(answer[i], (np.ndarray, cp.ndarray)) and isinstance(
|
|
816
816
|
arg, (np.ndarray, cp.ndarray)
|
|
817
817
|
):
|
|
818
|
-
if answer[i].dtype
|
|
818
|
+
if not np.can_cast(arg.dtype, answer[i].dtype):
|
|
819
819
|
raise TypeError(
|
|
820
|
-
f"Element {i} of the expected results list is not
|
|
820
|
+
f"Element {i} of the expected results list has a dtype that is not compatible with the dtype of the kernel output: "
|
|
821
821
|
+ str(answer[i].dtype)
|
|
822
822
|
+ " != "
|
|
823
823
|
+ str(arg.dtype)
|
|
@@ -905,7 +905,7 @@ def _default_verify_function(instance, answer, result_host, atol, verbose):
|
|
|
905
905
|
+ " detected during correctness check"
|
|
906
906
|
)
|
|
907
907
|
print(
|
|
908
|
-
"this error
|
|
908
|
+
"this error occurred when checking value of the %oth kernel argument"
|
|
909
909
|
% (i,)
|
|
910
910
|
)
|
|
911
911
|
print(
|
|
@@ -934,7 +934,7 @@ def split_argument_list(argument_list):
|
|
|
934
934
|
match = re.match(regex, arg, re.S)
|
|
935
935
|
if not match:
|
|
936
936
|
raise ValueError("error parsing templated kernel argument list")
|
|
937
|
-
type_list.append(re.sub(r"\s+", " ", match.group(1).strip(), re.S))
|
|
937
|
+
type_list.append(re.sub(r"\s+", " ", match.group(1).strip(), flags=re.S))
|
|
938
938
|
name_list.append(match.group(2).strip())
|
|
939
939
|
return type_list, name_list
|
|
940
940
|
|
|
@@ -956,7 +956,7 @@ def apply_template_typenames(type_list, templated_typenames):
|
|
|
956
956
|
# if the templated typename occurs as a token in the string, meaning that it is enclosed in
|
|
957
957
|
# beginning of string or whitespace, and end of string, whitespace or star
|
|
958
958
|
regex = r"(^|\s+)(" + k + r")($|\s+|\*)"
|
|
959
|
-
sub = re.sub(regex, replace_typename_token, arg_type, re.S)
|
|
959
|
+
sub = re.sub(regex, replace_typename_token, arg_type, flags=re.S)
|
|
960
960
|
type_list[i] = sub
|
|
961
961
|
|
|
962
962
|
|
|
@@ -6,7 +6,7 @@ build-backend = "poetry.core.masonry.api"
|
|
|
6
6
|
name = "kernel_tuner"
|
|
7
7
|
packages = [{ include = "kernel_tuner", from = "." }]
|
|
8
8
|
description = "An easy to use CUDA/OpenCL kernel tuner in Python"
|
|
9
|
-
version = "1.1.
|
|
9
|
+
version = "1.1.3" # adhere to PEP440 versioning: https://packaging.python.org/en/latest/guides/distributing-packages-using-setuptools/#id55
|
|
10
10
|
license = "Apache-2.0"
|
|
11
11
|
authors = [
|
|
12
12
|
"Ben van Werkhoven <b.vanwerkhoven@esciencecenter.nl>",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|