SixTrack / sixtracklib

Library for single charged particle simulations in accelerators
GNU Lesser General Public License v2.1
12 stars 16 forks source link

SixTrackLib v0.6.0 #132

Closed martinschwinzerl closed 3 years ago

martinschwinzerl commented 4 years ago

Main Features:

Required Testing: In order to test this release, please create a new Settings.cmake from Settings.cmake.default as the changes introduced for PR #123 are also required here and mandate a new Settings format.

Any feedback concerning the performance and correctness of this PR would be highly appreciated. In particular, it would be extremly important to verify, that

Regressions and Bugs: All tests seem to pass at least on my development machine. However, there is an issue with the OpenCL implementation provided by a recent version of the Intel OneAPI (cf. issue #131) which is also effecting the currently release version and which should be investigated

TODOs before merging: In addition to testing and benchmarking (cf. above, thank you again), the remaining tasks are to

In Closing, Additional Remarks, and Minor Changes Not Highlighted So Far: This is a massive change, touching and potentially breaking a lot of differnt parts of the implementation. I am sorry for the sheer volume but I was not very successful in landing these changes in a more digestible fashion. In addition to the changes outlined above (And to what is presented / described in #123), the following additional changes are part of this PR:

NOTES:

martinschwinzerl commented 4 years ago

Update: buffer handling and external address assignment implemented Tested using the python bindings for CudaTrackJob, working as expected

martinschwinzerl commented 4 years ago

Update: performance regression test performed benchmark_20200707_opencl12_gtx1050

Within the plot, tracking time per particle and per turn is plotted against the number of tracked particles. A somewhat horizontal curve is expected, lower y - values are better. The green crosses refer to a test run in February against the back-then main branch (. The black curve represents the current HEAD of this branch. Within the margin of error of such a cursory evaluation, the new HEAD seems to perform on par or even slightly better as the baseline results from February 2020.

The additional degrees of freedoms for the Settings.cmake file introduced in PR #123 allow some further analysis, namely to compare different combinations of enabled/disabled beam-elements. Note that the cyan curve is the only one that has the new NS(TriCub) element enabled.

Further analysis is warranted, but at a first glance, it seems that this PR does not introduce noticeable performance regressions if NS(TriCub)` is disabled (as was expected).

martinschwinzerl commented 3 years ago

Merged PR #130 and PR #110 into this PR -> will remove the other two to simplify final testing and coordination with pysixtrack