Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
Classes | Macros | Enumerations | Functions | Variables
sycl_mpi_interop.hpp File Reference
#include "log.hpp"
#include "shambackends/SyclMpiTypes.hpp"
#include "shamcomm/wrapper.hpp"
#include "shamsys/MpiWrapper.hpp"
#include "shamsys/NodeInstance.hpp"
+ Include dependency graph for sycl_mpi_interop.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  mpi_sycl_interop::BufferMpiRequest< T >
 

Macros

#define XMAC_SYCLMPI_TYPE_ENABLED
 
#define X(args)   std::is_same<T, args>::value ||
 
#define X(args)   #args " "
 

Enumerations

enum  comm_type { CopyToHost , DirectGPU }
 
enum  op_type { Send , Recv_Probe }
 

Functions

template<class T >
u64 mpi_sycl_interop::isend (std::unique_ptr< sycl::buffer< T > > &p, const u32 &size_comm, std::vector< BufferMpiRequest< T > > &rq_lst, i32 rank_dest, i32 tag, MPI_Comm comm)
 
template<class T >
u64 mpi_sycl_interop::irecv (std::unique_ptr< sycl::buffer< T > > &p, const u32 &size_comm, std::vector< BufferMpiRequest< T > > &rq_lst, i32 rank_source, i32 tag, MPI_Comm comm)
 
template<class T >
u64 mpi_sycl_interop::irecv_probe (std::unique_ptr< sycl::buffer< T > > &p, std::vector< BufferMpiRequest< T > > &rq_lst, i32 rank_source, i32 tag, MPI_Comm comm)
 
template<class T >
std::vector< MPI_Request > mpi_sycl_interop::get_rqs (std::vector< BufferMpiRequest< T > > &rq_lst)
 
template<class T >
void mpi_sycl_interop::waitall (std::vector< BufferMpiRequest< T > > &rq_lst)
 
template<class T >
void mpi_sycl_interop::file_write (MPI_File fh, std::unique_ptr< sycl::buffer< T > > &p, const u32 &size_comm)
 
template<class T >
T * impl::copy_to_host::send::init (const std::unique_ptr< sycl::buffer< T > > &buf, u32 comm_sz)
 
template<class T >
void impl::copy_to_host::send::finalize (T *comm_ptr)
 
template<class T >
T * impl::copy_to_host::recv::init (u32 comm_sz)
 
template<class T >
void impl::copy_to_host::recv::finalize (const std::unique_ptr< sycl::buffer< T > > &buf, T *comm_ptr, u32 comm_sz)
 
template<class T >
T * impl::directgpu::send::init (const std::unique_ptr< sycl::buffer< T > > &buf, u32 comm_sz)
 
template<class T >
void impl::directgpu::send::finalize (T *comm_ptr)
 
template<class T >
T * impl::directgpu::recv::init (u32 comm_sz)
 
template<class T >
void impl::directgpu::recv::finalize (const std::unique_ptr< sycl::buffer< T > > &buf, T *comm_ptr, u32 comm_sz)
 

Variables

comm_type mpi_sycl_interop::current_mode = CopyToHost
 

Detailed Description

Author
Timothée David–Cléris (tim.s.nosp@m.hamr.nosp@m.ock@p.nosp@m.roto.nosp@m.n.me)
Version
0.1
Date
2022-03-14

Definition in file sycl_mpi_interop.hpp.

Macro Definition Documentation

◆ XMAC_SYCLMPI_TYPE_ENABLED

#define XMAC_SYCLMPI_TYPE_ENABLED
Value:
X(f32) \
X(f32_2) \
X(f32_3) \
X(f32_4) \
X(f32_8) \
X(f32_16) \
X(f64) \
X(f64_2) \
X(f64_3) \
X(f64_4) \
X(f64_8) \
X(f64_16) \
X(u8) \
X(u32) \
X(u32_3) \
X(u16_3) \
X(u64) \
X(u64_3) \
X(i64_3) \
X(i64)
double f64
Alias for double.
float f32
Alias for float.
std::uint8_t u8
8 bit unsigned integer
std::uint32_t u32
32 bit unsigned integer
std::uint64_t u64
64 bit unsigned integer
std::int64_t i64
64 bit integer

