Skip to content

Commit 1b80309

Browse files
committed
Release v0.6.1 (#1960)
* IWYU * Add version notes * Fix rst parse error * REVERTME: work around doxygen 1.14.0 bug See doxygen/doxygen#11607, to be fixed in 1.14.1 * Improve profiling documentation
1 parent cc6f24d commit 1b80309

File tree

3 files changed

+215
-23
lines changed

3 files changed

+215
-23
lines changed

doc/release-history/v0.6.rst

Lines changed: 190 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,196 @@ Series 0.6
77
Major development version 0.6 can be cited through its Zenodo code release
88
:cite:p:`celeritas-0-6`.
99

10+
.. _release_v0.6.1:
11+
12+
Version 0.6.1
13+
-------------
14+
*Released 2025/09/13*
15+
16+
Version 0.6.1 is a minor capability and bug fix update. Geant4-to-ORANGE
17+
conversion has gained new abilities including:
18+
19+
- Support for reflection
20+
- Support for replicated and parameterized volumes
21+
- New shapes including G4ExtrudedSolid, G4GenericPolycone, G4Paraboloid,
22+
polar-truncated sphere
23+
- Fixes and improvements to deduplication of general quadric surfaces such as
24+
twisted trap faces and ellipsoids
25+
26+
Geant4 integration has improved with:
27+
28+
- Automatic generation of field maps from in-memory G4Field
29+
- Track IDs are now reconstructed when returning hits to Geant4
30+
- Track weights are propagated through Celeritas and returned to Geant4
31+
- Additional data members are reconstructed in hit track/steps to reduce null
32+
pointers
33+
- G4VTrackUserInfo and G4VProcess are reconstructed as valid (but not
34+
necessarily meaningful) pointers
35+
36+
Code compatibility improvements include:
37+
38+
- Support for CUDA 12.9 and NVCC with cxxstd=20
39+
- Changes to allow GCC's overzealous ``-Wmissing-braces`` (#1863) used by CMSSW
40+
- Fixes to include-what-you-use errors that failed newer compilers/c++ libs
41+
- Support for CMake ``find_package(Celeritas)`` multiple times (still
42+
discouraged though)
43+
- Allow multiple runs when using GPU
44+
- Improved compatibility for Geant4 10
45+
- Improved use of environment variables (now the *value* of ``CELER_DISABLE``
46+
and others are considered, not just their existence)
47+
48+
49+
Changes since v0.6.0 follow.
50+
51+
New features
52+
^^^^^^^^^^^^
53+
54+
* Add default values for track slots and initializer capacity *(@amandalund, #1772)*
55+
* Complete optical stepping loop *(@amandalund, #1792)*
56+
* Create IntersectRegion for a convex extruded polygon *(@elliottbiondo, #1783)*
57+
* Adds Sensitive Detector parameter Class *(@lebuller, #1764)*
58+
* Print Celeritas configuration options when loading downstream *(@sethrj, #1802)*
59+
* Make optical ``max_step_iters`` configurable and properly reset state after aborting *(@amandalund, #1805)*
60+
* Add reflection to ORANGE *(@sethrj, #1807)*
61+
* Add options to forcibly disable Cherenkov and scintillation *(@amandalund, #1814)*
62+
* Add replica+parameterisation support to ORANGE *(@sethrj, #1817)*
63+
* Add surface normal calculations in GeoTrackView *(@hhollenb, #1804)*
64+
* Add WLS model class, generator, and executor and support second WLS process *(@amandalund, #1816)*
65+
* Support configurable WLS reemission time distribution *(@amandalund, #1822)*
66+
* Add volume params to represent Geant4 volume graph *(@sethrj, #1821)*
67+
* Full G4ExtrudedSolid support *(@elliottbiondo, #1808)*
68+
* Read and export Geant4 surface definitions *(@sethrj, #1824)*
69+
* Add in-situ cartesian field map construction from Geant4 *(@esseivaju, #1828)*
70+
* Add geometry surface definitions to runtime *(@sethrj, #1812)*
71+
* Output optical actions *(@amandalund, #1836)*
72+
* Add polar truncation for sphere shape *(@sethrj, #1832)*
73+
* Generate optical photons directly into track slots for 2× GPU speedup *(@amandalund, #1844)*
74+
* Add track weight propagation to secondaries track *(@Rashika-Gupta, #1847)*
75+
* Reconstruct Geant4 TrackID *(@esseivaju, #1837)*
76+
* Update HitProcessor test to support non unit weights *(@Rashika-Gupta, #1853)*
77+
* Add optical primary generator *(@amandalund, #1858)*
78+
* Add VolumeSurfaceSelector *(@hhollenb, #1859)*
79+
* Add pre-commit spell checking *(@sethrj, #1867)*
80+
* Reconstruct G4VTrackUserInfo and G4VProcess *(@esseivaju, #1866)*
81+
* Allow multiple "activate device" calls if not modifying device *(@sethrj, #1938)*
82+
* Add TrackProcessor class for reconstructing Geant4 tracks *(@esseivaju, #1869)*
83+
* Add RevolvedSpecialTrapezoid as a first step towards G4GenericPolycone *(@elliottbiondo, #1840)*
84+
* Add full support for G4GenericPolycone *(@elliottbiondo, #1892)*
85+
* Add support for G4Paraboloid *(@elliottbiondo, #1893)*
86+
* Support discontinuities in nonuniform grid calculator *(@sethrj, #1906)*
87+
* Use environment variable values if set *(@sethrj, #1937)*
88+
89+
Bug fixes
90+
^^^^^^^^^
91+
92+
* Patch covfie shasum *(@esseivaju, #1771)*
93+
* Fix table size in physics construction *(@amandalund, #1780)*
94+
* Fix and refactor maximum cross section energy calculation for integral approach *(@amandalund, #1776)*
95+
* Support CUDA 12.9 and NVCC with cxxstd=20 *(@sethrj, #1787)*
96+
* Fix ``sincospi`` on device *(@amandalund, #1791)*
97+
* Fix assigning parent ID to track initializer *(@amandalund, #1795)*
98+
* Fix orange polyhedron orientation and roundoff error *(@sethrj, #1806)*
99+
* Flush optical tracks at the end of core stepping loop *(@amandalund, #1834)*
100+
* Reconstruct additional data in G4Track *(@sethrj, #1835)*
101+
* Add null pointer checks for Geant4 surfaces *(@sethrj, #1841)*
102+
* Fix counters in optical generator action *(@amandalund, #1857)*
103+
* Protect Celeritas::G4 CMake target against double creation *(@drbenmorgan, #1879)*
104+
* Fix oversimplification of simple quadrics *(@sethrj, #1897)*
105+
* Fix normalization and edge cases on twisted GenPrism faces *(@sethrj, #1899)*
106+
* Fix weight reconstruction for GeantSd *(@sethrj, #1940)*
107+
108+
Documentation improvements
109+
^^^^^^^^^^^^^^^^^^^^^^^^^^
110+
111+
* Release v0.6.0 *(@sethrj, #1688)*
112+
* Add helper for accumulating histograms *(@sethrj, #1759)*
113+
* Add zenodo citations to celeritas user manual *(@sethrj, #1762)*
114+
* Require covfie v0.14 *(@esseivaju, #1767)*
115+
* Replace hand-rolled hooks with pre-commit and CI *(@sethrj, #1765)*
116+
* Refactor micro xs CDF calculation and add test *(@amandalund, #1768)*
117+
* Edit user manual and fix PDF build *(@sethrj, #1782)*
118+
* Document geometry hierarchy and move EM table *(@sethrj, #1788)*
119+
* Round all floating point numbers in test output to a few digits *(@sethrj, #1758)*
120+
* Work around a doxy/breathe rendering bug and make some notes internal *(@sethrj, #1797)*
121+
* Replace EXPECT_VEC_CLOSE with soft comparator *(@sethrj, #1819)*
122+
* Finish updating copyrights *(@amandalund, #1820)*
123+
* Update build script and user presets *(@sethrj, #1845)*
124+
* Detect and use ccache *(@esseivaju, #1848)*
125+
* Revert one unintentional typo change from #1867 *(@pcanal, #1871)*
126+
127+
Minor internal changes
128+
^^^^^^^^^^^^^^^^^^^^^^
129+
130+
* Fail early if find-or-builtin package is missing *(@sethrj, #1770)*
131+
* Remove ``ValueGridBuilder`` s *(@amandalund, #1766)*
132+
* Add ostream support for enums *(@amandalund, #1774)*
133+
* Add missing typename and const to CartMapField *(@esseivaju, #1769)*
134+
* Apply pre-commit hooks across repository *(@sethrj, #1773)*
135+
* Rename logspace to geomspace *(@sethrj, #1777)*
136+
* Use correct types for physics grids *(@amandalund, #1781)*
137+
* Add tests and documentation for Tsai nuclear screening functions *(@sethrj, #1779)*
138+
* Adjust version compatibility for covfie *(@sethrj, #1778)*
139+
* Simplify nested join nodes *(@sethrj, #1784)*
140+
* Store hardwired model data by reference *(@amandalund, #1785)*
141+
* Organize optical directory *(@amandalund, #1789)*
142+
* Move core track initialization to ``CoreTrackView`` *(@amandalund, #1794)*
143+
* Add make_orthogonal helper function *(@sethrj, #1793)*
144+
* Move magnetic field retrieval to a helper function *(@sethrj, #1798)*
145+
* Extend auxiliary data helpers to support aux state data without params *(@amandalund, #1799)*
146+
* Keep persistent GeantGeoParams for geometry translation *(@sethrj, #1796)*
147+
* Refactor optical generation to reduce duplication *(@amandalund, #1800)*
148+
* Move optical photon generation to optical stepping loop *(@amandalund, #1803)*
149+
* Make Geant4 volume IDs consistent wrt load order *(@sethrj, #1809)*
150+
* Fix configuring against latest VecGeom with CUDA disabled *(@pcanal, #1813)*
151+
* Rename SurfaceId in preparation for volume-based surface definitions *(@sethrj, #1811)*
152+
* Rearrange generic geo test interface *(@sethrj, #1818)*
153+
* Use variant set for uniform field input *(@amandalund, #1826)*
154+
* Rename solid angle class *(@sethrj, #1825)*
155+
* Optimize cosine for turn *(@sethrj, #1830)*
156+
* Refactor solid Z slab as Truncated object *(@sethrj, #1827)*
157+
* Use start/stop instead of start/interior for azimuthal wedge *(@sethrj, #1831)*
158+
* Add surface properties to core and optical params *(@amandalund, #1838)*
159+
* Add a helper function for launching a CPU kernel with an arbitrary number of threads *(@amandalund, #1842)*
160+
* Define geometry implementation IDs *(@sethrj, #1839)*
161+
* Add generator interface and registry *(@amandalund, #1849)*
162+
* Document and improve build script *(@sethrj, #1854)*
163+
* Hotfix: revert accidental changes from #1839 *(@sethrj, #1856)*
164+
* Add volume params to core *(@sethrj, #1846)*
165+
* Add surface physics map *(@sethrj, #1852)*
166+
* Begin exposing Cherenkov/optical loop outside of the optical collector *(@sethrj, #1861)*
167+
* IWYU on some files *(@sethrj, #1935)*
168+
* Convert to using counterclockwise order for polygons *(@elliottbiondo, #1873)*
169+
* Delete IPAContextException *(@sethrj, #1882)*
170+
* Use class constructors rather than initialization for Array to fix CMS *(@sethrj, #1887)*
171+
* Add RevolvedPolygon class *(@elliottbiondo, #1888)*
172+
* Define throw helper functions to reduce code bloat and improve performance *(@sethrj, #1908)*
173+
* Update particle speed calculation to be more robust against round-off error *(@amandalund, #1917)*
174+
* Add custom error handler to unify G4 exception handlers *(@sethrj, #1919)*
175+
176+
Deprecation and removal
177+
^^^^^^^^^^^^^^^^^^^^^^^
178+
179+
* Remove combined bremsstrahlung model *(@amandalund, #1786)*
180+
* Remove SpecialTrapezoid and RevolvedSpecialTrapezoid classes *(@elliottbiondo, #1890)*
181+
182+
Reviewers
183+
^^^^^^^^^
184+
185+
* Seth R. Johnson *(@sethrj)*: 50
186+
* Amanda Lund *(@amandalund)*: 30
187+
* Philippe Canal *(@pcanal)*: 13
188+
* Julien Esseiva *(@esseivaju)*: 9
189+
* Elliott Biondo *(@elliottbiondo)*: 9
190+
* Guilherme Lima *(@mrguilima)*: 4
191+
* Soon Yung Jun *(@whokion)*: 2
192+
* Rashika Gupta *(@Rashika-Gupta)*: 2
193+
* Stefano Tognini *(@stognini)*: 1
194+
* Sakib Rahman *(@rahmans1)*: 1
195+
* Lance Bullerwell *(@lebuller)*: 1
196+
* Hayden Hollenbeck *(@hhollenb)*: 1
197+
198+
**Full Changelog**: https://github.com/celeritas-project/celeritas/compare/v0.6.0...v0.6.1
199+
10200
.. _release_v0.6.0:
11201

12202
Version 0.6.0

doc/usage/execution/profiling.rst

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -38,32 +38,37 @@ Celeritas provides a few counter events. Currently it writes:
3838
- active, alive, and dead track counts at each step iteration, and
3939
- the number of hits in a step.
4040

41-
Profiling Celeritas example app
42-
-------------------------------
41+
Profiling a Celeritas example app
42+
---------------------------------
4343

4444
A detailed timeline of the Celeritas construction, steps, and kernel launches
4545
can be gathered, the example below illustrates how to do it using `NVIDIA Nsight systems`_.
4646

4747
.. _NVIDIA Nsight systems: https://docs.nvidia.com/nsight-systems/UserGuide/index.html
4848

49-
Here is an example using the ``celer-sim`` app to generate a timeline:
49+
Here is an example invoking the ``celer-sim`` app through the Nvidia utility to
50+
generate a timeline:
5051

5152
.. sourcecode::
5253
:linenos:
5354

5455
$ CELER_ENABLE_PROFILING=1 \
5556
> nsys profile \
56-
> -c nvtx --trace=cuda,nvtx,osrt
57-
> -p celer-sim@celeritas
58-
> --osrt-backtrace-stack-size=16384 --backtrace=fp
59-
> -f true -o report.qdrep \
60-
> celer-sim inp.json
61-
57+
> --trace=cuda,nvtx,osrt \
58+
> --capture-range nvtx --nvtx-domain celeritas \
59+
> --osrt-backtrace-stack-size=16384 --backtrace=fp \
60+
> -o report.qdrep -f true \
61+
> celer-sim inp.json
62+
63+
Line 2 specifies the APIs to be captured: in this case, CUDA calls, NVTX
64+
ranges, and OS runtime libraries.
6265
To use the NVTX ranges, you must enable the ``CELER_ENABLE_PROFILING`` variable
63-
and use the NVTX "capture" option (lines 1 and 3). The ``celer-sim`` range in
64-
the ``celeritas`` domain (line 4) enables profiling over the whole application.
65-
Additional system backtracing is specified in line 5; line 6 writes (and
66-
overwrites) to a particular output file; the final line invokes the
66+
in addition to using the NVTX "trace" option (lines 1 and 2).
67+
The capture domain in line 3 restricts profiling to the Celeritas application.
68+
(You can use, e.g., ``--nvtx-capture celer-sim@celeritas`` to capture a smaller
69+
range.)
70+
Additional frame-pointer-based backtracing is specified in line 5; line 6
71+
writes (and overwrites) to a particular output file; the final line invokes the
6772
application.
6873

6974
On AMD hardware using the ROCProfiler_, here's an example that writes out timeline information:
@@ -103,12 +108,13 @@ the `Perfetto documentation`_. Root access on the system is required.
103108
Integration with user applications
104109
----------------------------------
105110

106-
When using a CUDA or HIP backend, there is nothing that needs to be done on the user side.
107-
The commands shown in the previous sections can be used to profile your application. If your application
108-
already uses NVTX, or ROCTX, you can exclude Celeritas events by excluding the "celeritas" domain.
111+
When using a CUDA or HIP backend, **no additional code is needed in the user
112+
application**.
113+
The commands shown in the previous sections can be used to profile your application.
114+
If your application already uses NVTX, or ROCTX, you can exclude Celeritas events by excluding the ``celeritas`` domain.
109115

110-
When using Perfetto, you need to create a ``TracingSession``
111-
instance. The profiling session needs to be explictitly started, and will end when the object goes out of scope,
116+
When using Perfetto for CPU profiling, you need to create a ``TracingSession``
117+
instance. The profiling session needs to be explicitly started, and will end when the object goes out of scope,
112118
but it can be moved to extend its lifetime.
113119

114120
.. sourcecode:: cpp
@@ -129,7 +135,7 @@ The system-level profiling requires starting external services. Details on how t
129135
When the tracing session is started with a filename, the application-level profiling is used and written to the specified file.
130136
Omitting the filename will use the system-level profiling, in which case you must have the external Perfetto tracing processes started. The container in ``scripts/docker/interactive`` provides an example Perfetto configuration for tracing both system-level and celeritas events.
131137

132-
As with NVTX and ROCTX, if your application already uses Perfetto, you can exclude Celeritas events by excluding the "celeritas" category.
138+
As with NVTX and ROCTX, if your application already uses Perfetto, you can exclude Celeritas events by excluding the ``celeritas`` category.
133139

134140
.. _Perfetto documentation: https://perfetto.dev/docs/quickstart/linux-tracing
135141

src/celeritas/em/data/UrbanMscData.hh

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,20 +37,16 @@ enum class UrbanParMatType
3737
*
3838
* Mapping of parameter names from Geant4 to Celeritas:
3939
<table>
40-
<thead>
4140
<tr>
4241
<th>Geant4 Symbol</th>
4342
<th>Celeritas Symbol</th>
4443
</tr>
45-
</thead>
46-
<tbody>
4744
<tr><td><code>dtrl</code></td><td><code>small_range_frac</code></td></tr>
4845
<tr><td><code>tlimitminfix</code></td><td><code>min_step</code></td></tr>
4946
<tr><td><code>stepmin</code></td><td><code>min_step_fallback</code></td></tr>
5047
<tr><td><code>tlimitminfix2</code></td><td><code>min_step_transform</code></td></tr>
5148
<tr><td><em>(hardcoded)</em></td><td><code>min_endpoint_energy</code></td></tr>
5249
<tr><td><code>tlow</code></td><td><code>min_scaling_energy</code></td></tr>
53-
</tbody>
5450
</table>
5551
*
5652
* \todo Unify min_endpoint_energy with low energy limit

0 commit comments

Comments
 (0)