1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
#ifndef STRIDED_OPERATIONS_H
#define STRIDED_OPERATIONS_H
#include <stddef.h>
#include "zfp.h"
typedef enum {
AS_IS = 0,
PERMUTED = 1,
INTERLEAVED = 2,
REVERSED = 3,
} stride_config;
// reversed array ([inputLen - 1], [inputLen - 2], ..., [1], [0])
void
reverseArray(void* inputArr, void* outputArr, size_t inputArrLen, zfp_type zfpType);
// interleaved array ([0], [0], [1], [1], [2], ...)
void
interleaveArray(void* inputArr, void* outputArr, size_t inputArrLen, zfp_type zfpType);
// ijkl -> lkji, or for lower dims (ex. ij -> ji)
// returns 0 on success, 1 on failure
// (defined to fail if dims == 1)
int
permuteSquareArray(void* inputArr, void* outputArr, size_t sideLen, int dims, zfp_type zfpType);
void
getReversedStrides(int dims, size_t n[4], ptrdiff_t s[4]);
void
getInterleavedStrides(int dims, size_t n[4], ptrdiff_t s[4]);
void
getPermutedStrides(int dims, size_t n[4], ptrdiff_t s[4]);
#endif
|