Swarm-NG
1.1
|
GPU implementation of PEC2 Hermite integrator. More...
#include <hermite_integrator.hpp>
Public Member Functions | |
hermite (const config &cfg) | |
Construct for class hermite integrator. | |
virtual void | launch_integrator () |
Integrater implementation provided by derived instance. | |
GPUAPI void | convert_internal_to_std_coord () |
Convert internal coordinates to std coordinates. | |
GPUAPI void | convert_std_to_internal_coord () |
Convert std coordinates to internal coordinates. | |
template<class T > | |
__device__ void | kernel (T compile_time_param) |
Public Member Functions inherited from swarm::gpu::bppt::integrator | |
integrator (const config &cfg) | |
Constructor. | |
const int & | override_system_per_block () const |
User specified value of system_per_block. More... | |
Public Member Functions inherited from swarm::gpu::integrator | |
integrator (const config &cfg) | |
Pass on constructor. | |
virtual void | integrate () |
Interfaces function to integrate, for use by general user. More... | |
virtual void | core_integrate () |
To integrate without any bookkeeping. More... | |
virtual void | set_log_manager (log::Pmanager &l) |
Read the GPU log object from log manager and set it. | |
void | set_log (gpulog::device_log *log) |
Set the GPU log object used for loggin output. | |
gpulog::device_log * | get_device_log () |
Get the GPU log object used for logging output. | |
void | set_ensemble (defaultEnsemble &ens) |
Set the ensemble, only provide an ensemble on host. This cals automatically creates a copy of ensemble on GPU and keeps it in sync. Refer to set_ensemble(host_ens,device_ens) if you wish to manage the GPU memory allocation. | |
void | set_ensemble (defaultEnsemble &host_ens, deviceEnsemble &device_ens) |
Set two host and device ensembles, two ensembles should match. More... | |
void | upload_ensemble () |
Synchronize device ensemble with host ensemble. | |
void | download_ensemble () |
Synchronize host ensemble with device ensemble. | |
Public Member Functions inherited from swarm::integrator | |
integrator (const config &cfg) | |
Inetgrator class should be configurable. Derived instances should also have a constructor with similar signature and pass on the config parameter. | |
virtual void | flush_log () |
Flush the host log. | |
virtual defaultEnsemble & | get_ensemble () |
Access the ensemble subject to integration. | |
virtual void | set_destination_time (const double &destination_time) |
Set the time marker to end the integration. | |
Additional Inherited Members | |
Static Public Member Functions inherited from swarm::gpu::bppt::integrator | |
template<class T > | |
static GENERIC int | thread_per_system (T compile_time_param) |
Calculate number of worker threads needed for each system. More... | |
template<class T > | |
static GENERIC int | shmem_per_system (T compile_time_param) |
Helper Function: Logical amount of shared memory needed for force calculations per thread This value is calculated from number of bodies, if this is used in a kernel, the actual amount of shared memory allocated might be different. More... | |
Static Public Attributes inherited from swarm::integrator | |
static const int | _default_max_iterations = 10000000 |
Default value for maximum number of iterations. c.f. _max_iterations. | |
static const int | _default_max_attempts = 1000000 |
Default value for maximum number of attempts. c.f. _max_attempts. | |
Protected Attributes inherited from swarm::gpu::bppt::integrator | |
int | _override_system_per_block |
Number of systems allocated in a block. Should be a multiple of SHMEM_CHUNK_SIZE for better coalescing. | |
GPU implementation of PEC2 Hermite integrator.
Definition at line 35 of file hermite_integrator.hpp.
|
inline |
Calculate acceleration and jerk
Initial Evaluation Calculate the forces
Finalize the step
Definition at line 58 of file hermite_integrator.hpp.
References swarm::gpu::integrator::_dens, swarm::integrator::_destination_time, swarm::gpu::integrator::_log, swarm::integrator::_max_iterations, peyton::constants::c, swarm::EnsembleBase< _CHUNK_SIZE, _NUM_BODY_ATTRIBUTES, _NUM_SYS_ATTRIBUTES >::nsys(), swarm::gpu::bppt::sysid(), swarm::gpu::bppt::system_shared_data_pointer(), swarm::gpu::bppt::thread_body_idx(), swarm::gpu::bppt::thread_component_idx(), and swarm::gpu::bppt::thread_in_system().