diff options
author | Determinant <ted.sybil@gmail.com> | 2015-08-28 13:21:52 +0800 |
---|---|---|
committer | Determinant <ted.sybil@gmail.com> | 2015-08-28 13:21:52 +0800 |
commit | 1a9f63e351582f54fec7817927168cb1dbb0c1d6 (patch) | |
tree | c340b648c60d93b956be5956fa03233383e37e5d /nerv/lib/matrix/mmatrix.c | |
parent | 8bf9c7575ffeeabb3924e9e02a35afe187071fe2 (diff) |
support gpu buffering
Diffstat (limited to 'nerv/lib/matrix/mmatrix.c')
-rw-r--r-- | nerv/lib/matrix/mmatrix.c | 37 |
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; -} |