11
#define HW_ALIGN 16 // For SPE support minimum 16 is required (should be multiple of MRSESDataType anyway)
12
#define SPE_BLOCK 16 // This indicates minimal block of processing by SPE code
13
#define SIMD_BLOCK 16 // In bytes
14
#define HW_ITERATE_BLOCKS 16
16
//#define TRACE_TIMINGS 1
17
//#define USE_FAST_RANDOM 1 //* default random/rand somehow sequentalize threads
18
//#define FIX_RANDOM 1
19
//#define HW_USE_BLOCKED_MULTIPLY //* Alternative outdated way of processing in SPU (don't use)
22
#define blas_asum cblas_sasum
23
#define blas_scal cblas_sscal
24
#define blas_axpy cblas_saxpy
25
#define blas_gemv cblas_sgemv
26
#define blas_gemm cblas_sgemm
27
#define blas_syrk cblas_ssyrk
28
#define blas_trsm cblas_strsm
29
#define blas_trsv cblas_strsv
30
#define blas_dot cblas_sdot
31
#define lapack_potrf spotrf_
33
struct MRSESContextT {
36
int properties; /**< Number of properties */
37
int alloc; /**< Size of vectors in A and B matrixes for alignment */
38
int nA, nB; /**< Number of samples */
40
MRSESDataType *A; /**< Actually: (A - mean(A))/sqrt(nA) */
41
MRSESDataType *B; /**< Actually: (B - mean(B))/sqrt(nB) */
43
MRSESDataType *mean; /**< Actually: mean(A) - mean(B) */
47
int iterate_size; /**< Number of blocks per block group */
55
MRSESIntType *index; /**< In compute: provided by client app, no allocation, in iteration: allocated, indicates that iterations were started before */
56
MRSESIntType *ires; /**< Array of resulting indeces */
57
MRSESDataType *result; /**< Provided by client app, no allocation */
60
typedef struct MRSESContextT MRSESContextS;
62
#endif /* _MRSES_IMPL_H */