Nek5000
SEM for Incompressible NS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
Macros | Functions
sarray_transfer.c File Reference
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include "c99.h"
#include "name.h"
#include "fail.h"
#include "types.h"
#include "comm.h"
#include "mem.h"
#include "crystal.h"
#include "sort.h"
+ Include dependency graph for sarray_transfer.c:

Go to the source code of this file.

Macros

#define sarray_transfer_many   PREFIXED_NAME(sarray_transfer_many)
 
#define sarray_transfer_   PREFIXED_NAME(sarray_transfer_ )
 
#define sarray_transfer_ext_   PREFIXED_NAME(sarray_transfer_ext_)
 
#define GET_P()   memcpy(&p,row+p_off,sizeof(uint))
 
#define COPY_ROW()
 
#define PACK_BODY()
 
#define GET_P()   p=*(const uint*)((const char*)proc+proc_stride*perm[i])
 
#define COPY_ROW()   memcpy(out,row,size)
 

Functions

static void pack_int (buffer *const data, const unsigned row_size, const uint id, const char *const restrict input, const uint n, const unsigned size, const unsigned p_off, const uint *const restrict perm)
 
static void pack_ext (buffer *const data, const unsigned row_size, const uint id, const char *const restrict input, const uint n, const unsigned size, const uint *const restrict proc, const unsigned proc_stride, const uint *const restrict perm)
 
static void pack_more (buffer *const data, const unsigned off, const unsigned row_size, const char *const restrict input, const unsigned size, const uint *restrict perm)
 
static void unpack_more (char *restrict out, const unsigned size, const buffer *const data, const unsigned off, const unsigned row_size)
 
static void unpack_int (char *restrict out, const unsigned size, const unsigned p_off, const buffer *const data, const unsigned row_size, int set_src)
 
static uint num_rows (const buffer *const data, const unsigned row_size)
 
static uint cap_rows (buffer *const data, const unsigned row_size, const uint max)
 
uint sarray_transfer_many (struct array *const *const A, const unsigned *const size, const unsigned An, const int fixed, const int ext, const int set_src, const unsigned p_off, const uint *const restrict proc, const unsigned proc_stride, struct crystal *const cr)
 
void sarray_transfer_ (struct array *const A, const unsigned size, const unsigned p_off, const int set_src, struct crystal *const cr)
 
void sarray_transfer_ext_ (struct array *const A, const unsigned size, const uint *const proc, const unsigned proc_stride, struct crystal *const cr)
 

Macro Definition Documentation

#define COPY_ROW ( )
Value:
memcpy(out,row,p_off), \
memcpy((char*)out + p_off,row+after,after_len)
ulong out[N]
Definition: sort_test2.c:20
#define COPY_ROW ( )    memcpy(out,row,size)
#define GET_P ( )    memcpy(&p,row+p_off,sizeof(uint))
#define GET_P ( )    p=*(const uint*)((const char*)proc+proc_stride*perm[i])
#define PACK_BODY ( )
Value:
do { \
uint dummy, *len_ptr=&dummy; \
uint i, p,lp = -(uint)1, len=0; \
uint *restrict out = buffer_reserve(data, n*(row_size+3)*sizeof(uint)); \
for(i=0;i<n;++i) { \
const char *row = input + size*perm[i]; \
GET_P(); \
if(p!=lp) { \
lp = p; \
*len_ptr = len; /* previous message length */ \
*out++ = p; /* target */ \
*out++ = id; /* source */ \
len_ptr=out++; len=0; /* length (t.b.d.) */ \
} \
out += row_size, len += row_size; \
} \
*len_ptr = len; /* last message length */ \
data->n = out - (uint*)data->ptr; \
} while(0)
#define uint
Definition: types.h:70
n
Definition: xxt_test.m:73
#define COPY_ROW()
#define buffer_reserve(b, max)
Definition: mem.h:157
p
Definition: xxt_test2.m:1
#define restrict
Definition: c99.h:11
for i
Definition: xxt_test.m:74
static uint id
Definition: findpts_test.c:63
ulong out[N]
Definition: sort_test2.c:20
#define GET_P()

