HiRep 0.1
Loading...
Searching...
No Matches
hr_sendrecv.c File Reference

Abstracted sendrecv of buffers of given fields. More...

#include "geometry.h"
#include "memory.h"
#include "libhr_core.h"
#include "io.h"
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
Include dependency graph for hr_sendrecv.c:

Data Structures

struct  comms_args
 

Macros

#define NO_OF_COMMS_THREADS   1
 
#define _GET_RECV_BUFFER(_buffer, _i, _field_dim, _type, _chars_per_site)
 
#define _GET_SEND_BUFFER(_buffer, _i, _field_dim, _type, _chars_per_site)
 
#define _BUFFER_FOR(_i, _nbuffers)
 
#define roundUp(_val, _mod)
 

Functions

void communicate (comms_args *l)
 
void * wait_for_signal (void *argv)
 
void signal ()
 
int spawn_threads ()
 
void hr_sendrecv_complete (int nreq, MPI_Request *field_reqs)
 
void init_hr_comms ()
 
void finalize_hr_comms ()
 
void hr_sendrecv (void *sendbuffer, void *recvbuffer, geometry_descriptor *type, MPI_Datatype mpi_real_type, int field_dim, int size_of_real, int mpi_chunks_per_site, int nbuffers, MPI_Request *field_reqs)
 

Variables

pthread_t thread [1]
 
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER
 
pthread_cond_t cond = PTHREAD_COND_INITIALIZER
 
pthread_barrier_t barrier
 

Detailed Description

Abstracted sendrecv of buffers of given fields.

Macro Definition Documentation

◆ _BUFFER_FOR

#define _BUFFER_FOR ( _i,
_nbuffers )
Value:
for (int _i = 0; _i < _nbuffers; ++_i)

◆ _GET_RECV_BUFFER

#define _GET_RECV_BUFFER ( _buffer,
_i,
_field_dim,
_type,
_chars_per_site )
Value:
((_buffer) + _chars_per_site * _field_dim * ((_type->rbuf_start[(_i)]) - (_type->master_shift)))

◆ _GET_SEND_BUFFER

#define _GET_SEND_BUFFER ( _buffer,
_i,
_field_dim,
_type,
_chars_per_site )
Value:
((_buffer) + _chars_per_site * _field_dim * (_type->sbuf_start[(_i)]))

◆ roundUp

#define roundUp ( _val,
_mod )
Value:
((((_val - 1) / (_mod)) + 1) * (_mod))