aboutsummaryrefslogtreecommitdiff
path: root/nerv/lib/matrix/generic/cumatrix.h
blob: 9addae341ec2cb202cf4571703da8de62276aaf7 (plain) (blame)
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include "../../common.h"

void nerv_matrix_(add)(Matrix *c, const Matrix *a, const Matrix *b,
                            MATRIX_ELEM alpha, MATRIX_ELEM beta,
                            CuContext *context, Status *status);
void nerv_matrix_(mul)(Matrix *c, const Matrix *a, const Matrix *b,
                            MATRIX_ELEM alpha, MATRIX_ELEM beta,
                            int ta, int tb,
                            CuContext *context, Status *status);
void nerv_matrix_(sigmoid)(Matrix *a, const Matrix *b,
                            CuContext *context, Status *status);
void nerv_matrix_(sigmoid_grad)(Matrix *nerr, const Matrix *err,
                                const Matrix *output,
                                CuContext *context, Status *status);
void nerv_matrix_(tanh)(Matrix *a, const Matrix *b,
                        CuContext *context, Status *status);
void nerv_matrix_(tanh_grad)(Matrix *nerr, const Matrix *err,
                                const Matrix *output,
                                CuContext *context, Status *status);
void nerv_matrix_(relu)(Matrix *a, const Matrix *b,
                        CuContext *context, Status *status);
void nerv_matrix_(relu_grad)(Matrix *nerr, const Matrix *err,
                                const Matrix *output,
                                CuContext *context, Status *status);

Matrix *nerv_matrix_(softmax)(Matrix *b, const Matrix *a,
                            CuContext *context, Status *status);
Matrix *nerv_matrix_(rowsum)(Matrix *a, CuContext *context, Status *status);
Matrix *nerv_matrix_(colsum)(Matrix *a, CuContext *context, Status *status);
Matrix *nerv_matrix_(colsame)(Matrix *a, const Matrix *ref,
                                CuContext *context, Status *status);
Matrix *nerv_matrix_(rowmax)(Matrix *a, CuContext *context, Status *status);
void nerv_matrix_(rowmax_idx)(Matrix *a, Matrix **b, Matrix **idx,
                                CuContext *context, Status *status);
void nerv_matrix_(add_row)(Matrix *b, const Matrix *a, double beta,
                            CuContext *context, Status *status);
void nerv_matrix_(add_col)(Matrix *b, const Matrix *a, double beta,
                            CuContext *context, Status *status);
void nerv_matrix_(clip)(Matrix *self, double val1, double val2,
                        CuContext *context, Status *status);
void nerv_matrix_(fill)(Matrix *self, double val,
                        CuContext *context, Status *status);
void nerv_matrix_(diagonalize)(Matrix *self,
                        CuContext *context, Status *status);
void nerv_matrix_(set_values_by_mask)(Matrix *self, Matrix *mask, double val,
                        CuContext *context, Status *status);
void nerv_matrix_(copy_fromd)(Matrix *a, const Matrix *b,
                            int a_begin, int b_begin, int b_end,
                            CuContext *context, Status *status);
void nerv_matrix_(copy_fromh)(Matrix *a, const Matrix *b,
                            int a_begin, int b_begin, int b_end,
                            CuContext *context, Status *status);
void nerv_matrix_(copy_toh)(Matrix *a, const Matrix *b,
                            int a_begin, int a_end, int b_begin,
                            CuContext *context, Status *status);
Matrix *nerv_matrix_(trans)(Matrix *a, CuContext *context, Status *status);
void nerv_matrix_(mul_elem)(Matrix *c, const Matrix *a, const Matrix *b,
                            CuContext *context, Status *status);

void nerv_matrix_(log_elem)(Matrix *b, const Matrix *a,
                            CuContext *context, Status *status);

Matrix *nerv_matrix_(decompress)(const Matrix *a, int orig_col,
                            CuContext *context, Status *status);
void nerv_matrix_(copy_rows_fromh_by_idx)(Matrix *a, const Matrix *b,
                            const Matrix *idx, int b_begin,
                            CuContext *context, Status *status);
void nerv_matrix_(copy_rows_fromd_by_idx)(Matrix *a, const Matrix *b,
                            const Matrix *idx, int b_begin,
                            CuContext *context, Status *status);
void nerv_matrix_(copy_rows_fromd_by_colidx)(Matrix *a, const Matrix *b,
                            const Matrix *idx, int b_begin,
                            CuContext *context, Status *status);

#ifdef __NERV_FUTURE_CUDA_7
void nerv_matrix_(update_select_rows_by_rowidx)(Matrix *c, const Matrix *a,
                            const Matrix *idx, double alpha, double beta,
                            CuContext *context, Status *status);
void nerv_matrix_(update_select_rows_by_colidx)(Matrix *c, const Matrix *a,
                            const Matrix *idx, double alpha, double beta,
                            CuContext *context, Status *status);
#endif

void nerv_matrix_(expand_frm)(Matrix *a, const Matrix *b,
                            int cont, CuContext *context, Status *status);
void nerv_matrix_(rearrange_frm)(Matrix *a, const Matrix *b,
                                int step, CuContext *context, Status *status);
void nerv_matrix_(scale_rows_by_col)(Matrix *a, const Matrix *b,
                                    CuContext *context, Status *status);
void nerv_matrix_(scale_rows_by_row)(Matrix *a, const Matrix *b,
                                    CuContext *context, Status *status);
void nerv_matrix_(prefixsum_row)(Matrix *a, const Matrix *b,
                                    CuContext *context, Status *status);
void nerv_matrix_(thres_mask)(Matrix *a, Matrix *b,
                                double thres, double low, double high,
                                CuContext *context, Status *status);
void nerv_matrix_(rand_uniform)(Matrix *a, CuContext *context, Status *status);

#ifdef __NERV_FUTURE_CUDA_7
void nerv_matrix_(update_select_rows_by_rowidx)(Matrix *c, const Matrix *a,
                                                const Matrix *idx,
                                                double alpha, double beta,
                                                CuContext *context, Status *status);
void nerv_matrix_(update_select_rows_by_colidx)(Matrix *c, const Matrix *a,
                                                const Matrix *idx,
                                                double alpha, double beta,
                                                CuContext *context, Status *status);
#endif

void nerv_matrix_(prefixsum_row)(Matrix *a, const Matrix *b,
                                CuContext *context, Status *status);