Skip to content

Shamrock 2025.10.0

Latest

Choose a tag to compare

@tdavidcl tdavidcl released this 28 Oct 09:14

The first Shamrock release to achieve quasi-exascale performance!

Outstanding changes

Aurora testing (close to exascale)

  • [Algs] Fix sparse communications above 1k nodes (aurora pullback) by @tdavidcl in #1133
  • [Math] Improve LatticeHCP performance by @tdavidcl in #980

These are just two of the numerous PRs that allowed Shamrock to exceed the 10,000-GPU milestone, resulting in an impressive performance milestone of 223 Gpart/s on 24,000 GPU tiles, with a parallel weak-scaling efficiency of 82.9%.

image

See https://shamrock-code.github.io/ for updated scores

Solvergraphs

This one isn’t the simplest, but it stems from a major issue common to complex codes. As the number of features, physical models, and modules implemented in a solver continues to grow, the code paths become increasingly tangled — full of conditionals, deeply nested functions, and opaque data flows. The result is a solver that’s hard to read, hard to modify, and difficult to maintain.

To address this, we need to untangle the mess.

Following discussions with @thomasguillet and taking inspiration from softwares like Blender, Autodesk Maya’s Hypergraph, or Quest3D (for those who remember it!), we realized that what’s needed is a graph-based API to express data flow between abstract modules.

Here is an example of a composition of nodes from blender

The idea is to represent each component of the solver as a node in such a graph, where the final output corresponds to the solver’s state after one timestep. We plan to write a more detailed post, document, or paper on this topic, but the TL;DR is that we’ve already implemented this concept in Shamrock, in a system we call Solvergraphs. For example, in a Godunov scheme, the conversion between conservative and primitive variables would be represented as a single node, such as ConsToPrim, but we do not want the node to be self-contained and independant on the sources and targets.
image

Now, if we apply this approach to the full solver, we get the following (although Graphviz doesn’t do a very good job of organizing the layout...)
image
(grey = data, white = node)

With the new Solvergraph API, we can now express modules independently of the specific data they operate on. This greatly improves reusability, allowing modules to be used across the codebase with different sets of inputs and outputs.
The next step, planned for a future release, is to fully migrate all solvers to this API and further simplify development — both on the C++ side and through graphical external tools or Python bindings.

Others

Addition of Shamrock restart dumps to the Ramses solver:

Multiple analysis modules were added for SPH:

As well as features in setups:

The possibility of directly installing python bindings without having to fiddle with .so (s):

  • [CMake] add CMAKE_INSTALL_PYTHONDIR to automate python libs install by @tdavidcl in #1217

There have also been changes on the physics side, but you’ll have to check arXiv in the coming months (hopefully) for the details ;)

