fullwave25 1.3.2.dev2__tar.gz → 1.3.2.dev3__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.
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/.bumpversion.toml +1 -1
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/PKG-INFO +1 -1
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/__init__.py +1 -1
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/solver/solver.py +54 -38
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/pyproject.toml +1 -1
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/uv.lock +1 -1
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/.gitignore +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/.pre-commit-config.yaml +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/.python-version +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/CITATION.cff +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/CONTRIBUTING.md +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/LICENSE +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/Makefile +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/README.md +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/attenuation.png +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/beamformer.m +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/debug_solver_bin/fullwave2_2d_2_relax_multi_gpu_cuda124 +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/debug_solver_bin/fullwave2_2d_exponential_attenuation_multi_gpu +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/debug_solver_bin/fullwave2_2d_exponential_attenuation_multi_gpu_cuda124 +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/debug_solver_bin/fullwave2_2d_exponential_attenuation_multi_gpu_cuda124_ +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/debug_solver_bin/fullwave2_3d_exponential_attenuation_multi_gpu_cuda124 +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/debug_solver_bin/fullwave2_3d_exponential_attenuation_multi_gpu_cuda124_ +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/experiments/__init__.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/experiments/exp_scatterer_diameter.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/beamformer/__init__.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/beamformer/beamformer.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/constants/__init__.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/constants/material_properties.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/grid.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/medium.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/medium_builder/__init__.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/medium_builder/domain.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/medium_builder/medium_builder.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/medium_builder/presets/__init__.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/medium_builder/presets/data/.keep +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/medium_builder/presets/data/abdominal_wall/i2365f_etfw1.mat +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/medium_builder/presets/domain_abdominal_wall.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/medium_builder/presets/domain_background.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/medium_builder/presets/domain_scatterer.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/medium_builder/presets/domain_simple.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/medium_builder/presets/domain_water_gel.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/sensor.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/solver/__init__.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/solver/binary_manager.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/solver/bins/_gpu/2d/num_relax=2/fullwave2_2d_2_relax_multi_gpu_cuda118 +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/solver/bins/_gpu/2d/num_relax=2/fullwave2_2d_2_relax_multi_gpu_cuda124 +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/solver/bins/_gpu/2d/num_relax=2/fullwave2_2d_2_relax_multi_gpu_cuda129 +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/solver/bins/_gpu/2d/num_relax=2/fullwave2_2d_2_relax_multi_gpu_cuda130 +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/solver/bins/_gpu/3d/num_relax=2/fullwave2_3d_2_relax_multi_gpu_cuda118 +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/solver/bins/_gpu/3d/num_relax=2/fullwave2_3d_2_relax_multi_gpu_cuda124 +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/solver/bins/_gpu/3d/num_relax=2/fullwave2_3d_2_relax_multi_gpu_cuda129 +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/solver/bins/_gpu/3d/num_relax=2/fullwave2_3d_2_relax_multi_gpu_cuda130 +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/solver/bins/database/relaxation_params_database_num_relax=3_20260828_1513.mat +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/solver/bins/database/relaxation_params_database_num_relax=3_20260828_1513_invalid_cells.json +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/solver/bins/database/relaxation_params_database_num_relax=4_20260828_1456.mat +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/solver/bins/database/relaxation_params_database_num_relax=4_20260828_1456_invalid_cells.json +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/solver/cuda_utils.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/solver/input_file_writer.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/solver/launcher.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/solver/pml_builder.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/solver/shipped_database.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/solver/source_type.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/solver/utils.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/source.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/transducer.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/transmit.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/utils/__init__.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/utils/check_functions.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/utils/coordinates.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/utils/memory_tempfile.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/utils/numerical.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/utils/plot_utils.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/utils/pulse.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/utils/relaxation_parameters.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/utils/scatterer.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/utils/signal_filter.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/utils/signal_process.py +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/ruff.toml +0 -0
- {fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/signal_filter_example.png +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: fullwave25
|
|
3
|
-
Version: 1.3.2.
|
|
3
|
+
Version: 1.3.2.dev3
|
|
4
4
|
Summary: Fullwave 2.5: Ultrasound wave propagation simulation with heterogeneous power law attenuation modelling capabilities
|
|
5
5
|
Author: Masashi Sode, Gianmarco Pinton
|
|
6
6
|
Maintainer: Masashi Sode
|
|
@@ -66,7 +66,7 @@ try:
|
|
|
66
66
|
__version__ = version("fullwave")
|
|
67
67
|
except PackageNotFoundError:
|
|
68
68
|
# Update via bump-my-version, not manually
|
|
69
|
-
__version__ = "1.3.2-
|
|
69
|
+
__version__ = "1.3.2-dev3"
|
|
70
70
|
|
|
71
71
|
VERSION = __version__ # for convenience
|
|
72
72
|
logger.info("Fullwave version: %s", __version__)
|
|
@@ -56,18 +56,6 @@ VERIFIED_CUDA_ARCHITECTURES = [
|
|
|
56
56
|
]
|
|
57
57
|
|
|
58
58
|
|
|
59
|
-
COMPATIBLE_CUDA_VERSIONS = [
|
|
60
|
-
11.8,
|
|
61
|
-
12.4,
|
|
62
|
-
12.9,
|
|
63
|
-
13.0,
|
|
64
|
-
13.1,
|
|
65
|
-
]
|
|
66
|
-
|
|
67
|
-
COMPATIBLE_CUDA_RANGES = [
|
|
68
|
-
(11.8, 13.1),
|
|
69
|
-
]
|
|
70
|
-
|
|
71
59
|
VERIFIED_CUDA_VERSIONS = [
|
|
72
60
|
12.4,
|
|
73
61
|
12.9,
|
|
@@ -149,7 +137,33 @@ def _make_cuda_arch_option(*, use_gpu: bool = True) -> str:
|
|
|
149
137
|
return arch_option
|
|
150
138
|
|
|
151
139
|
|
|
152
|
-
def _make_cuda_version_option(*, use_gpu: bool = True) -> tuple[str, float]:
|
|
140
|
+
def _make_cuda_version_option(*, cuda_arch: str, use_gpu: bool = True) -> tuple[str, float]:
|
|
141
|
+
"""Return the CUDA tag of the binary to run on this driver and architecture.
|
|
142
|
+
|
|
143
|
+
The driver reports the newest CUDA version it supports, and it also runs a binary
|
|
144
|
+
built with an older CUDA version. The choice is therefore the newest CUDA version
|
|
145
|
+
with a build for the architecture that is not newer than the driver.
|
|
146
|
+
|
|
147
|
+
Parameters
|
|
148
|
+
----------
|
|
149
|
+
cuda_arch : str
|
|
150
|
+
The architecture option of the first GPU, such as "sm_90".
|
|
151
|
+
use_gpu : bool, optional
|
|
152
|
+
Whether the simulation runs on the GPU. Without it, the driver version is
|
|
153
|
+
returned unchecked.
|
|
154
|
+
|
|
155
|
+
Returns
|
|
156
|
+
-------
|
|
157
|
+
tuple[str, float]
|
|
158
|
+
The tag the binary name ends with, such as "cuda129", and its CUDA version.
|
|
159
|
+
|
|
160
|
+
Raises
|
|
161
|
+
------
|
|
162
|
+
ValueError
|
|
163
|
+
If the driver version cannot be read, or no build for the architecture is
|
|
164
|
+
as old as the driver or older.
|
|
165
|
+
|
|
166
|
+
"""
|
|
153
167
|
cuda_version: float = retrieve_cuda_version()
|
|
154
168
|
if use_gpu and cuda_version == -1:
|
|
155
169
|
error_msg = (
|
|
@@ -159,34 +173,30 @@ def _make_cuda_version_option(*, use_gpu: bool = True) -> tuple[str, float]:
|
|
|
159
173
|
logger.error(error_msg)
|
|
160
174
|
raise ValueError(error_msg)
|
|
161
175
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
176
|
+
if use_gpu:
|
|
177
|
+
built_versions = sorted(
|
|
178
|
+
version
|
|
179
|
+
for version, arch in COMPATIBLE_CUDA_VERSIONS_ARCHITECTURES_set
|
|
180
|
+
if arch == cuda_arch
|
|
167
181
|
)
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
182
|
+
runnable_versions = [version for version in built_versions if version <= cuda_version]
|
|
183
|
+
if not runnable_versions:
|
|
184
|
+
error_msg = (
|
|
185
|
+
f"No binary for architecture {cuda_arch} runs on a driver that supports "
|
|
186
|
+
f"CUDA {cuda_version}. The binaries for this architecture are built with "
|
|
187
|
+
f"CUDA {built_versions}. Please update the NVIDIA driver."
|
|
188
|
+
)
|
|
189
|
+
logger.error(error_msg)
|
|
190
|
+
raise ValueError(error_msg)
|
|
191
|
+
closest_version = runnable_versions[-1]
|
|
192
|
+
if closest_version != cuda_version:
|
|
176
193
|
message = (
|
|
177
|
-
f"Warning: CUDA version {cuda_version}
|
|
178
|
-
f"{
|
|
194
|
+
f"Warning: CUDA version {cuda_version} of the driver has no binary for "
|
|
195
|
+
f"architecture {cuda_arch}. "
|
|
179
196
|
f"Using the closest compatible version {closest_version} instead."
|
|
180
197
|
)
|
|
181
198
|
logger.warning(message)
|
|
182
199
|
cuda_version = closest_version
|
|
183
|
-
else:
|
|
184
|
-
error_msg = (
|
|
185
|
-
f"No compatible CUDA versions found below {cuda_version}. "
|
|
186
|
-
"Please install a compatible CUDA version."
|
|
187
|
-
)
|
|
188
|
-
logger.error(error_msg)
|
|
189
|
-
raise ValueError(error_msg)
|
|
190
200
|
|
|
191
201
|
if use_gpu and cuda_version not in VERIFIED_CUDA_VERSIONS:
|
|
192
202
|
warning_msg = (
|
|
@@ -240,7 +250,10 @@ def _retrieve_fullwave_simulation_path(
|
|
|
240
250
|
use_isotropic_relaxation: bool = True,
|
|
241
251
|
) -> Path:
|
|
242
252
|
arch_option = _make_cuda_arch_option(use_gpu=use_gpu)
|
|
243
|
-
cuda_version_option, cuda_version = _make_cuda_version_option(
|
|
253
|
+
cuda_version_option, cuda_version = _make_cuda_version_option(
|
|
254
|
+
use_gpu=use_gpu,
|
|
255
|
+
cuda_arch=arch_option,
|
|
256
|
+
)
|
|
244
257
|
if use_isotropic_relaxation is False:
|
|
245
258
|
error_msg = (
|
|
246
259
|
"Currently, only isotropic relaxation is supported. "
|
|
@@ -251,10 +264,13 @@ def _retrieve_fullwave_simulation_path(
|
|
|
251
264
|
# isotropic_str = "_isotropic" if use_isotropic_relaxation else ""
|
|
252
265
|
isotropic_str = ""
|
|
253
266
|
|
|
254
|
-
_check_compatible_set(
|
|
267
|
+
if use_gpu and not _check_compatible_set(
|
|
255
268
|
cuda_version=cuda_version,
|
|
256
269
|
cuda_arch=arch_option,
|
|
257
|
-
)
|
|
270
|
+
):
|
|
271
|
+
error_msg = f"No binary is built with CUDA {cuda_version} for architecture {arch_option}."
|
|
272
|
+
logger.error(error_msg)
|
|
273
|
+
raise ValueError(error_msg)
|
|
258
274
|
if use_exponential_attenuation:
|
|
259
275
|
if is_3d and use_gpu:
|
|
260
276
|
path_fullwave_simulation_bin = (
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "fullwave25"
|
|
3
|
-
version = "1.3.2-
|
|
3
|
+
version = "1.3.2-dev3" # Update via bump-my-version, not manually
|
|
4
4
|
description = "Fullwave 2.5: Ultrasound wave propagation simulation with heterogeneous power law attenuation modelling capabilities"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
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
|
{fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/medium_builder/presets/domain_background.py
RENAMED
|
File without changes
|
{fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/medium_builder/presets/domain_scatterer.py
RENAMED
|
File without changes
|
{fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/medium_builder/presets/domain_simple.py
RENAMED
|
File without changes
|
{fullwave25-1.3.2.dev2 → fullwave25-1.3.2.dev3}/fullwave/medium_builder/presets/domain_water_gel.py
RENAMED
|
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
|