Summary of changes since v1.0.3
License
GT4Py is now licensed under the BSD license. SPDX-License-Identifier: BSD-3-Clause
Cartesian
- Introduced a
GlobalTable
which is a data dimensions only Field. Access is provided via.A
which also becomes a way to access data dimensions on regular Field. - Added an error message if a non existing backend is selected.
- Allow setting compiler optimization level and flags on a per stencil basis
- Added
GT4PY_EXTRA_COMPILE_ARGS
,GT4PY_EXTRA_LINK_ARGS
andDACE_DEFAULT_BLOCK_SIZE
environment variables - Fixes for the DaCe backend
- Various style modernizations
Deprecation
- The
cuda
backend is deprecated (enable by setting environment variableGT4PY_GTC_CUDA_USE=1
), usegt:gpu
ordace:gpu
instead.
Development
- Replaced flake8, black with ruff
- Added CI plan with GH200 GPUs
All changes
- feature[next]: Temporary extraction heuristics by @tehrengruber in #1341
- fix[next]: Detection of ROCM vs CUDA gpu runtime by @edopao in #1448
- ci: Update CI config to use new template for container build by @edopao in #1450
- feat[next]: Slicing field to 0d to return field not scalar by @nfarabullini in #1427
- feature[next]: Improve CollapseTuple pass by @tehrengruber in #1350
- fix[next][dace]: Bugfix in neighbor reduction by @edopao in #1456
- refactor[next]: Change foast lowering from iterator of tuple to tuple of iterator by @tehrengruber in #1449
- fix[next]: Disable collapse tuple
if
propagation by @tehrengruber in #1454 - fix[next][dace]: Bugfix for nested neighbor reduction by @edopao in #1457
- feat[next][dace]: Use gt4py symbols for field size as dace array shape by @edopao in #1458
- feature[next]: toolchain configuration interfaces by @DropD in #1438
- feat[next][dace]: Remove offsets in connectivity arrays by @edopao in #1460
- build: Remove duplicated factory-boy dependency. by @egparedes in #1465
- feat[next][dace]: Remove array offsets by @edopao in #1459
- feat[next]: Embedded support for skip value connectivities by @havogt in #1441
- feat[next]: new domain slice syntax by @nfarabullini in #1453
- feat[next]: config improvements by @DropD in #1461
- fix[next][dace]: Fix translation of if statement from tasklet to inter-state condition by @edopao in #1469
- feat[cartesian]: Setting extra compile args and DaCe block size via env variables by @stubbiali in #1462
- bug[next]: Fix reverse operators in embedded by @havogt in #1467
- build: fix tox requirements task and hypothesis setting with updated version by @egparedes in #1472
- feature[next]: Fix caching stability by @tehrengruber in #1473
- feat[next][dace]: make canonical representation of field domain optional by @edopao in #1476
- refactor[next]: Refactor workflow based executors and move the backend class. by @DropD in #1470
- feat[next][dace]: Add gt4py workflow for the DaCe backend by @edopao in #1477
- fix[next][dace]: accept runtime lift_mode as argument to dace backend by @edopao in #1481
- feat[cartesian]: read-only data dims direct access & Fields by @FlorianDeconinck in #1451
- style: Fix leftovers of moving lint infrastructure to ruff by @egparedes in #1480
- feature[next]: Inline center deref lift vars by @tehrengruber in #1455
- bug[next]: Increase recursion limit in TraceShift pass by @tehrengruber in #1482
- bug[next]: Fix CSCS CI by pinning cupy to 12.3.0 by @tehrengruber in #1485
- bug[next]: Mark cupy tests as requires gpu by @tehrengruber in #1483
- feat[next]: variadic generic type by @nfarabullini in #1486
- refactor[next]: workflowify PAST -> ITIR toolchain step by @DropD in #1479
- style[next]: stricter typing in ffront by @havogt in #1492
- feat[next]: concat_where for boundary conditions by @havogt in #1468
- style[next]: improve typing in next.type_translation by @havogt in #1493
- bug[next]: fix _Dedup for tuples in type_inference by @havogt in #1495
- style[next]: more strict typing by @havogt in #1494
- fix[next][dace]: Fixes to DaCe backend to support latest ITIR by @edopao in #1499
- feature[next]: Validate no dynamic offsets by @tehrengruber in #1504
- build: Update mypy configuration by @egparedes in #1505
- refactor[next]: NamedRange/NamedIndex tuple to NamedTuple by @nfarabullini in #1490
- bug[eve]: Preserve annex None value in visitors by @tehrengruber in #1508
- feature[next]: Improve ITIR constant folding by @tehrengruber in #1510
- bug[next]: Improve ITIR Pretty Printer by @tehrengruber in #1509
- refactor[next]: make function definition -> PAST into a workflow step by @DropD in #1500
- bug[next]: Fix gtfn code generation for negative literals by @tehrengruber in #1511
- feat[next][dace]: Remove old dace backend (replaced by workflow infrastructure) by @edopao in #1503
- build: add ruff to the automated requirement generation workflow by @egparedes in #1497
- build: bump minimum version of typing_extensions requirement by @egparedes in #1512
- Migrate from discontinued bump2version to bump-my-version by @egparedes in #1514
- feat[next]: workshop material and docs field Dims type hint update by @nfarabullini in #1489
- feat[next][dace]: Filter unused connectivity tables by @edopao in #1502
- bug[next]: fix minimum version of bump-my-version by @havogt in #1515
- style: update requirements and change ruff-format style to stable by @egparedes in #1517
- style: minimize vertical space style by @egparedes in #1518
- fix[next]: replace
extended_runtime_checkable
workaround by upgradingtyping_extensions
by @egparedes in #1519 - build: bump required typing_extensions version to skip buggy versions by @egparedes in #1522
- fix[next]: Fix Program.itir by @DropD in #1523
- feat[next][dace]: Several features for icon4py-backend integration by @edopao in #1525
- refactor[next]: itir embedded: cleaner closure run by @havogt in #1521
- refactor[next]: Fencil to itir.Program for gtfn by @havogt in #1524
- refactor[next]: Use type specification for itir.Literal by @tehrengruber in #1529
- refactor[next]: Use is_call_to instead of equality comparison with itir.Ref. by @tehrengruber in #1532
- test[next]: delete cppbackend_tests by @havogt in #1534
- refactor[next]: move lift_mode itir test fixture into program_processor by @havogt in #1533
- feat[cartesian]: gtc
cuda
backend deprecation by @FlorianDeconinck in #1498 - refactor[next]: workflowify step3 by @DropD in #1516
- ci[cartesian]: env var on CSCS-CI to suppress cuda backend deprecation error by @DropD in #1541
- ci: define pytest addopts settings as env var in tox config by @egparedes in #1542
- feat[cartesian]: Feedback when a bad backend is selected by @FlorianDeconinck in #1544
- feat[next]: extend embedded implementation of
premap()
by @egparedes in #1501 - build: update frozen dependencies by @havogt in #1543
- refactor[next]: cleaner toolchain by @DropD in #1537
- feat[next][dace]: Modify name of stride symbols by @edopao in #1548
- ci: add manual trigger for daily-ci by @havogt in #1558
- ci: fix daily min-requirements by @havogt in #1557
- ci: use public path for cscs-ci images by @havogt in #1560
- ci: cscs-ci upgrade boost to latest by @havogt in #1561
- feat[cartesian]: Specify compiler optimization level and flags via env variables by @stubbiali in #1491
- build: bump DaCe package version by @edopao in #1556
- refactor[next]: new ITIR type inference by @tehrengruber in #1531
- build[next]: Compatibility with nanobind 2.x by @havogt in #1547
- feat[storage]: add support for numpy and cupy 2.0 by @egparedes in #1563
- refactor[next]: embedded with itir.Program by @havogt in #1530
- bug[next]: Fix missing visit call in call to cast builtin in ITIR type inference by @tehrengruber in #1566
- feat[next]: Check fencil/program args in ITIR type inference by @tehrengruber in #1565
- feat[next][dace]: Use DaCe SDFG fastcall by @edopao in #1562
- Add Gitlab CI/CD targets for gh200 by @edopao in #1546
- feat[cartesian]: add extra_link_args for flexible support of various compiler build by @xyuan in #1552
- bug[next]: Add assert for OOB access by @tehrengruber in #1571
- build: update frozen requirements by @havogt in #1572
- test[next]: Use pytest marker to skip GTIR test (fix spack build) by @edopao in #1575
- feat[next][dace]: Skeleton of GTIR DaCe backend by @edopao in #1538
- ci[next]: Enable Github CI on GTIR branch by @tehrengruber in #1581
- ci: Disable CSCS-CI on gh200 nodes by @edopao in #1585
- fix[next]: Fix size temporary size computation by @tehrengruber in #1584
- feat[next][dace]: GTIR-to-SDFG lowering of shifts by @edopao in #1577
- test[next]: Start using requires_dace marker (as cartesian tests already do) by @edopao in #1588
- feat[next]: GT4Py programs as DaCe SDFGConvertibles by @kotsaloscv in #1527
- feat[next][dace]: GTIR-to-SDFG lowering of let-lambdas by @edopao in #1589
- feat[next][dace]: GTIR-to-SDFG lowering of neighbors and reduce by @edopao in #1597
- ci: Re-enable CI on GH200 nodes by @edopao in #1596
- fix[next][dace]: Bugfix for neighbors reduction with lift expressions by @edopao in #1599
- ci: GH200 test instability by @edopao in #1600
- build: update dependencies, remove deprecated types-all by @havogt in #1605
- ci: Disable CI job for GH200 by @edopao in #1614
- License Change to BSD-3-Clause by @havogt in #1613
- feat[next][dace]: GTIR-to-SDFG lowering of if-builtin on values by @edopao in #1602
- feat[next][dace]: GTIR-to-SDFG lowering of cast_ builtin by @edopao in #1610
- feat[next]: Extend constant folding for literals and add respective test cases by @SF-N in #1564
- feat[next][dace]: Fix GTIR-to-SDFG lowering for failing tests by @edopao in #1609
- GTIR domain inference by @SF-N in #1568
- feat[next]: Lowering foast/past to GTIR by @havogt in #1569
- feat[next]: allow import of Dimensions from modules within gt4py code by @nfarabullini in #1615
- feat[next][dace]: GTIR-to-SDFG lowering of let-lambdas (using NestedSDFG) by @edopao in #1601
- refactor: Remove stale references to flake8 by @romanc in #1625
- ci: enhance CI workflows and make them consistent (tox and GH actions) by @egparedes in #1590
- feat[next][dace]: Build clean nestedSDFG without unused data connectors by @edopao in #1628
- docs: Fixed typos in ADRs and a docstring by @romanc in #1627
- refactor[cartesian]: Enable MaskInlining in gt4yp - DaCe bridge by @romanc in #1624
- fix[cartesian]: Fix serialize default behavior when Pickled property was not saved by @FlorianDeconinck in #1629
- feat[next][dace]: Dace fieldview transformations by @philip-paul-mueller in #1594
- test[dace]: Add skip rules for dace optional dependency by @edopao in #1635
- bug[next]: enable scalar math operations in embedded by @egparedes in #1636
- feature[next]: Extend cartesian offset syntax by @SF-N in #1484
- test[dace]: Fix skip rules for dace optional dependency by @edopao in #1637
- refactor: use modern-style type hints by @romanc in #1632
- refactor[cartesian]: readability improvements in gtir -> oir conversion and other cleanups by @romanc in #1630
- style: Remove stale references to isort by @romanc in #1631
- bug[next]: Fix implicit offset provider by @tehrengruber in #1638
- changed organization from C2SM to EXCLAIM in authors by @nfarabullini in #1640
- feat[next]: Type inference: Add support for tuple arguments in
cond
by @tehrengruber in #1626 - feature[next]: Nested scalars args & cleanup by @tehrengruber in #1540
- bug[next]: fix lowering of
astype
on tuples containing scalars by @havogt in #1642 - feat[next]: Prepare TraceShift pass for GTIR by @tehrengruber in #1592
- feat[next]: Refactor CSE pass to support ITIR.Program by @tehrengruber in #1646
- chore: add pre-commit hook for the tach tool to control dependencies by @egparedes in #1641
- feat[dace]: Modified
gt_simplify()
by @philip-paul-mueller in #1647 - feat[next][dace]: generic scalar expressions as fieldop args by @edopao in #1633
- feat[next][dace]: add workflow for dace fieldview backend by @edopao in #1623
- feat[dace]: Custom SDFG inline pass by @philip-paul-mueller in #1649
- bug[next]: Enable test_ffront_lap again by @tehrengruber in #1652
- feat[next]: domain inference for let, make_tuple, tuple_get, cond by @SF-N in #1591
- Releasing 1.0.4 version. by @havogt in #1654
New Contributors
Full Changelog: v1.0.3...v1.0.4