What's Changed

  • pull back from release/2025.05.x to main by @tdavidcl in #946
  • [Git] change mdspan remote to http by @tdavidcl in #949
  • [Ramses] fix a typo in face interpolation by @tdavidcl in #951
  • [Patch] fix a missing const on PatchDataFieldSpan accessors by @tdavidcl in #953
  • [Ci] add concurency group to have only a single CI running per PR by @tdavidcl in #954
  • [Base] add set diff & on_distributeddata_diff by @tdavidcl in #955
  • [CI] add github page artifact to PR report by @tdavidcl in #957
  • [Backends] allow const DistributedData use in distributed kernel call by @tdavidcl in #958
  • [Doc] update packaging information, quickstart guide and README by @tdavidcl in #956
  • [SolverGraph] add shamrock solvergraph API to compose modules by @tdavidcl in #959
  • [Solvergraph] Implement NodeFreeAlloc to add alloc freeing in the graph by @tdavidcl in #976
  • [Ramses][solvergraph PR 2] move ConsToPrim spans & field to SolverStorage by @tdavidcl in #961
  • [SolverGraph] wrap IDataEdge tex symbol in brackets by @tdavidcl in #965
  • [Models] make set_solver_config consistent across models by @tdavidcl in #966
  • [CI] report tests error using Github action log format by @tdavidcl in #968
  • [CI] clean test outputs with MPI by @tdavidcl in #969
  • [SolverGraph] new FieldRefs layer, between Field and FieldSpan by @tdavidcl in #970
  • [Shamcomm] fix: remove extra print in gather_str by @tdavidcl in #973
  • [Env] update acpp 24.10.0 -> 25.02.0 by @tdavidcl in #972
  • [Ramses][solvergraph PR 1] Migrate ConsToPrim to use solvergraph by @tdavidcl in #960
  • [Solvergraph] make edge span & ref getter abstract using interfaces by @tdavidcl in #975
  • [Env] add env for Argonne Aurora supercomputer by @tdavidcl in #911
  • [Ci] fix missreporting of test errors in github action by @tdavidcl in #977
  • [CI] add godunov tests with dust by @tdavidcl in #978
  • [Ramses][solvergraph PR 3] replace ConsToPrim by solvergraph modules by @tdavidcl in #962
  • [CI] attempt to use a common docker image for all physical tests by @tdavidcl in #979
  • [Comm][Aurora pullback] improve MPI status log in startup by @tdavidcl in #982
  • [Logs] fix some typos in init logs by @tdavidcl in #984
  • [Ramses][solvergraph PR 6] Use distributed refs instead of copy by @tdavidcl in #985
  • [Ramses][solvergraph PR 4] ComputeCellInfos use solvergraph internally by @tdavidcl in #964
  • sod_tube_zeus.py: Fix undefined name vx by @cclauss in #988
  • [Doc] replace shamrock homebrew tap refs by homebrew-core by @tdavidcl in #989
  • [CI] add godunov sod test with AMR=on by @tdavidcl in #992
  • [Ramses][solvergraph PR 5] AMRTree use solvergraph internally by @tdavidcl in #971
  • [Ramses][solvergraph PR 7] Use NodeBuildTrees instead of legacy AMRTree by @tdavidcl in #993
  • Fix typo by @cclauss in #994
  • pre-commit: Add ruff linter for Python code by @cclauss in #990
  • [Ramses][solvergraph PR 8] Migrate AMRGraphGen to solvergraph by @tdavidcl in #995
  • [Ramses][solvergraph PR 9] Merge beginning of the step as a single OperationSequence by @tdavidcl in #996
  • [Ramses][solvergraph PR 10] Move ComputeAABB node in main solver sequence by @tdavidcl in #997
  • [Math] add paving functions for ghost zones by @tdavidcl in #987
  • [Ramses][solvergraph PR 11] Migrate gradients to solvegraph by @tdavidcl in #999
  • [Ramses] migrate link fields & AMRGraph to USM by @tdavidcl in #1001
  • [Base] use numerical limits to set shortcut one by @tdavidcl in #1003
  • [Phys] Binary orbit utility by @tdavidcl in #1007
  • [Ramses][solvergraph PR 12] Migrate face interpolate to use NeighGrapkLinkFieldEdge by @tdavidcl in #1011
  • [Backends] improve the log message on failled alloc by @tdavidcl in #1017
  • [Env][dgxcbp] add a binding script by @tdavidcl in #1023
  • [Ramses] rho mean module by @Akos299 in #1013
  • [Ramses][solvergraph PR 13] Make FaceInterpolate module closer to solvergraph kind of modules. by @tdavidcl in #1014
  • [CI] add the long version of phantom comp to physical tests by @tdavidcl in #1020
  • [Ramses][solvergraph PR 14] Migrate ComputeRhoMean by @tdavidcl in #1024
  • [SPH] Improve Shamrock handling of phantom dumps (+ fix for MCFost) by @tdavidcl in #1008
  • [CI] add some numpy,matplotlib,scipy to shamrock docker package. by @tdavidcl in #1025
  • [SPH][Setup] offset modifier by @tdavidcl in #1028
  • [SPH][Setup] add setup particle filter by @tdavidcl in #1029
  • [Backends] wrap allocs in try catch by @tdavidcl in #1027
  • [Tree] Implement USM variant of tree AABBs by @tdavidcl in #1041
  • [CI][CMake] reduce dependencies on version file generation by @tdavidcl in #1044
  • [Tree] implement the USM variant of RadixTree (LeafCompressedBVH) by @tdavidcl in #1042
  • [Ramses] gravity config & python binding by @Akos299 in #1015
  • [Backends] remove some ambiguous uses of get_bytesize by @tdavidcl in #1046
  • [Env] add the kraken-gpu UGA cluster by @tdavidcl in #1048
  • [SPH] fix sink de-sync when some processes have no patches by @tdavidcl in #1049
  • [SPH] Pullback some fixes & setup from aurora tests by @tdavidcl in #1047
  • [Ramses][gravity] Set gravity potential and add it in ghost zones by @Akos299 in #1016
  • [CI] increase timeout on acpp jobs by @tdavidcl in #1052
  • [Comm] introduce a new MPI wrapper to time MPI calls by @tdavidcl in #1051
  • [Ramses] Add passive scalars to config + bindings by @bcommerc in #1053
  • [Ramses] Add gas passive scalars in ghost zone by @bcommerc in #1055
  • [Doc] update llvm version to 18 in quickstart by @tdavidcl in #1058
  • [Ramses] add check on local mem size for drag exponential by @tdavidcl in #1060
  • [Env] add env for calmip turpan cluster (ARM64 + A100) by @DavidFang03 in #1059
  • [Ramses][CG Utilities] Initial state setting by @Akos299 in #1019
  • [Backend] more elegant handling of alloc alignment by @tdavidcl in #1061
  • [Comm] use the new MPI wrapper and report MPI timings in logs by @tdavidcl in #1062
  • [MHD] add a push_particle that also pushes B and psi. by @y-lapeyre in #1056
  • [Backends] load device sub group size in properties and print it in device smi by @tdavidcl in #1064
  • [Backends] add support for get_sm_id & device_clock intrisics by @tdavidcl in #1063
  • [Ramses][DragIntegrator] Ajuste work-group-size by @Akos299 in #1065
  • [Backends] Implement the GPU core timeline tool from A. Richermoz, F. Neyret 2024 by @tdavidcl in #1054
  • [Env] Correct python path for Calmip Turpan by @DavidFang03 in #1066
  • [Doc] return error on doxygen crash by @tdavidcl in #1067
  • [Shamrock] add a experimental feature switch by @tdavidcl in #1073
  • [Ramses][Config] Check if gamma < 1 by @aserhani in #1076
  • [Patch] enable i64 field type by @tdavidcl in #1071
  • [CMake] transform fmt include as system include to avoid warnings by @tdavidcl in #1079
  • [Ramses][solvergraph PR 15] migrate interpolate rho to face by @tdavidcl in #1074
  • [Base] introduce new log macros to avoid unnecessary formatting by @tdavidcl in #1069
  • [Ramses] clean some leftovers + add solvergraph python bindings by @tdavidcl in #1081
  • [Ramses][solvergraph PR 16] migrate fluxes to solvergraph by @tdavidcl in #1082
  • [All] Use new log macros by @tdavidcl in #1070
  • [Base] extend on_distributeddata_diff to only ids case by @tdavidcl in #1084
  • [Patch] add a PatchData function to remove ids by @tdavidcl in #1085
  • [Env] update macos script by @tdavidcl in #1087
  • [Backends] fix device properties fetching on CRAL DGX workstation by @tdavidcl in #1088
  • [SPH] make neigh cache a solvergraph edge by @tdavidcl in #1086
  • [Algs] replace a allgather by work duplication by @tdavidcl in #1090
  • [Base] make chrome profiling timer more consistent by @tdavidcl in #1093
  • [Sys] add vector_allgather benchmark to microbenchmarks by @tdavidcl in #1095
  • [Doc] make categories in sphinx gallery by @tdavidcl in #1096
  • [Patch] add a USM variant of PatchDataField get_ids_where by @tdavidcl in #1094
  • [Doc] add recommended configs by @tdavidcl in #1097
  • [Doc] improve testing documentation by @tdavidcl in #1098
  • [Doc] fix doxygen retries in CI by @tdavidcl in #1101
  • [Doc] Document the solvergraph migration process by @tdavidcl in #1099
  • [All] more get_check_ref instead of direct dereferencing by @tdavidcl in #1103
  • [CI] compare phantom sedov also with multiple patch & world_size by @tdavidcl in #1102
  • [SPH] migrate omega to solvergraph edge by @tdavidcl in #1107
  • [Algs] implement device histogram alg by @tdavidcl in #1105
  • [SPH] migrate ghosts cache indexes to USM by @tdavidcl in #1100
  • [CMake] add targets to build the doc in cmake by @tdavidcl in #1106
  • [Tests][Algs] add some checks in sparse comm tests by @tdavidcl in #1045
  • [CMake] doc target depends on shamrock pylib by @tdavidcl in #1114
  • [SPH] add solvergraph field refs for merged pos & h by @tdavidcl in #1104
  • [SPH] particle id tracking by @tdavidcl in #1109
  • [SPH] fix missing init solvergraph on load dump by @tdavidcl in #1120
  • [Algs] bin averaging & summation & variance by @tdavidcl in #1113
  • [Env] add a shorthand to reset the current env files + add run_precommit util by @tdavidcl in #1050
  • [Tree] implement USM variant of tree fields by @tdavidcl in #1129
  • [All] update source authors by @tdavidcl in #1132
  • [CI] automatically check authorship change in sources using pre-commit by @tdavidcl in #1131
  • [Tree] tweaks to CLBVH for SPH migration by @tdavidcl in #1134
  • [Ramses] add node to compute block levels by @tdavidcl in #1136
  • [Ramses][Conjugate gradient] dot product of the residual vector by @Akos299 in #1121
  • [CI] disable authors update in pre-commit and move it to ci only by @tdavidcl in #1137
  • [Ramses] add test for ResidualDot module by @tdavidcl in #1138
  • [Examples] advection through patches test by @tdavidcl in #1092
  • [Doc] animate SPH shearing box example by @tdavidcl in #1139
  • [Doc] 3d gaussian generator & unit vector generator by @tdavidcl in #1140
  • [CI] blacklist gemini from update author script by @tdavidcl in #1144
  • [Backends] add .append() function to buffers by @tdavidcl in #1142
  • [SPH] Particle killing module by @tdavidcl in #1080
  • [Base] fix typo in shambase::parallel_for by @tdavidcl in #1145
  • [SPH] module to get particles outside of kill radius by @tdavidcl in #1143
  • [Doc][Examples] add uniform SPH box by @tdavidcl in #1146
  • [Doc][Examples] add KH instab in SPH by @tdavidcl in #1147
  • [SPH][Tree] swap SPH tree to usm variant by @tdavidcl in #1130
  • [Examples] move ci tests to sphinx doc and symlink them to exemples by @tdavidcl in #1149
  • [Algs] fix the size error that made the bitonic sort sad by @y-lapeyre in #1151
  • [CI] add SPH regression testing on KH & disc by @tdavidcl in #1150
  • [Doc] use datetime & shamrock to get version & date in doc by @tdavidcl in #1155
  • [All] update copyright year by @tdavidcl in #1154
  • [SPH] Enable Wendland kernels C2, C4, C6 by @y-lapeyre in #1157
  • [Doc] remove outdated cluster doc by @tdavidcl in #1156
  • [SPH] implement a solvergraph module to iterate smoothing length by @tdavidcl in #1148
  • [Algs] move sort_by_keys to new primitives folder by @tdavidcl in #1159
  • [Algs] add binned_average and binned_computation for histogram calculations by @y-lapeyre in #1152
  • [Doc] update coding guidelines by @tdavidcl in #1158
  • [Patch] Layers PR 1: rename PatchData to PatchDataLayer by @tdavidcl in #1160
  • [Patch] Layers PR 2: rename PatchDataLayout to PatchDataLayerLayout by @tdavidcl in #1161
  • [Patch] make layout a shared ptr instead of a ref by @tdavidcl in #1163
  • [Algs] remove unused next_obj function by @tdavidcl in #1166
  • [Algs] rename scans algorithm to have more consistent naming by @tdavidcl in #1164
  • [Algs] move mock functions by @tdavidcl in #1165
  • [Algs] move is_all_true to primitives by @tdavidcl in #1167
  • [Algs] move equals to new header in primitives by @tdavidcl in #1168
  • [Doc] add an example of ghost layer gen using paving functions by @tdavidcl in #1170
  • [Algs] improve serializer error message by @tdavidcl in #1172
  • [Base] move DistributedDataShared to standalone header & add tests by @tdavidcl in #1169
  • [Env] add archlinux envs by @tdavidcl in #1174
  • [Doc] fix typo in paving ghost example by @tdavidcl in #1175
  • [Patch] add more const variants in patch functions & USM variants by @tdavidcl in #1177
  • [Base] add iterators to DistributedDataShared by @tdavidcl in #1176
  • [Solvergraph] add more utilities to bind refs on patches or fields by @tdavidcl in #1178
  • [CI] add regression test for godunov (soundwave) + advection test by @tdavidcl in #1179
  • [Ramses] remove use of MergedPatchData by @tdavidcl in #1180
  • [CI][Ramses] enable regression test for world_size=2 by @tdavidcl in #1181
  • [Clang] update clangd, clang-tidy config & add ci check by @tdavidcl in #1184
  • [All] some include cleaning by @tdavidcl in #1185
  • [CI] fix inconsistencies with godunov regression test by @tdavidcl in #1186
  • [Ramses] use solvergraph module for ghost zone exchange by @tdavidcl in #1182
  • [All] remove ResizableBuffer(s) & contain some deprecation warnings by @tdavidcl in #1187
  • [Ramses] use solvergraph to transform ghostzones before exchange by @tdavidcl in #1188
  • [Patch] make get_description_str & append_subset_to const by @tdavidcl in #1191
  • [Solvergraph] pullback new modules for ghost zone extractions by @tdavidcl in #1192
  • [Ramses] use ghost layer extraction module internally by @tdavidcl in #1189
  • [Algs] move flatten algs to primitives by @tdavidcl in #1195
  • [Ramses] use solvergraph module to fuse ghost zones internally by @tdavidcl in #1196
  • [Backends] ensure that zero sized buffers have no allocs by @tdavidcl in #1198
  • [Ramses] move ghost layout to storage as shared_ptr by @tdavidcl in #1200
  • [Ramses] make merged patchdata a solvergraph edge by @tdavidcl in #1201
  • [Algs] implement binary search range lookups by @tdavidcl in #1199
  • [Ramses] use GetFieldRefFromLayer to attach fields to ghost zones by @tdavidcl in #1203
  • [Base] fix DistributedData print_data function by @tdavidcl in #1202
  • [Ramses] move attach field to main graph by @tdavidcl in #1204
  • [Ramses] move everything in gz exchange to solvergraph by @tdavidcl in #1205
  • [SPH] hide original_elements and total_elements behind asserts by @tdavidcl in #1207
  • [Solvergraph] move ghost exchange module to solvergraph dir by @tdavidcl in #1206
  • [SPH] remove uses of original/total count & bounds in merged patch by @tdavidcl in #1208
  • [CI] use image with already installed llvm by @tdavidcl in #1210
  • [SPH] make PreStepMergedField a standard PatchDataLayer by @tdavidcl in #1209
  • [SPH] remove PositionInterface and use standard PatchDataLayer by @tdavidcl in #1211
  • [SPH] Use ghost exchange module internally by @tdavidcl in #1212
  • [SPH] Use ghost exchange module internally for fields by @tdavidcl in #1213
  • [Ramses] replace GZ finder by solvergraph modules by @tdavidcl in #1214
  • [Ramses] move ghost zone finder to main graph by @tdavidcl in #1215
  • [Ramses] remove old ghost zone module by @tdavidcl in #1216
  • [SPH] replace merged patch class by standard PatchDataLayer by @tdavidcl in #1218
  • [CI] Ensure that MacOS run use default cmake from homebrew by @tdavidcl in #1220
  • [Algs] add MPI variants of histogram algorithms by @tdavidcl in #1219
  • [Algs] move basic reductions to primitives by @tdavidcl in #1194
  • [Algs] remove non USM base reductions by @tdavidcl in #1222
  • [Solvergraph] rename IDataEdge to IEdge by @tdavidcl in #1224
  • [Tree] add internal cell object iterator by @tdavidcl in #1227
  • [Tree] make more tree related function const by @tdavidcl in #1231
  • [Backends] fix typo in err msg in DeviceBuffer::get_val_at_idx by @tdavidcl in #1230
  • [Algs] add decoupled scan in place to primitives by @tdavidcl in #1229
  • [Algs] fix exclusive scan in place for null sized buffers by @tdavidcl in #1233
  • [Base] implement a zero overhead fixed sized stack by @tdavidcl in #1235
  • [Math] add .contains function to AABB by @tdavidcl in #1234
  • [Clang-format] heavily penalize return type alone on line by @tdavidcl in #1232
  • [Bindings] Add python bindings for Shamrock device buffers by @tdavidcl in #1236
  • [Tree] Dual tree traversal for CLBVH by @tdavidcl in #1237
  • [Doc] DTT benchmark by @tdavidcl in #1228
  • [SPH] fix offset modifier for empty PatchDataLayer by @tdavidcl in #1238
  • [Doc]fix mismatching seeds between benchmarks for DTT by @tdavidcl in #1239
  • [Algs] GPU variant of is_all_true by @tdavidcl in #1223
  • [Algs] add reductions to python bindings by @tdavidcl in #1240
  • [Algs] python bindings for scan in place by @tdavidcl in #1241
  • [Bindings] hook python print to use shambase::print by @tdavidcl in #983
  • [Algs] make impl control API more consistent by @tdavidcl in #1243
  • [Bindings] fix sys.stdout hook when using ipython by @tdavidcl in #1244
  • [Bindings] add bindings to query mem usage & use it in dtt bench by @tdavidcl in #1245
  • [Patch] make reduction & compute_{sum,max,min} const by @tdavidcl in #1246
  • [Algs] add are_all_rank_true collective by @tdavidcl in #1248
  • [Solvergraph] rename ITDataEdge to IDataEdge by @tdavidcl in #1247
  • [SPH] wrap smoothing length iteration in new module by @tdavidcl in #1242
  • [Algs] Add adaptivecpp::algorithm & std::exclusive scan using custom op by @tdavidcl in #1251
  • [Algs] use single_task instead of custom operation to enqueue std::exclusive_scan by @tdavidcl in #1252
  • [Doc] Add a production run: circular disc by @tdavidcl in #1250
  • [Solvergraph] Add NodeSetEdge by @tdavidcl in #1253
  • [Base] add macro to define stacktrace entry by @tdavidcl in #1254
  • [Solvergraph] introduce a class to reference node & edges by name by @tdavidcl in #1255
  • [Backends] add a kernel call variant to supply custom handler commands by @tdavidcl in #1257
  • [CI] increase macos timeout by @tdavidcl in #1258
  • [Tree] make ObjectCacheIterator constructor const friendly by @tdavidcl in #1259
  • [Backends] enable gpu core timelines with AdaptiveCpp SSCP by @tdavidcl in #1260
  • [SPH] Move external forces to solvergraph by @tdavidcl in #1249
  • [SPH] add double hump kernels & shifted splines by @tdavidcl in #1261
  • [Backends] add missing inline in gpu_core_timeline.hpp by @tdavidcl in #1262
  • [SPH] make h tolerances name clearer by @tdavidcl in #1263
  • [SPH] add a module to compute stats on neigh counts by @tdavidcl in #1264
  • [SPH] migrate compute omega from shamrock pre-history to modern age by @tdavidcl in #1265
  • [External] update nlohmann::json by @tdavidcl in #1267
  • [SPH] Make a ComputeOmega node by @tdavidcl in #1266
  • [SPH] introduce multiple smoothing length mode (density based & neigh limit) by @tdavidcl in #1269
  • [SPH] add missing config to serializer by @tdavidcl in #1270
  • [SPH] use json serializer to display solver config by @tdavidcl in #1271
  • [Algs] migrate gen_buffer_index to primitives by @tdavidcl in #1273
  • [Solvergraph] add CopyPatchDataField node by @tdavidcl in #1279
  • [CI] do not remove image after run to allow retries by @tdavidcl in #1282
  • [SPH] add a method to offset the barycenter and momentum by @tdavidcl in #1283
  • [SPH] add cumulated step count & time to sph solver logs by @tdavidcl in #1284
  • [SPH] add config entry for particle sorting by @tdavidcl in #1285
  • [Base] move macro for unique name generation in standalone header by @tdavidcl in #1286
  • [Base] add PRE_MAIN_FUNCTION_CALL to run stuff before main by @tdavidcl in #1293
  • [SPH] implement the sink-sink CFL by @tdavidcl in #1294
  • [Base] fix message format for const pointer by @tdavidcl in #1296
  • [Solvergraph] make field getter name more consistent by @tdavidcl in #1295
  • [Solvergraph] add a function to debug nodes connections by @tdavidcl in #1297
  • [All] fix some warn log not guarded by ON_RANK_0 by @tdavidcl in #1298
  • [Example] reduce insert step for weak scaling test by @tdavidcl in #1300
  • [AMR] fix some warnings in DragIntegrator by @tdavidcl in #1299
  • [Sys] improve POSIX signal handling & add report on sigsev by @tdavidcl in #1301
  • [Main] add date time to startup logs by @tdavidcl in #1305
  • [CI] update MacOS images by @tdavidcl in #1307
  • [SPH] Add more final balancing steps at the end of the setup by @tdavidcl in #1308
  • [SPH] add lense thirring black hole disc to examples by @tdavidcl in #1310
  • [Solvergraph] document INode and return inserted shared_ptr by @tdavidcl in #1311
  • [SPH] migrate non inertial forces to sgraph by @tdavidcl in #1306
  • [Tree] add ordered mode for DTT by @tdavidcl in #1312
  • [All] remove warnings related to .get_pointer deprecation in SYCL 2020 by @tdavidcl in #1315
  • [Algs] move segmented sort from tree to primitive by @tdavidcl in #1318
  • [Env] update intel llvm for the dgx-cbp.intel-llvm env by @tdavidcl in #1321
  • [SPH][Setup] increase the number of rebalancing during injection by @tdavidcl in #1319
  • [SPH][Render] extract pixel to ray/positions routines by @tdavidcl in #1322
  • [Math] add assertion that the direction length of a ray is > 0 by @tdavidcl in #1323
  • [Readme] update slack link by @tdavidcl in #1330
  • [CI] automatically name artifacts according to shamrock version in CMake by @tdavidcl in #1326
  • [SPH][Render] expose rendering based on lists of positions or rays by @tdavidcl in #1325
  • [Phys] split fmm.hpp into multiple headers by @tdavidcl in #1328
  • [CMake] bump shamrock version to 2025.10.0 by @tdavidcl in #1329

New Contributors

Full Changelog: v2025.05.0...v2025.10.0