General
- pull request on FWHM extension for BLonD-common: approved
BLonD Ring object discussion
Simon: SWAN examples — Reshaping
- Voltages defined by time or RF system
- Can reshape for a given time array
- Extra harmonics can be passed and will be interpreted
- Less harmonics returns less arrays
- array.data_type contains also ‘func_time’ (momentum/energy/B-field) -> Heiko: why tagging it at this level, why not in Ring? Function generation generic -> Simon: only data_type carries the label -> Helga: pass label to Ring and convert one to another -> Alex/Simon advantage of objects: B-field could contain bending radius
- Toy model to compare implementation with objects vs linked variables and tagging
- Heiko: group voltage, phase, and harmonic? Why have everything in one object?
- I.e. have various RFSystem objects - harmonic, voltage, phase vs time
- Simon will try to experiment with it for the next time
Simon: SWAN examples — Ring object passing
- synchronous_data passed and gets interpreted internally
- Different time spacings possible
- Try and give your suggestions!
Alex: Usage of Ring object apart from
- Data analysis: f_rev clock not available -> needs Ring
- Bunch spacing detection: beta, gamma, T_rev variables required
- Impedance toolbox: wrapper for Machine object to interface with impedance team (beta, gamma, T_rev passed)
- Ring, RF are stored internally in Machine
Alex: Test and Overview
Editable collection of Ring objects comparison
- Inputs in tracking/common
- Functions
- Additional functions: as a function of time/turn/sample -> Heiko: just as kwarg?
- tracking -> info per turn (default, if no interpolation time specified), momentum still calculated turn by turn -- Simon: if turn numbers are not needed, can be made optional
- parameters_at_time: np.interp()
- paramters_at_sample: returns at a given sample
- conversion between turns and time is an iterative process -> calculation overhead anyway
- Attributes: n_turns -> n_samples
- The two are the same in default
- Main question is how to pre-treat the data — object/matrix etc. TOY MODEL FOR NEXT TIME
- Alex: user custom potential wells -> NEXT TIME
Kostis: Synchrotron Radiation benchmarking
- SR with quantum excitation: use Boost if possible
- std C++ RNG 4x slower than Boost RNG; no installation needed
- separate or single loops: single loop for dE coordinate and parallelisation gives 10-15 % speed-up only
- RNG thread safe now
- checked: normal distribution looks the same in all implementations
- some unit tests added python output vs c++
- pull request: merge, add also Markus’ changes (seed option for C++ and more unit tests)
Panagiotis: Synchrotron radiation on GPU
- Bigger cluster for benchmarks used with 28 physical cores
- Comparison with Haswell 28 cores
- CPU vs GPU comparison: speed-up ~x25
Panagiotis: First BLonD implementation on GPU
- Main loop: kick - drift - slice
- dE, dt transfer to GPU should be minimised
- For kick, need to transfer voltage, omega_rf, phi_rf
- For the profile update, need to transfer profile data every turn
- Interaction with main loop every N_dt turns
- Speed-up increases as N_dt increases, more effect with more particles
- Interaction every 200 turns: 1.5x-4x speed-up
- Interaction every 1000 turns: 1.5x-7x speed-up (highest from 16 M particles)
- Maximum speed-up? is probably close to the case with 1000 turns
- Speed up quite good considering that the CPU case is on Haswell - not a small machine!
- For NEXT TIME: test no interaction with the main loop at all!!
There are minutes attached to this event.
Show them.