Definition at line 29 of file sycl_mpi_interop.hpp.

Enumeration Type Documentation

◆ comm_type

enum mpi_sycl_interop::comm_type

Definition at line 53 of file sycl_mpi_interop.hpp.

◆ op_type

enum mpi_sycl_interop::op_type

Definition at line 54 of file sycl_mpi_interop.hpp.

Function Documentation

◆ file_write()

template<class T >
void mpi_sycl_interop::file_write ( MPI_File  fh,
std::unique_ptr< sycl::buffer< T > > &  p,
const u32 size_comm 
)
inline

Definition at line 193 of file sycl_mpi_interop.hpp.

◆ finalize() [1/4]

template<class T >
void impl::copy_to_host::recv::finalize ( const std::unique_ptr< sycl::buffer< T > > &  buf,
T *  comm_ptr,
u32  comm_sz 
)

Definition at line 97 of file sycl_mpi_interop.cpp.

◆ finalize() [2/4]

template<class T >
void impl::directgpu::recv::finalize ( const std::unique_ptr< sycl::buffer< T > > &  buf,
T *  comm_ptr,
u32  comm_sz 
)

Definition at line 196 of file sycl_mpi_interop.cpp.

◆ finalize() [3/4]

template<class T >
void impl::copy_to_host::send::finalize ( T *  comm_ptr)

Definition at line 65 of file sycl_mpi_interop.cpp.

◆ finalize() [4/4]

template<class T >
void impl::directgpu::send::finalize ( T *  comm_ptr)

Definition at line 171 of file sycl_mpi_interop.cpp.

◆ get_rqs()

template<class T >
std::vector< MPI_Request > mpi_sycl_interop::get_rqs ( std::vector< BufferMpiRequest< T > > &  rq_lst)
inline

Definition at line 166 of file sycl_mpi_interop.hpp.

◆ init() [1/4]

template<class T >
T * impl::copy_to_host::send::init ( const std::unique_ptr< sycl::buffer< T > > &  buf,
u32  comm_sz 
)

Definition at line 27 of file sycl_mpi_interop.cpp.

◆ init() [2/4]

template<class T >
T * impl::directgpu::send::init ( const std::unique_ptr< sycl::buffer< T > > &  buf,
u32  comm_sz 
)

Definition at line 137 of file sycl_mpi_interop.cpp.

◆ init() [3/4]

template<class T >
T * impl::copy_to_host::recv::init ( u32  comm_sz)

Definition at line 82 of file sycl_mpi_interop.cpp.

◆ init() [4/4]

template<class T >
T * impl::directgpu::recv::init ( u32  comm_sz)

Definition at line 184 of file sycl_mpi_interop.cpp.

◆ irecv()

template<class T >
u64 mpi_sycl_interop::irecv ( std::unique_ptr< sycl::buffer< T > > &  p,
const u32 size_comm,
std::vector< BufferMpiRequest< T > > &  rq_lst,
i32  rank_source,
i32  tag,
MPI_Comm  comm 
)
inline

Definition at line 122 of file sycl_mpi_interop.hpp.

◆ irecv_probe()

template<class T >
u64 mpi_sycl_interop::irecv_probe ( std::unique_ptr< sycl::buffer< T > > &  p,
std::vector< BufferMpiRequest< T > > &  rq_lst,
i32  rank_source,
i32  tag,
MPI_Comm  comm 
)
inline

Definition at line 149 of file sycl_mpi_interop.hpp.

◆ isend()

template<class T >
u64 mpi_sycl_interop::isend ( std::unique_ptr< sycl::buffer< T > > &  p,
const u32 size_comm,
std::vector< BufferMpiRequest< T > > &  rq_lst,
i32  rank_dest,
i32  tag,
MPI_Comm  comm 
)
inline

Definition at line 95 of file sycl_mpi_interop.hpp.

◆ waitall()

template<class T >
void mpi_sycl_interop::waitall ( std::vector< BufferMpiRequest< T > > &  rq_lst)
inline

Definition at line 177 of file sycl_mpi_interop.hpp.

Variable Documentation

◆ current_mode

comm_type mpi_sycl_interop::current_mode = CopyToHost

Definition at line 233 of file sycl_mpi_interop.cpp.