Skip to content

Commit 3ef2e63

Browse files
authored
Merge pull request #1339 from thewtex/wasm-config-options
perf(itkwasm): additional wasmtime config options
2 parents f753162 + ce235bd commit 3ef2e63

File tree

3 files changed

+50
-76
lines changed

3 files changed

+50
-76
lines changed

packages/core/python/itkwasm/itkwasm/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""itkwasm: Python interface to itk-wasm WebAssembly modules."""
22

3-
__version__ = "1.0b186"
3+
__version__ = "1.0b188"
44

55
from .interface_types import InterfaceTypes
66
from .image import Image, ImageType, ImageRegion

packages/core/python/itkwasm/itkwasm/pipeline.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,13 @@ def __init__(self, pipeline: Union[str, Path, bytes]):
165165
self.config = Config()
166166
self.config.wasm_bulk_memory = True
167167
self.config.wasm_simd = True
168+
self.config.wasm_relaxed_simd = True
169+
self.config.wasm_relaxed_simd_deterministic = True
168170
self.config.wasm_memory64 = True
171+
self.config.cranelift_opt_level = "speed"
172+
self.config.strategy = "cranelift"
173+
self.config.cache = True
174+
self.config.parallel_compilation = True
169175
self.engine = Engine(self.config)
170176
if isinstance(pipeline, bytes):
171177
wasm_bytes = pipeline

packages/core/python/itkwasm/test/test_pyodide.py

Lines changed: 43 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,27 @@
11
import pytest
22
import sys
3+
from pathlib import Path
34

45
if sys.version_info < (3, 10):
56
pytest.skip("Skipping pyodide tests on older Python", allow_module_level=True)
67

7-
from pytest_pyodide import run_in_pyodide
8+
from pytest_pyodide import run_in_pyodide, copy_files_to_pyodide
89

9-
from itkwasm import __version__ as test_package_version
10+
#from itkwasm import __version__ as test_package_version
11+
test_package_version = '1.0b188'
1012

1113

12-
@pytest.fixture
1314
def package_wheel():
14-
return f"itkwasm-{test_package_version}-py3-none-any.whl"
15+
wheel_stem = f"itkwasm-{test_package_version}-py3-none-any.whl"
16+
wheel_path = Path(__file__).parent.parent / 'dist' / 'pyodide' / wheel_stem
17+
return wheel_path, wheel_stem
1518

19+
file_list = [package_wheel(),]
1620

17-
@run_in_pyodide(packages=["micropip", "numpy"])
18-
async def test_image_conversion(selenium, package_wheel):
19-
import micropip
20-
21-
await micropip.install(package_wheel)
2221

22+
@copy_files_to_pyodide(file_list=file_list, install_wheels=True)
23+
@run_in_pyodide(packages=["numpy"])
24+
async def test_image_conversion(selenium):
2325
from itkwasm import Image
2426
from itkwasm.pyodide import to_js, to_py
2527
import numpy as np
@@ -71,13 +73,9 @@ async def test_image_conversion(selenium, package_wheel):
7173
assert isinstance(image_py.metadata, dict)
7274
assert np.array_equal(image_py.data, np.arange(16, dtype=np.uint8).reshape((4, 4)))
7375

74-
75-
@run_in_pyodide(packages=["micropip", "numpy"])
76-
async def test_point_set_conversion(selenium, package_wheel):
77-
import micropip
78-
79-
await micropip.install(package_wheel)
80-
76+
@copy_files_to_pyodide(file_list=file_list, install_wheels=True)
77+
@run_in_pyodide(packages=["numpy"])
78+
async def test_point_set_conversion(selenium):
8179
from itkwasm import PointSet, PointSetType, PixelTypes, FloatTypes
8280
from itkwasm.pyodide import to_js, to_py
8381
import numpy as np
@@ -115,12 +113,9 @@ async def test_point_set_conversion(selenium, package_wheel):
115113
assert np.array_equal(point_set.pointData, point_set_py.pointData)
116114

117115

118-
@run_in_pyodide(packages=["micropip", "numpy"])
119-
async def test_mesh_conversion(selenium, package_wheel):
120-
import micropip
121-
122-
await micropip.install(package_wheel)
123-
116+
@copy_files_to_pyodide(file_list=file_list, install_wheels=True)
117+
@run_in_pyodide(packages=["numpy"])
118+
async def test_mesh_conversion(selenium):
124119
from itkwasm import Mesh, MeshType
125120
from itkwasm.pyodide import to_js, to_py
126121
import numpy as np
@@ -158,12 +153,9 @@ async def test_mesh_conversion(selenium, package_wheel):
158153
assert np.array_equal(mesh.pointData, mesh_py.pointData)
159154

160155

161-
@run_in_pyodide(packages=["micropip", "numpy"])
162-
async def test_polydata_conversion(selenium, package_wheel):
163-
import micropip
164-
165-
await micropip.install(package_wheel)
166-
156+
@copy_files_to_pyodide(file_list=file_list, install_wheels=True)
157+
@run_in_pyodide(packages=["numpy"])
158+
async def test_polydata_conversion(selenium):
167159
from itkwasm import PolyData, PolyDataType
168160
from itkwasm.pyodide import to_js, to_py
169161
import numpy as np
@@ -198,12 +190,9 @@ async def test_polydata_conversion(selenium, package_wheel):
198190
assert polydata.numberOfPointPixels == polydata_py.numberOfPointPixels
199191
assert np.array_equal(polydata.pointData, polydata_py.pointData)
200192

201-
@run_in_pyodide(packages=["micropip", "numpy"])
202-
async def test_transform_conversion(selenium, package_wheel):
203-
import micropip
204-
205-
await micropip.install(package_wheel)
206-
193+
@copy_files_to_pyodide(file_list=file_list, install_wheels=True)
194+
@run_in_pyodide(packages=["numpy"])
195+
async def test_transform_conversion(selenium):
207196
from itkwasm import Transform, TransformType, TransformParameterizations
208197
from itkwasm.pyodide import to_js, to_py
209198
import numpy as np
@@ -234,12 +223,9 @@ async def test_transform_conversion(selenium, package_wheel):
234223
-65.99999999999997, 69.00000000000004, 32.000000000000036]))
235224
print('transform_py', transform_py)
236225

237-
@run_in_pyodide(packages=["micropip", "numpy"])
238-
async def test_binary_stream_conversion(selenium, package_wheel):
239-
import micropip
240-
241-
await micropip.install(package_wheel)
242-
226+
@copy_files_to_pyodide(file_list=file_list, install_wheels=True)
227+
@run_in_pyodide(packages=["numpy"])
228+
async def test_binary_stream_conversion(selenium):
243229
from itkwasm import BinaryStream
244230
from itkwasm.pyodide import to_js, to_py
245231

@@ -255,12 +241,9 @@ async def test_binary_stream_conversion(selenium, package_wheel):
255241
assert binary_stream_py.data[3], 239
256242

257243

258-
@run_in_pyodide(packages=["micropip", "numpy"])
259-
async def test_text_stream_conversion(selenium, package_wheel):
260-
import micropip
261-
262-
await micropip.install(package_wheel)
263-
244+
@copy_files_to_pyodide(file_list=file_list, install_wheels=True)
245+
@run_in_pyodide(packages=["numpy"])
246+
async def test_text_stream_conversion(selenium):
264247
from itkwasm import TextStream
265248
from itkwasm.pyodide import to_js, to_py
266249

@@ -273,12 +256,9 @@ async def test_text_stream_conversion(selenium, package_wheel):
273256
assert text_stream_py.data == data
274257

275258

276-
@run_in_pyodide(packages=["micropip", "numpy"])
277-
async def test_binary_file_conversion(selenium, package_wheel):
278-
import micropip
279-
280-
await micropip.install(package_wheel)
281-
259+
@copy_files_to_pyodide(file_list=file_list, install_wheels=True)
260+
@run_in_pyodide(packages=["numpy"])
261+
async def test_binary_file_conversion(selenium):
282262
from itkwasm import BinaryFile
283263
from itkwasm.pyodide import to_js, to_py
284264
import numpy as np
@@ -302,12 +282,9 @@ async def test_binary_file_conversion(selenium, package_wheel):
302282
assert data_py[3], 239
303283

304284

305-
@run_in_pyodide(packages=["micropip", "numpy"])
306-
async def test_text_file_conversion(selenium, package_wheel):
307-
import micropip
308-
309-
await micropip.install(package_wheel)
310-
285+
@copy_files_to_pyodide(file_list=file_list, install_wheels=True)
286+
@run_in_pyodide(packages=["numpy"])
287+
async def test_text_file_conversion(selenium):
311288
from itkwasm import TextFile
312289
from itkwasm.pyodide import to_js, to_py
313290
import numpy as np
@@ -328,12 +305,9 @@ async def test_text_file_conversion(selenium, package_wheel):
328305
assert data_py == data
329306

330307

331-
@run_in_pyodide(packages=["micropip", "numpy"])
332-
async def test_list_conversion(selenium, package_wheel):
333-
import micropip
334-
335-
await micropip.install(package_wheel)
336-
308+
@copy_files_to_pyodide(file_list=file_list, install_wheels=True)
309+
@run_in_pyodide(packages=["numpy"])
310+
async def test_list_conversion(selenium):
337311
from itkwasm import TextFile
338312
from itkwasm.pyodide import to_js, to_py
339313
import numpy as np
@@ -363,12 +337,9 @@ def verify_text_file(text_file):
363337
verify_text_file(text_file)
364338

365339

366-
@run_in_pyodide(packages=["micropip", "numpy"])
367-
async def test_uint8array_conversion(selenium, package_wheel):
368-
import micropip
369-
370-
await micropip.install(package_wheel)
371-
340+
@copy_files_to_pyodide(file_list=file_list, install_wheels=True)
341+
@run_in_pyodide(packages=["numpy"])
342+
async def test_uint8array_conversion(selenium):
372343
from itkwasm.pyodide import to_js, to_py
373344

374345
data = bytes([222, 173, 190, 239])
@@ -390,12 +361,9 @@ async def test_uint8array_conversion(selenium, package_wheel):
390361
assert ivalue == ivalue_py
391362

392363

364+
@copy_files_to_pyodide(file_list=file_list, install_wheels=True)
393365
@run_in_pyodide(packages=["micropip"])
394-
async def test_json_object_conversion(selenium, package_wheel):
395-
import micropip
396-
397-
await micropip.install(package_wheel)
398-
366+
async def test_json_object_conversion(selenium):
399367
from itkwasm.pyodide import to_js, to_py
400368

401369
data = {"a": 1, "b": True, "c": {"nested": True}}

0 commit comments

Comments
 (0)