8 #ifndef HIPACE_MultiBuffer_H_
9 #define HIPACE_MultiBuffer_H_
21 void initialize (
int nslices,
int nbeams,
bool buffer_on_host,
bool use_laser,
22 amrex::Box laser_box,
int max_leading_slices,
int max_trailing_slices);
29 bool is_last_time_step);
144 int ibeam,
int comp);
148 const void* src_ptr, std::size_t num_bytes);
152 void* dst_ptr, std::size_t num_bytes);
Definition: MultiBeam.H:15
Definition: MultiBuffer.H:16
offset_type
Definition: MultiBuffer.H:66
amrex::ParallelDescriptor::lull_t storage_type
Definition: MultiBuffer.H:86
void memcpy_from_buffer(int slice, std::size_t buffer_offset, void *dst_ptr, std::size_t num_bytes)
Definition: MultiBuffer.cpp:578
amrex::Gpu::PinnedVector< std::size_t > m_metadata
Definition: MultiBuffer.H:95
~MultiBuffer()
Definition: MultiBuffer.cpp:108
void pack_data(int slice, MultiBeam &beams, MultiLaser &laser, int beam_slice)
Definition: MultiBuffer.cpp:593
int m_tag_time_start
Definition: MultiBuffer.H:104
int m_tag_buffer_start
Definition: MultiBuffer.H:105
std::array< int, comm_progress::nprogress > m_async_data_slice
Definition: MultiBuffer.H:126
amrex::Box m_laser_slice_box
Definition: MultiBuffer.H:115
amrex::Vector< DataNode > m_datanodes
Definition: MultiBuffer.H:97
amrex::Real m_time_send_buffer
Definition: MultiBuffer.H:120
int m_rank_receive_from
Definition: MultiBuffer.H:103
MPI_Request m_time_send_request
Definition: MultiBuffer.H:121
void allocate_buffer(int slice)
Definition: MultiBuffer.cpp:25
int m_max_trailing_slices
Definition: MultiBuffer.H:117
bool m_time_send_started
Definition: MultiBuffer.H:122
void initialize(int nslices, int nbeams, bool buffer_on_host, bool use_laser, amrex::Box laser_box, int max_leading_slices, int max_trailing_slices)
Definition: MultiBuffer.cpp:52
amrex::Real get_time()
Definition: MultiBuffer.cpp:440
std::size_t * get_metadata_location(int slice)
Definition: MultiBuffer.cpp:21
void unpack_data(int slice, MultiBeam &beams, MultiLaser &laser, int beam_slice)
Definition: MultiBuffer.cpp:643
comm_progress
Definition: MultiBuffer.H:50
@ in_use
Definition: MultiBuffer.H:61
@ received
Definition: MultiBuffer.H:58
@ sent
Definition: MultiBuffer.H:56
@ receive_started
Definition: MultiBuffer.H:57
@ sim_completed
Definition: MultiBuffer.H:52
@ async_progress_end
Definition: MultiBuffer.H:59
@ nprogress
Definition: MultiBuffer.H:62
@ ready_to_define
Definition: MultiBuffer.H:60
@ ready_to_send
Definition: MultiBuffer.H:54
@ async_progress_begin
Definition: MultiBuffer.H:53
@ uninitialized
Definition: MultiBuffer.H:51
@ send_started
Definition: MultiBuffer.H:55
int m_laser_ncomp
Definition: MultiBuffer.H:114
void get_data(int slice, MultiBeam &beams, MultiLaser &laser, int beam_slice)
Definition: MultiBuffer.cpp:323
int m_tag_metadata_start
Definition: MultiBuffer.H:106
int m_nbeams
Definition: MultiBuffer.H:112
static constexpr std::size_t buffer_size_roundup
Definition: MultiBuffer.H:92
bool m_is_head_rank
Definition: MultiBuffer.H:100
void free_buffer(int slice)
Definition: MultiBuffer.cpp:40
int m_max_leading_slices
Definition: MultiBuffer.H:116
bool m_use_laser
Definition: MultiBuffer.H:113
bool m_buffer_on_host
Definition: MultiBuffer.H:110
std::size_t get_metadata_size()
Definition: MultiBuffer.cpp:13
std::array< int, comm_progress::nprogress > m_async_metadata_slice
Definition: MultiBuffer.H:125
void memcpy_to_buffer(int slice, std::size_t buffer_offset, const void *src_ptr, std::size_t num_bytes)
Definition: MultiBuffer.cpp:563
int m_rank_send_to
Definition: MultiBuffer.H:102
MPI_Comm m_comm
Definition: MultiBuffer.H:107
void write_metadata(int slice, MultiBeam &beams, int beam_slice)
Definition: MultiBuffer.cpp:489
bool m_is_serial
Definition: MultiBuffer.H:101
void put_time(amrex::Real time)
Definition: MultiBuffer.cpp:463
int m_nslices
Definition: MultiBuffer.H:111
void put_data(int slice, MultiBeam &beams, MultiLaser &laser, int beam_slice, bool is_last_time_step)
Definition: MultiBuffer.cpp:347
void make_progress(int slice, bool is_blocking, int current_slice)
Definition: MultiBuffer.cpp:175
std::size_t get_buffer_offset(int slice, offset_type type, MultiBeam &beams, int ibeam, int comp)
Definition: MultiBuffer.cpp:503
memory_location
Definition: MultiBuffer.H:43
Definition: MultiLaser.H:99
slice
Definition: MultiLaser.H:73
type
Definition: checksumAPI.py:112
Definition: MultiBuffer.H:75
MPI_Request m_metadata_request
Definition: MultiBuffer.H:82
MPI_Request m_request
Definition: MultiBuffer.H:80
comm_progress m_progress
Definition: MultiBuffer.H:79
char * m_buffer
Definition: MultiBuffer.H:76
std::size_t m_buffer_size
Definition: MultiBuffer.H:77
memory_location m_location
Definition: MultiBuffer.H:78
comm_progress m_metadata_progress
Definition: MultiBuffer.H:81