aboutsummaryrefslogtreecommitdiff
path: root/nerv/lib/matrix/mmatrix.c
diff options
context:
space:
mode:
authorDeterminant <ted.sybil@gmail.com>2015-08-28 13:21:52 +0800
committerDeterminant <ted.sybil@gmail.com>2015-08-28 13:21:52 +0800
commit1a9f63e351582f54fec7817927168cb1dbb0c1d6 (patch)
treec340b648c60d93b956be5956fa03233383e37e5d /nerv/lib/matrix/mmatrix.c
parent8bf9c7575ffeeabb3924e9e02a35afe187071fe2 (diff)
support gpu buffering
Diffstat (limited to 'nerv/lib/matrix/mmatrix.c')
-rw-r--r--nerv/lib/matrix/mmatrix.c37
1 files changed, 19 insertions, 18 deletions
diff --git a/nerv/lib/matrix/mmatrix.c b/nerv/lib/matrix/mmatrix.c
index 94f1ea8..b8157eb 100644
--- a/nerv/lib/matrix/mmatrix.c
+++ b/nerv/lib/matrix/mmatrix.c
@@ -7,6 +7,25 @@
#define nerv_matrix_(NAME) nerv_matrix_host_float_##NAME
#include "generic/matrix.h"
#include "generic/mmatrix.c"
+
+Matrix *nerv_matrix_(perm_gen)(int ncol, Status *status) {
+ int i;
+ Matrix *self = nerv_matrix_(create)(1, ncol, status);
+ if (status->err_code != NERV_NORMAL)
+ return NULL;
+ float *prow = self->data.f;
+ for (i = 0; i < ncol; i++)
+ prow[i] = i;
+ for (i = ncol - 1; i >= 0; i--)
+ {
+ size_t j = rand() % (i + 1);
+ float tmp = prow[i];
+ prow[i] = prow[j];
+ prow[j] = tmp;
+ }
+ return self;
+}
+
#undef nerv_matrix_
#undef host_matrix_
#undef MATRIX_USE_FLOAT
@@ -33,21 +52,3 @@
#define host_matrix_(NAME) host_matrix_int_##NAME
#define nerv_matrix_(NAME) nerv_matrix_host_int_##NAME
#include "generic/mmatrix.c"
-
-Matrix *nerv_matrix_(perm_gen)(int ncol, Status *status) {
- int i;
- Matrix *self = nerv_matrix_(create)(1, ncol, status);
- if (status->err_code != NERV_NORMAL)
- return NULL;
- long *prow = self->data.i;
- for (i = 0; i < ncol; i++)
- prow[i] = i;
- for (i = ncol - 1; i >= 0; i--)
- {
- size_t j = rand() % (i + 1);
- long tmp = prow[i];
- prow[i] = prow[j];
- prow[j] = tmp;
- }
- return self;
-}