|
Orrery
A GPU-accelerated N-body gravitational simulator
|
Where the last evaluation spent its time. More...
#include <orrery/solvers/sycl_direct_solver.hpp>
Public Attributes | |
| backend::Duration | staging_in {} |
| Copying positions and masses into the shared allocations, and zeroing the padded tail. | |
| backend::Duration | kernel {} |
| Submitting the kernel and waiting for the device. | |
| backend::Duration | staging_out {} |
| Copying the accelerations back out. | |
Where the last evaluation spent its time.
ADR-0027 argues that the staging step is O(N) against the kernel's O(N^2) and therefore stops mattering at the sizes the GPU is worth using at. That is an argument, and this is what turns it into a measurement. A reader who suspects the GPU figures are really measuring memcpy can check.
The same shape as EvaluationTimings in solvers/barnes_hut_solver.hpp and for the same reason: a phase that adds a step to a force evaluation should report what the step cost rather than leave it inside a total.
| backend::Duration orrery::solvers::SyclEvaluationTimings::kernel {} |
Submitting the kernel and waiting for the device.
This is the figure a GPU throughput number should be computed from.