diff --git a/CHANGELOG.md b/CHANGELOG.md index b86826754..bff867c80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,104 @@ # Changelog +## [0.0.6](https://github.com/ccam80/cubie/compare/v0.0.5...v0.0.6) (2025-12-27) + + +### Features + +* ``raw`` output type added to output device array copies with no processing ([22cef9f](https://github.com/ccam80/cubie/commit/22cef9ff02000d1e60a6576a3ef54a54918e6658)) +* add time logging to cellml import ([#257](https://github.com/ccam80/cubie/issues/257)) ([6a220f8](https://github.com/ccam80/cubie/commit/6a220f8e78653f1727967b2092002f78ba41db71)) +* Additional summary output metrics added ([#212](https://github.com/ccam80/cubie/issues/212)) ([daccbae](https://github.com/ccam80/cubie/commit/daccbae24945c081d75585a6052ec95a45885808)) +* Buffer indexing, sizing, and locating now consolidated into a BufferSettings object ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb)) +* Buffer memory locations on GPU now user-selectable (between local and shared) ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb)) +* build_grid() surfaced to user API ([#338](https://github.com/ccam80/cubie/issues/338)) ([45cfa90](https://github.com/ccam80/cubie/commit/45cfa90a77f2892d29966bd856215c4b54475cc0)) +* CellML to Cubie adapter layer added ([#221](https://github.com/ccam80/cubie/issues/221)) ([b8f448e](https://github.com/ccam80/cubie/commit/b8f448e532c6c5410fd06aa13a87531301468de3)) +* CUDAFactory.update() now updates nested dicts and attrs classes ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb)) +* device buffers are now togglable (local, shared, local persistent) and managed centrally by buffer_registry ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262)) +* Global stores now have cache write-through hints, closes [#291](https://github.com/ccam80/cubie/issues/291) ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb)) +* load_from_cellml updated to parse complicated models ([#238](https://github.com/ccam80/cubie/issues/238)) ([50341f6](https://github.com/ccam80/cubie/commit/50341f62704f44f95f9e591635609e3c1e3bcd74)) +* newton and linear solvers now fully-functional CUDAFactory subclasses ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262)) +* optional configuration parameters are no longer explicit in inits, they are filtered and collected in kwargs ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262)) +* py39 compatibility removed due to a Numba update. ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb)) +* Solver API now skips extra memory and grid-building work when possible ([#324](https://github.com/ccam80/cubie/issues/324)) ([5f225a0](https://github.com/ccam80/cubie/commit/5f225a023fc38d17e90a688f51a91d5b7c9db6ee)) +* summary metrics combined (eg. extrema, [mean, std, rms]) to reduce buffer space ([daccbae](https://github.com/ccam80/cubie/commit/daccbae24945c081d75585a6052ec95a45885808)) +* summary metrics now respect numerical precision ([daccbae](https://github.com/ccam80/cubie/commit/daccbae24945c081d75585a6052ec95a45885808)) +* Sympy inputs from CellML now go Sympy->Sympy instead of through strings ([#259](https://github.com/ccam80/cubie/issues/259)) ([23e201d](https://github.com/ccam80/cubie/commit/23e201df19c0c607ee8bc4512f2b04147bdb29be)) +* time logging added to parsing, codegen, and CUDA compilation ([#256](https://github.com/ccam80/cubie/issues/256)) ([5d8f75b](https://github.com/ccam80/cubie/commit/5d8f75b800ef59f02a049e037ac9333f03fdbefd)) +* Trajectories with errors (nonzero status codes) now return NaNs in solveresult ([#333](https://github.com/ccam80/cubie/issues/333)) ([6068ebc](https://github.com/ccam80/cubie/commit/6068ebc68e0af517462744e8ead23eb57c8c578a)) +* update() methods now unpack settings dicts provided to them ([#332](https://github.com/ccam80/cubie/issues/332)) ([f016e4d](https://github.com/ccam80/cubie/commit/f016e4dfab6c8b22b759f363f68ad83380aba940)) +* Warp-friendly FSAL caching implented, redundant accumulation removed ([#211](https://github.com/ccam80/cubie/issues/211)) ([96a9dd0](https://github.com/ccam80/cubie/commit/96a9dd00fc35e9d65fede8ade7f6579ec3e896e3)) + + +### Bug Fixes + +* _ensure_context() method added to avoid segfaults in CI ([#265](https://github.com/ccam80/cubie/issues/265)) ([60acecc](https://github.com/ccam80/cubie/commit/60acecccb787913c0837d072f40d9e51e347fd3a)) +* `shift` value in standard deviation calcs now updates after each save. ([073d406](https://github.com/ccam80/cubie/commit/073d406f4578cff67db5d223da607e5ecd437138)) +* Adaptive step controllers now sum errors correctly, closes [#302](https://github.com/ccam80/cubie/issues/302) ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb)) +* add set_stride_order method for access from solver ([e4b80d3](https://github.com/ccam80/cubie/commit/e4b80d3985366c9b1f2ce2f5da7baac3c4210452)) +* All algorithms now exit when the next save time is > end time ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb)) +* buffer aliasing logic now child-location-agnostic ([377ad10](https://github.com/ccam80/cubie/commit/377ad10c4818d4faeb9c1e8cb6ecbbb3a871ead5)) +* Compile-timing kernels now use device arrays ([16bf1d6](https://github.com/ccam80/cubie/commit/16bf1d62953596610e628d2677cc23ef5c6773d8)) +* consolidate timing parameter sets for fewer fixture builds ([#350](https://github.com/ccam80/cubie/issues/350)) ([4698e9e](https://github.com/ccam80/cubie/commit/4698e9e78bbba37c0a9a28e06832b160c11efad0)) +* contiguous arrays now marked as such for the compiler to do its grim work ([#276](https://github.com/ccam80/cubie/issues/276)) ([fe97291](https://github.com/ccam80/cubie/commit/fe972918a79518dc407750a7be552182291701ed)) +* Controller-algorithm compatibility enforced ([4ab0230](https://github.com/ccam80/cubie/commit/4ab0230c9261e3857f099167db2735db6a6c2955)) +* correct FIRK algorithm implementation ([#408](https://github.com/ccam80/cubie/issues/408)) ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262)) +* correct fsal warp-vote implementation ([60448f1](https://github.com/ccam80/cubie/commit/60448f10b3976533152450fa3d2b56ebae0af337)) +* Counters array added to ERK signature ([99db833](https://github.com/ccam80/cubie/commit/99db8337e75be96ed69fe582b230264e1e2ea425)) +* CUDA-breaking simsafe 'local' module adapter removed ([d205979](https://github.com/ccam80/cubie/commit/d205979d9894057a1787ac4b0307eca8ea21ee9c)) +* CUDAFactories now only precompile if timelogging is on ([836da2a](https://github.com/ccam80/cubie/commit/836da2a417d197bbfdc06ad8188b991ae184ca78)) +* dead code and duplications pruned from codegenned device functions ([#266](https://github.com/ccam80/cubie/issues/266)) ([de0dda8](https://github.com/ccam80/cubie/commit/de0dda8f14a4c50ec1c1794c01634907bd87d4c7)) +* default precision types have been removed from all but entry points ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262)) +* fast path through batchgridbuilder for arrays provided verbatim added ([080ab66](https://github.com/ccam80/cubie/commit/080ab66d7fc8b4a6cd9e4291392e773c44152175)) +* FIRK no longer does an extra f(x) calculation after performing its nonlinear solve ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262)) +* Fixed steppers now use a slower but more sensible save time incrementing technique ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb)) +* FSAL warp test now doesn't break everything ([2e68692](https://github.com/ccam80/cubie/commit/2e68692da71f643aa725ed0a1ad8c10a8c2b980a)) +* gustafsson controller prev error ratio flipped, various test edits for GPU runs ([3e04438](https://github.com/ccam80/cubie/commit/3e04438881a55ba03306b6f112e35c2d3e3400b5)) +* host arrays now pinned to facilitate asynchronous transfers ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb)) +* infinite loops in adaptive steppers under dummy compile now finite ([b0547fd](https://github.com/ccam80/cubie/commit/b0547fdcc0c379c84af10375ceedf479da67dc4d)) +* lineinfo toggle for CUDA compilation now conditional on CUDASIM status ([#280](https://github.com/ccam80/cubie/issues/280)) ([6d5bf57](https://github.com/ccam80/cubie/commit/6d5bf57a6a381379e9e22f9c5901326051dd5835)) +* Loop iterators now 32-bit ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb)) +* loops now accumulate time in f64, no longer get stuck when dt < 1e-7 * time ([#281](https://github.com/ccam80/cubie/issues/281)) ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb)), closes [#272](https://github.com/ccam80/cubie/issues/272) +* make shape validator np.int compatible in BaseArrayManager.py ([e77d800](https://github.com/ccam80/cubie/commit/e77d8008de8c1cecd715df6c29bf79794c10bd6b)) +* make stage_increment buffer persistent in rosenbrock ([#411](https://github.com/ccam80/cubie/issues/411)) ([4b0b6bc](https://github.com/ccam80/cubie/commit/4b0b6bc2102bf7af5f4bee2877a0bce5c0b5a860)) +* Missing iteration_counters type added to device signature in BatchSolverKernel ([6eefd67](https://github.com/ccam80/cubie/commit/6eefd67140767d8b452b99fbdcf8d19bf7e91edb)) +* move stream sync function to after chunked queue ([e4b80d3](https://github.com/ccam80/cubie/commit/e4b80d3985366c9b1f2ce2f5da7baac3c4210452)) +* n_saves calculation now includes start time, closes [#282](https://github.com/ccam80/cubie/issues/282) ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb)) +* numeric literals now wrapped with precision() or int32 in CUDA code generation ([#258](https://github.com/ccam80/cubie/issues/258)) ([21850f2](https://github.com/ccam80/cubie/commit/21850f293b6743e2fe677b4fccc85129f86cdbca)) +* partially update cuda signatures with contiguity ([8754661](https://github.com/ccam80/cubie/commit/87546613825922befad0c2145e28807b04ab62d8)) +* reduced nonlinear solver memory footprint (3n → 2n buffers) ([#224](https://github.com/ccam80/cubie/issues/224)) ([c4d95d4](https://github.com/ccam80/cubie/commit/c4d95d419f72ce12e1242767fd9bd7056e81ce5d)) +* Remaining hard-coded buffers now managed by buffer_registry ([#412](https://github.com/ccam80/cubie/issues/412)) ([92e9313](https://github.com/ccam80/cubie/commit/92e93139a54c6e4e290bc8a6b4e0de85d2890a24)) +* remove redundant overwrite of initial values host array until [#76](https://github.com/ccam80/cubie/issues/76) is implemented in device code ([bc39fbb](https://github.com/ccam80/cubie/commit/bc39fbbc52ea3475cbe2b8581a59f8ae6c7fdfc9)) +* Replace PEP 604 union syntax with Union[] for Python 3.8 compatibility ([#236](https://github.com/ccam80/cubie/issues/236)) ([ea1e1fb](https://github.com/ccam80/cubie/commit/ea1e1fb89db14e798d0d12a1ed2e68f6b114c81a)) +* shared and local memory requirement names now consistent across package. ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262)) +* size-1 runs no longer break Cubie (closes [#142](https://github.com/ccam80/cubie/issues/142)) ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262)) +* steps now own solvers, and newton_krylov solver now owns it's internal krylov solver ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262)) +* Tableau-driven algorithm loop indexing reorganised to give the compiler an easier job ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb)) +* tsit5 tableau corrected ([480df1a](https://github.com/ccam80/cubie/commit/480df1aed16fee4be48781315afddb44bfbfefeb)) +* types corrected in all step algorithms and solvers to run in 'precision' only ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262)) +* update all-in-one rosenbrock function to use updated prod format ([fa32a16](https://github.com/ccam80/cubie/commit/fa32a1607824a2342dcb46649b7f1d3ca8cbd86f)) +* update placeholder parameters to not hide exception ([8754661](https://github.com/ccam80/cubie/commit/87546613825922befad0c2145e28807b04ab62d8)) +* updating a solverkernel with new outputtypes now correctly changes buffer and output array sizes. ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262)) +* Use a warp-vote for FSAL caching, otherwise there is no benefit and potential divergence ([d0334a2](https://github.com/ccam80/cubie/commit/d0334a2841518467f2b794fa7a325861b7e9471a)) +* Vern7 tableau corrected to match source ([e6b900a](https://github.com/ccam80/cubie/commit/e6b900a0452926a953709e1cf65f89fc147a1c97)) + + +### Performance Improvements + +* DIRK function profiled and streamlined ([#355](https://github.com/ccam80/cubie/issues/355)) ([fd1f639](https://github.com/ccam80/cubie/commit/fd1f639b1394ce8d1f6068d5cc846daea560a2d4)) +* firk rewirked for a large speedup ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262)) +* newton and linear solver branching and predication removed for a reasonable speedup ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262)) +* rosenbrock function reworked for a moderate speedup ([39107a9](https://github.com/ccam80/cubie/commit/39107a925d63e4f708b3e18ef198cb75ead52262)) + + +### Documentation + +* cubie_internal_structure.md filled with agent reference ([#177](https://github.com/ccam80/cubie/issues/177)) ([02738e0](https://github.com/ccam80/cubie/commit/02738e06f7343910e292721d43cdc0ec127adf4e)) + + +### Miscellaneous Chores + +* Release 0.0.6 ([baa2523](https://github.com/ccam80/cubie/commit/baa2523e21c4278dd2c88b1268b689f6ef8a6bac)) + ## [Unreleased] ### Features