Referenced by pack_ext(), and pack_int().

#define sarray_transfer_   PREFIXED_NAME(sarray_transfer_ )

Definition at line 14 of file sarray_transfer.c.

#define sarray_transfer_ext_   PREFIXED_NAME(sarray_transfer_ext_)

Definition at line 15 of file sarray_transfer.c.

#define sarray_transfer_many   PREFIXED_NAME(sarray_transfer_many)

Function Documentation

static uint cap_rows ( buffer *const  data,
const unsigned  row_size,
const uint  max 
)
static

Definition at line 118 of file sarray_transfer.c.

References n, array::n, array::ptr, and uint.

Referenced by sarray_transfer_many().

+ Here is the caller graph for this function:

static uint num_rows ( const buffer *const  data,
const unsigned  row_size 
)
static

Definition at line 110 of file sarray_transfer.c.

References n, array::n, array::ptr, and uint.

Referenced by sarray_transfer_many().

+ Here is the caller graph for this function:

static void pack_ext ( buffer *const  data,
const unsigned  row_size,
const uint  id,
const char *const restrict  input,
const uint  n,
const unsigned  size,
const uint *const restrict  proc,
const unsigned  proc_stride,
const uint *const restrict  perm 
)
static

Definition at line 53 of file sarray_transfer.c.

References PACK_BODY.

Referenced by sarray_transfer_many().

+ Here is the caller graph for this function:

static void pack_int ( buffer *const  data,
const unsigned  row_size,
const uint  id,
const char *const restrict  input,
const uint  n,
const unsigned  size,
const unsigned  p_off,
const uint *const restrict  perm 
)
static

Definition at line 17 of file sarray_transfer.c.

References PACK_BODY, and uint.

Referenced by sarray_transfer_many().

+ Here is the caller graph for this function:

static void pack_more ( buffer *const  data,
const unsigned  off,
const unsigned  row_size,
const char *const restrict  input,
const unsigned  size,
const uint *restrict  perm 
)
static

Definition at line 67 of file sarray_transfer.c.

References array::n, array::ptr, restrict, and uint.

Referenced by sarray_transfer_many().

+ Here is the caller graph for this function:

void sarray_transfer_ ( struct array *const  A,
const unsigned  size,
const unsigned  p_off,
const int  set_src,
struct crystal *const  cr 
)

Definition at line 183 of file sarray_transfer.c.

References array::ptr, sarray_transfer_many, and uint.

void sarray_transfer_ext_ ( struct array *const  A,
const unsigned  size,
const uint *const  proc,
const unsigned  proc_stride,
struct crystal *const  cr 
)

Definition at line 191 of file sarray_transfer.c.

References sarray_transfer_many.

uint sarray_transfer_many ( struct array *const *const  A,
const unsigned *const  size,
const unsigned  An,
const int  fixed,
const int  ext,
const int  set_src,
const unsigned  p_off,
const uint *const restrict  proc,
const unsigned  proc_stride,
struct crystal *const  cr 
)

Definition at line 137 of file sarray_transfer.c.

References array_reserve_(), cap_rows(), crystal::comm, crystal_router, crystal::data, i, comm::id, dbl_range::max, array::max, n, array::n, num_rows(), pack_ext(), pack_int(), pack_more(), array::ptr, sortp(), uint, unpack_int(), unpack_more(), and crystal::work.

+ Here is the call graph for this function:

static void unpack_int ( char *restrict  out,
const unsigned  size,
const unsigned  p_off,
const buffer *const  data,
const unsigned  row_size,
int  set_src 
)
static

Definition at line 92 of file sarray_transfer.c.

References array::n, p, array::ptr, restrict, and uint.

Referenced by sarray_transfer_many().

+ Here is the caller graph for this function:

static void unpack_more ( char *restrict  out,
const unsigned  size,
const buffer *const  data,
const unsigned  off,
const unsigned  row_size 
)
static

Definition at line 80 of file sarray_transfer.c.

References array::n, array::ptr, restrict, and uint.

Referenced by sarray_transfer_many().

+ Here is the caller graph for this function: