Releases: GridTools/gt4py
Releases · GridTools/gt4py
GT4Py v1.1.2
Summary of changes since v1.1.1
General
- Added support for Python 3.14.
Cartesian
- New feature: Runtime Interval Bounds
All changes
- refactor[next][dace]: Simplify visitor of
concat_whereexpressions by @edopao in #2394 - fix[next][dace]: Use explicit dataflow in let-lambdas by @edopao in #2396
- ci[next]: skip
test_compile_variants_args_and_kwargswith dace backend and ROCM device by @edopao in #2400 - build[dace][next]: Updated DaCe Dependency by @philip-paul-mueller in #2401
- ci[next]: skip
test_compile_variants_tuplewith dace backend and ROCM device by @edopao in #2402 - feat[cartesian]: Runtime Interval Bounds by @twicki in #2395
- style[cartesian]: Cleanup in error messaging by @katrinafandrich in #2387
- build[dace][next]: Updated DaCe Dependency by @philip-paul-mueller in #2405
- bug[next]: Source location agnostic compilation hash by @tehrengruber in #2397
- fix[next][dace]: Use symbol mapping for stride propagation across nested SDFGs by @edopao in #2404
- ci/build/refactor[all]: python 3.14 support by @DropD in #2399
- ci[cartesian,next]: Upgrade scipy min version for py3.14 by @edopao in #2408
- refactor[eve,next]: UIDGenerator -> SequentialIDGenerator by @havogt in #2407
- fix[next]: apply cse in fuse_as_fieldop by @havogt in #2257
- refactor[next]: unroll_reduce deduce shift via typesystem by @havogt in #2267
- build: remove support for python releases breaking networkx by @egparedes in #2410
- fix[next][dace]: Unconditional execution of else-branch in if-statements by @edopao in #2412
- refactor[next][dace]: Move SDFG-lowering modules into subpackage by @edopao in #2409
- Releasing v1.1.2 by @havogt in #2414
New Contributors
- @katrinafandrich made their first contribution in #2387
Full Changelog: v1.1.1...v1.1.2
GT4Py v1.1.1
Summary of changes since v1.1.0
Cartesian
- Allow self-assignment with offset in K dimension in sequential vertical loops
- Bug fixes:
- Skip implicit upcasting in (explicit) cast operations
- Respect precision of Constants
All changes
- fix[cartesian]: upcast arguments of cast operations by @romanc in #2369
- docs[next][dace]: Updated
CompiledDaceProgramby @philip-paul-mueller in #2374 - Fix warning in thread block size setting by @iomaganaris in #2371
- fix[next][dace]: Use correct dtype for connectivity tables by @edopao in #2373
- feat[dace][next]: Added
DoubleWriteRemoverTransformation by @philip-paul-mueller in #2370 - fix[cartesian]: respect percision of constants by @romanc in #2377
- refactor[next][dace]: Rename array symbols for shape and strides by @edopao in #2378
- fix[next][dace]: Generate temporary array ids in determistic way by @edopao in #2380
- fix[next][dace]: Avoid name conflict between tasklet connector and SDFG data by @edopao in #2382
- refactor[next][dace]: Introduce
SDFGBuilder.add_nested_sdfgby @edopao in #2372 - perf[next]: Refactor of Program call arguments canonicalization by @egparedes in #2379
- fix[next][dace] Set properly strides of
datain CPU by @iomaganaris in #2384 - feat[next]: adding custom named collections of scalars and fields by @egparedes in #2232
- fix[cartesian]: Allow self-assignment with offset in K dimension in sequential vertical loops by @romanc in #2388
- bug[next]: disallow implicit bool conversion of fields by @havogt in #2393
- fix[gt4py]: Transform enums in tuple static args by @SF-N in #2389
- Releasing v1.1.1 by @havogt in #2391
Full Changelog: v1.1.0...v1.1.1
GT4Py v1.1.0
Summary of changes since v1.0.10
Cartesian
- New experimental feature: 2D temporaries.
- Removed deprecated
cudabackend. - Bug fixes:
- Absolute field-access in while-condition
- Upcasting of expressions on the lhs of assignments
Versioning
- Added a fallback version of the form
1.0.10+unknown.version.details, when no version is available from git.
Next
See commit history.
All changes
- fix[dace][next]: Fixed
DeadMapEliminationby @philip-paul-mueller in #2340 - feat[dace][next]: Added
MapToCopyby @philip-paul-mueller in #2311 - ci[cartesian]: increase time limit for cartesian / dace tests on gh200 by @romanc in #2335
- feat[cartesian]: 2D temporaries [Experimental] by @FlorianDeconinck in #2314
- refactor[cartesian]: Remove
cudabackend by @romanc in #2337 - cartesian[fix]: Remove hard check on ADR existing for experimental feature by @FlorianDeconinck in #2343
- cartesian[fix]: Temporary annotation parsing by @FlorianDeconinck in #2347
- Improve setting of thread block size for 1D maps by @iomaganaris in #2344
- refactor[next][dace]: Refactoring tests of GTIR to SDFG lowering by @edopao in #2346
- feat[dace][next]: Map Splitter by @philip-paul-mueller in #2304
- build[dace][next]: Updated DaCe Dependency by @philip-paul-mueller in #2348
- feat[dace][next]: Modified How Degenerated 1D Maps Are Handled by @philip-paul-mueller in #2349
- perf[dace][next]: Updated Top Level Dataflow Optimization Stage by @philip-paul-mueller in #2284
- build: add script to set the default fallback version to latest release by @egparedes in #2341
- perf[next]: cache low level buffer information in fields by @egparedes in #2342
- refactor[next][dace]: Update lowering of domain by @edopao in #2350
- feat[dace][next]: Included
TrivialTaskleteliminationingt_simplify()by @philip-paul-mueller in #2316 - feat[dace][next]: Block Inlining of NestedSDFG Containing Scans by @philip-paul-mueller in #2315
- build[dace][next]: Updated DaCe Dependency by @philip-paul-mueller in #2352
- refactor[next][dace]: Cleanup SDFG lowering of tuples by @edopao in #2354
- feat[dace][next]: Strides of Views by @philip-paul-mueller in #2334
- fix[cartesian]: Fix absolute field-access in while-conditionals by @twicki in #2357
- fix[next][dace]: More strict check on node sequencing in
gt_create_local_double_bufferingby @edopao in #2359 - fix[dace][next]: Fixed Setting Strides of Views by @philip-paul-mueller in #2358
- feat[next]: Multiple output domains by @SF-N in #2225
- feat[dace][next]: Using the
canonicalize_memlet_trees()function by @philip-paul-mueller in #2351 - fix[cartesian]: do upcasting on both sides of assignments by @romanc in #2361
- test[cartesian]: absolute k access with index field and computation by @romanc in #2362
- perf[next][dace]: Remove temporary inside scan map scope by @edopao in #2355
- feat[dace][next] More Roboust Calling by @philip-paul-mueller in #2353
- bug[next]: fix timer precision loss by @havogt in #2364
- refactor[next]: Add check for GPU errors in debug mode by @edopao in #2365
- build[dace][next]: Updated DaCe Dependency by @philip-paul-mueller in #2367
- feat[next][dace]: Targeted transformation to remove copies in ICON4Pys vertically implicit solvers by @iomaganaris in #2329
- Releasing v1.1.0 by @havogt in #2366
Full Changelog: v1.0.10...v1.1.0
GT4Py v1.0.10
Summary of changes since v1.0.9
Cartesian
- New backend
dace:cpu_kfirst. - New experimental features:
- absolute indexing in K.
- expose K index.
- Fixes and performance improvements in DaCe backends.
- Improved error messages.
Development
- Enabled DaCe backends on AMD MI300 CI.
Next
See commit history.
All changes
- CI: enable dace tests on beverin by @edopao in #2263
- fix[next][dace]: check for gpu schedule before adding cudaStreamSynchronize by @edopao in #2260
- feat[next]: Transformation pass from runtime to compile-time domains by @SF-N in #2151
- feat[cartesian]: Add backend
dace:cpu_kfirstby @romanc in #2255 - fix[cartesian]: dace backend fixes by @romanc in #2259
- refactor[dace]: Removed Dublicated Code by @philip-paul-mueller in #2272
- fix[next][dace]: move cuda-codegen setting to gt4py config by @edopao in #2271
- fix[next][dace]: ensure unique names for conditional blocks and loop regions by @edopao in #2270
- perf[next][dace] Remove scalar views by @iomaganaris in #2166
- bug[next]: Fix non scan projector in global tmp pass by @tehrengruber in #2274
- tests[cartesian]: attempt to stabilize macos daily (uv resolution highest) by @romanc in #2269
- refactor[next]: Refactor static args mechanism by @tehrengruber in #2258
- fix[next]: Fix multi-node scaling issues of
FileCacheby @tehrengruber in #2261 - build[next]: update dace version by @edopao in #2275
- feat[next][dace]: extend CopyChainRemover to remove full-write copies by @edopao in #2273
- feature[cartesian]: absolute indexing in K (experimental) by @romanc in #2276
- fix[next]: Fix allocator typing by @havogt in #2279
- feat[next]: synchronous and synchronize compilation by @havogt in #2096
- feat[next][dace]: collect sdfg execution time with tasklet by @edopao in #2280
- feat[dace][next]: Added Inline Fuser by @philip-paul-mueller in #2283
- feat[next][dace]: Hooksystem for
gt_auto_optimizer()by @philip-paul-mueller in #2291 - feat[next]: flexible metric collections by @egparedes in #2287
- refactor[cartesian]: shiny error messges from the gt_script frontend by @romanc in #2042
- feat[dace][next]: Set GPU Thread Block Size Per Dimension from
gt_auto_optimizer()by @philip-paul-mueller in #2298 - cartesian[feat]: Expand push vertical map down to include
ForScopeby @FlorianDeconinck in #2290 - feat[dace][next]: Updated Splitting Fusion Transformations by @philip-paul-mueller in #2296
- bug[next]: Fix dead-code elimination on some
concat_whereexpressions by @tehrengruber in #2292 - refactor[next]: Cleanup implicit offsets by @havogt in #2299
- feat[bug]: Fix name collision in collapse tuple pass by @tehrengruber in #2301
- refactor[next][dace]: Move zero-origin constant substitution out of lowering module by @edopao in #2303
- doc[next]: Document
concat_wheredomain arg canonicalization by @tehrengruber in #2223 - feat[next]: Prune empty concat where branches pass by @tehrengruber in #2286
- fix[next][dace]: Avoid name conflict between tasklet connector and data node by @edopao in #2306
- build[cartesian]: update DaCe version by @romanc in #2307
- feat[next][dace]: Enable customization of auto-optimize in dace backend workflow by @edopao in #2295
- bug[next]: change flaky wait_for_compilation test by @havogt in #2297
- feat[dace][next]: Demotion of Fields by @philip-paul-mueller in #2288
- perf[next][dace] Avoid unnecessary vertical map splitting by @iomaganaris in #2278
- fix[next]: Fix offset provider access by @tehrengruber in #2310
- bug[next]: Add support for
nanandinfliterals in GTIR by @tehrengruber in #2308 - feat[next][dace]: Updated
gt_auto_optimizer()'s Hook-System by @philip-paul-mueller in #2294 - Revert "fix[next][dace]: Avoid name conflict between tasklet connector and data node" by @edopao in #2317
- perf[next][dace] Set GPU thread block size properly by @iomaganaris in #2313
- fix[next][dace]: Avoid name conflict between tasklet connector and data node by @edopao in #2318
- feat[next]: upgrade tree_map with custom constructor per original type by @havogt in #2285
- build[cartesian]: remove reference to gtpyc from pyproject.toml by @romanc in #2320
- fix[next][dace]: SDFG instrumentation with empty else-branch caused memory leak by @edopao in #2321
- test[cartesian]: remove duplicate dace parsing tests by @romanc in #2325
- feat[cartesian]: utils.warn_experimental_feature() by @romanc in #2324
- refactor[next][dace]: cleanup update_sdfg_args by @edopao in #2312
- refactor[next]: Reduce programs runtime overhead by @egparedes in #2305
- feat[next][dace]: enable overriding of cxx/cuda compiler arguments by @edopao in #2327
- Fix thread block size setting assertion by @iomaganaris in #2331
- feat[next]: Implement faster data pointer retrieval in ndarray-based fields by @egparedes in #2332
- feature[cartesian]: expose iteration index in
K(experimental) by @romanc in #2300 - build[dace][next]: Updated DaCe Dependency by @philip-paul-mueller in #2328
- refactor[next][dace]: Use global array instead of return value to collect the SDFG compute time by @edopao in #2333
- Releasing v1.0.10 by @havogt in #2330
Full Changelog: v1.0.9...v1.0.10
GT4Py v1.0.9
Summary of changes since v1.0.8
General
- Performance optimizations in
eve.visitorsclasses, by caching visitor methods at class level.
Cartesian
- Some fixes in dace backend.
Next
See commit history.
All changes
- refactor[next]: cleanups in the type system utilities by @egparedes in #2231
- fix[next][dace]: update strides of scan output in SDFG lowering by @edopao in #2241
- refactor[next]: Remove unconditionally_collapse_tuples by @SF-N in #2242
- fix[next][dace]: follow new canonical field domain order by @edopao in #2240
- bug[next][dace]: fix scope for SDFG binding function by @edopao in #2235
- refactor[cartesian]: invalid frontend/backend raise
ValueErrorby @romanc in #2243 - refactor[cartesian]: delete unused tile symbol function by @romanc in #2244
- perf[cartesian]: Align memory layout and loop structure by @romanc in #2245
- fix[cartesian]: actually use cached (to disk) SDFGs by @romanc in #2246
- fix[cartesian]: memlets of data dims in jit workflow by @romanc in #2247
- fix[cartesian]: Merge DaCe schedule tree roundtrip work by @romanc in #2248
- feat[next]: runtime field domains by @tehrengruber in #1893
- bug[next][dace]: Use session cache for SDFG build by @edopao in #2250
- bug[next][dace]: fix symbol mapping in lowering of let-statements by @edopao in #2251
- test[cartesian]: print cache location at start of test session by @romanc in #2252
- bug[next][dace]: fix dimensions order in
find_constant_symbolsby @edopao in #2256 - test[cartesian]: delete old/unused test utils by @romanc in #2254
- perf: cache dispatch results in eve.visitors by @egparedes in #2249
- refactor[next]: Remove dead-code in lowering utils by @tehrengruber in #2183
- Releasing v1.0.9 by @edopao in #2253
Full Changelog: v1.0.8...v1.0.9
GT4Py v1.0.8
Summary of changes since v1.0.7
Cartesian
- feature: support for
roundandround_away_from_zero - fix: support for np.bool_ in gtscript ValueInliner
Development
- Add AMD MI300 system to CSCS CI with testing for HIP
Next
See commit history.
All changes
- build[dace][next]: Updated DaCe Dependency by @philip-paul-mueller in #2213
- feat[dace][next]: Added Reduction Node Capabilities to the Rerouting Utility by @philip-paul-mueller in #2215
- fix[dace][next]: Fixed Multithreading Issue with
DaCe.Configby @philip-paul-mueller in #2214 - ci: Add beverin (AMD MI300) by @havogt in #2219
- fix[cartesian]: gtscript ValueInliner np.bool_ support by @romanc in #2221
- feat[cartesian]: Support for
round()/round_away_from_zero()in gtscript by @romanc in #2198 - refactor[next]: Introduce ConstructorType by @havogt in #2226
- docs,test[next]: Document and test
keep_existingdomains in temporary pass by @tehrengruber in #2222 - fix[next]: Fix small error with expection type by @iomaganaris in #2186
- bug[next]: Fix instability in SSA pass by @havogt in #2227
- feat[next]: Introduce typing module, expose more types, cleanup deprecated stuff by @havogt in #2229
- chore: update frozen dependencies by @havogt in #2230
- build[dace][next]: Updated DaCe Dependency by @philip-paul-mueller in #2228
- test[next][dace]: fix test expectation by @edopao in #2234
- bug[next]: fix exponential runtime in gtfn codegen by @havogt in #2236
- build: bump factory-boy minimum version by @havogt in #2233
- ci: switch to macos-latest in daily-CI by @edopao in #2239
- Releasing v1.0.8 by @havogt in #2237
Full Changelog: v1.0.7...v1.0.8
GT4Py v1.0.7
Summary of changes since v1.0.6
Cartesian
- Introduce switches for the default
intandfloatprecision. - Introduce
erfanderfcfunctions. - Make CUDA compilation thread-safe.
Development
- Add MacOS to daily CI.
Next
See commit history.
All changes
- feat[next][dace]: Updated GPU Transformations by @philip-paul-mueller in #2197
- ci: add MacOS to daily ci by @havogt in #2153
- feat[cartesian]: Expose
erf()anderfc()functions by @romanc in #2199 - feat[cartesian]: literal precision (float and int) by @romanc in #2187
- fix[next][dace]: Wrong memlet subset in lowering of deref by @edopao in #2200
- feat[next]: Indexing field in local dimension by @havogt in #2190
- fix[cartesian]: fix setuptools for parallel CUDA compilation by @SF-N in #2204
- build[dace][next]: Updated DaCe Dependency by @philip-paul-mueller in #2206
- fix[cartesian]: respect literal precision in dace backends by @romanc in #2208
- fix[dace][next]: "Fixed" Asynchronous SDFG by @philip-paul-mueller in #2201
- bug[next]: change passes to get rid of neighbors in list_get operations by @havogt in #2212
- Releasing v1.0.7. by @philip-paul-mueller in #2207
Full Changelog: v1.0.6...v1.0.7
GT4Py v1.0.6
Summary of changes since v1.0.5
Cartesian
- Introduced a debug backend, a plain python backend for debugging and rapid prototyping of features.
- Refactoring of the lowering to SDFG using DaCe ScheduleTree: the current bridge OIR -> TreeIR -> SDFG is replaced with OIR -> TreeIR -> ScheduleTree, then it relies on DaCe to expand ScheduleTree to SDFG.
Development
- GitHub Actions CI infrastructure updated with (optional)
test-componentsexclusions loaded from a dynamically generated JSON file.
Next
See commit history.
All changes
- ci: update development and GitHub Actions CI infrastructure by @egparedes in #2160
- feat[next][dace]: Config the gpu backend with async sdfg call by @edopao in #2163
- ci: fix bug in test-component workflow by @egparedes in #2164
- build[dace][next]: Updated the DaCe dependency. by @philip-paul-mueller in #2167
- fix[next]: Fix simple_mesh by @SF-N in #2165
- feat[cartesian] Debug Backend by @twicki in #1884
- refactor[cartesian]: Remove redundant text utilities. by @twicki in #2172
- build[dace][next]: Updated the DaCe Dependency. by @philip-paul-mueller in #2175
- fix[dace][next]: Fixed
mapPromoterby @philip-paul-mueller in #2169 - fix[dace][next]:
StateFusionLess Strict by @philip-paul-mueller in #2170 - feat[next][dace]: Enable cuda memory pool for temporary arrays by @edopao in #2130
- refactor[next][dace]: Introduce context dataclass in SDFG lowering by @edopao in #2014
- feat[next][dace]: Simplify symbolic expression based on domain range by @edopao in #2174
- fix[next][dace]: Specify
other_subsetin lowering of scan by @edopao in #2171 - fix[dace][next]: Fixed Wrong Import. by @philip-paul-mueller in #2179
- feat[dace][next]: Optimized
gt_inline_nested_sdfg(). by @philip-paul-mueller in #2178 - feat[next][dace]: Symbols Are No Longer Assumed To Be Positive. by @philip-paul-mueller in #2176
- feat[dace][next]: Less Extensive Validation During
gt_auto_optimizer()by @philip-paul-mueller in #2177 - feat[cartesian]: DaCe bridge refactor: OIR -> TreeIR -> ScheduleTree -> SDFG by @FlorianDeconinck in #2067
- feat[dace][next]: Optimized Split-Fusion Transformations by @philip-paul-mueller in #2181
- fix[dace][next]: Disabled
InlineSDFG. by @philip-paul-mueller in #2188 - refactor[cartesian, dace]: avoid duplicate transient check in
replace_strides()by @romanc in #2184 - fix[next][dace]: Do not crash if SDFG report not found by @edopao in #2191
- fix[next][dace]: Correct dace setting to use default cuda stream by @edopao in #2189
- build[next]: Update dace version by @edopao in #2193
- refactor[cartesian, dace]: simplify after specializing strides in stencil mode by @romanc in #2185
- fix[cartesian]: correct cachedir tag signature by @romanc in #2194
- feat[dace][next]: Introduce different Skip Categorieds During Optimization by @philip-paul-mueller in #2180
- build: new-style license, bump setuptools by @romanc in #2192
- fix[dace][next]: Miscellaneous DaCe Optimizer Optimization by @philip-paul-mueller in #2129
- Releasing v1.0.6. by @edopao in #2196
Full Changelog: v1.0.5...v1.0.6
GT4Py v1.0.5
Summary of changes since v1.0.4
General
- We added support for Python 3.12 and 3.13 and dropped support for Python < 3.10.
- We moved to versioningit for versioning: each commit will now have a version following the format
{major}.{minor}.{path}[.post{#commits since release}+{rev}[.dirty]], see section[tool.versioningit.format]inpyproject.toml. - The GridTools C++ library doesn't require Boost anymore, therefore there is no implicit dependency to Boost in GT4Py.
Cartesian
- New feature: Allow writes with K-offsets in
FORWARDandBACKWARDcomputations. - Undeprecated
__INLINEDas no concrete plans exist to implement an alternative. - Fixes cases with while-loops in conditionals.
- Fix @gtscript.function inlining in while-loops.
- Fixes in CuPy-ROCm storage allocation.
- Improved test coverage for horizontal regions.
- Improved some error messages and warnings.
- Various style modernizations (especially related to dropped support for Python < 3.10)
DaCe support in Cartesian
- Expose control flow elements to DaCe
- Fixes argument validation in intersection code of DaCeIR's
DomainInterval.
Development
- Switched to
uvis the standard project management tool.
All changes
- feat[cartesian]: K offset write by @FlorianDeconinck in #1452
- feat[next]: Apply common transforms from program by @tehrengruber in #1593
- feat[next]: AOT toolchain by @DropD in #1545
- Fix Some Typos in README by @fthaler in #1658
- fix: GitHub License Detection by @fthaler in #1657
- feat[next]: unary operator for number type cast by @nfarabullini in #1659
- fix: add ROCm compatiblity to storages by @egparedes in #1655
- fix[cartesian]: fix bugs in CuPy-ROCm storage allocation by @stubbiali in #1662
- fext[next]: HIP support by @havogt in #1661
- fix[next]: Fix usage of DaCe fast-call to SDFG by @edopao in #1656
- fix[next]: remove debug messages in OTF workflow by @edopao in #1666
- refactor[next]: Remove GTIR
condand useif_everywhere by @tehrengruber in #1665 - refactor[next]: ranaming of dace_utils module by @edopao in #1667
- fix[next][dace]: enable subdomain in let-statements by @edopao in #1668
- bug[next]: Refactor
PruneUnreferencedFundefspass by @tehrengruber in #1663 - refactor[next]: Move symbolic domain utilities to seperate module by @tehrengruber in #1671
- bug[next]: Fix wrong type annotation in domain inference by @tehrengruber in #1673
- fix[next][dace]: Initialization of partially written test array by @edopao in #1675
- fix[cartesian]: Fix
@gtscript.functioninlining inwhileloops by @FlorianDeconinck in #1669 - feat[next]: Allow SymbolicDomain.translate with
ALL_NEIGHBORSandVALUEby @tehrengruber in #1674 - feat[next][dace]: GTIR-to-SDFG lowering of tuples by @edopao in #1651
- refactor[next]: Cleanup toolchain by @tehrengruber in #1660
- feat[next]: Add support for IfStmt in ITIR by @tehrengruber in #1664
- feat[next][dace]: Canonicalize GTIR to enable lowering to SDFG for special cases by @edopao in #1681
- feat[next][dace]: refactoring by @edopao in #1685
- feat[next]: GTIR
as_fieldopfusion pass by @tehrengruber in #1670 - feat[next]: Add IR transform to remove unnecessary cast expressions by @edopao in #1688
- [next]: Fix inline lambda pass opcount preserving option by @tehrengruber in #1687
- feat[next]: gtir lowering of broadcasted scalars by @havogt in #1677
- feat[next]: Allow type inference without domain argument to
as_fieldopby @tehrengruber in #1689 - feat[next][dace]: GTIR-to-DaCe lowering of map-reduce (only full connectivity) by @edopao in #1683
- feat[next][dace]: GTIR-to-SDFG broadcast tuple scalar arg + cleanup by @edopao in #1693
- refactor[cartesian]: Warn if GT4Py can't find DaCe by @romanc in #1692
- feat[next]: GTIR temporary extraction pass by @tehrengruber in #1678
- feat[next][dace]: Cleanup scalar args by @edopao in #1695
- feat[next][dace]: GTIR-to-DaCe lowering of map-reduce with skip values by @edopao in #1694
- bug[next]: foast2gtir lowering of broadcasted field by @havogt in #1701
- fix[cartesian]: Verbose frontend error for bad call by @FlorianDeconinck in #1700
- fext[next]: GTIR embedded backend (not active in tests) by @havogt in #1702
- fix[next][dace]: Avoid bool cast in branch condition expressions by @edopao in #1707
- feat[next][dace]: Stop carrying reduce identity in args context by @edopao in #1704
- feat[next][dace]: Fix lowering of nested let-statements by @edopao in #1697
- bug[next][dace]: Fix lowering of broadcast by @edopao in #1698
- refactor[cartesian]: Replace
is_start_state=withis_start_block=when buiding the SDFG for DaCe by @romanc in #1709 - feat[next]: Allow partial type inference on ITIR by @tehrengruber in #1706
- tests: fix name of license file configured in pyproject.toml by @romanc in #1718
- ci: use actions/checkout@v4 and actions/setup-python@v5 by @romanc in #1717
- bug[next]: fix lowering of tuples of neighbors in conditionals by @havogt in #1710
- build: update dependencies by @havogt in #1720
- feat[next]: enable gtir.embedded (and add support for Lists in output) by @havogt in #1703
- test[cartesian]: Unskip blocked DaCe tests after DaCe upgrade by @romanc in #1714
- feat[next][dace]: Add helper method to replace unicode symbols by @edopao in #1696
- feat[next]: Index builtin by @SF-N in #1699
- test[next]: non-supported itir.List test-case by @havogt in #1721
- fix[DaCe]: Disable Some Transformations by @philip-paul-mueller in #1711
- build: update gitpod image by @havogt in #1722
- bug[next]: fix missing local kind in gtfn connectivity by @havogt in #1715
- feat[next]: Enable GTIR dace backend in feature tests by @edopao in #1705
- fix[cartesian]: While loops inside conditions by @romanc in #1712
- fix[next][dace]: Fix for nested SDFG outer data descriptor by @edopao in #1726
- feat[next]: Add memory and disk-based caching to more workflow steps by @SF-N in #1690
- fix[next]: Bugfix in dace-ITIR backend: use canonical name for field shape symbol by @edopao in #1730
- build: Bump gridtools-cpp to 2.3.7 in preparation of #1648 by @tehrengruber in #1732
- bug[next]: Fix ITIR program hash stability by @tehrengruber in #1733
- build: Bump gridtools-cpp to 2.3.8 in preparation of #1648 by @tehrengruber in #1737
- fix[next]: Fix type preservation in CSE by @tehrengruber in #1736
- feat[next]: GTIR embedded and GTFN temporaries with new lowering by @tehrengruber in #1648
- refactor[catesian]: Type hints and code redability improvements by @romanc in #1724
- ci: Bump gitlab ci on todi to ubuntu 22.04, cuda 12.6.2, cupy 13.3.0 by @tehrengruber in #1727
- feat[next][dace]: Use offset_type to represent neighborhood information for local dimensions by @edopao in #1734
- feat[next]: Upgrade dace dependency to v1.0.0 by @edopao in #1740
- feat[next]: Enable GPU tests on GTIR DaCe backend by @edopao in #1741
- feat[next]: Extend the IR pass for pruning of unnecessary casts by @edopao in #1728
- bug[next]: extract scalar value with correct dtype by @havogt in https://github.com/GridTools/gt...
GT4Py v1.0.4
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
GlobalTablewhich is a data dimensions only Field. Access is provided via.Awhich 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_ARGSandDACE_DEFAULT_BLOCK_SIZEenvironment variables - Fixes for the DaCe backend
- Various style modernizations
Deprecation
- The
cudabackend is deprecated (enable by setting environment variableGT4PY_GTC_CUDA_USE=1), usegt:gpuordace:gpuinstead.
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
ifpropagation 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_checkableworkaround by upgradingtyping_extensionsby @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
cudabackend 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...