darknet/src/blas.h

106 lines
6.6 KiB
C
Raw Normal View History

2015-01-23 03:38:24 +03:00
#ifndef BLAS_H
#define BLAS_H
2017-06-08 23:47:31 +03:00
#include "darknet.h"
2016-11-16 09:53:58 +03:00
void flatten(float *x, int size, int layers, int batch, int forward);
2015-01-23 03:38:24 +03:00
void pm(int M, int N, float *A);
float *random_matrix(int rows, int cols);
void time_random_matrix(int TA, int TB, int m, int k, int n);
2016-11-17 23:18:19 +03:00
void reorg_cpu(float *x, int w, int h, int c, int batch, int stride, int forward, float *out);
2015-01-23 03:38:24 +03:00
void test_blas();
2017-06-18 23:05:37 +03:00
void inter_cpu(int NX, float *X, int NY, float *Y, int B, float *OUT);
void deinter_cpu(int NX, float *X, int NY, float *Y, int B, float *OUT);
void mult_add_into_cpu(int N, float *X, float *Y, float *Z);
2015-07-10 01:22:14 +03:00
void const_cpu(int N, float ALPHA, float *X, int INCX);
2017-06-18 23:05:37 +03:00
void constrain_gpu(int N, float ALPHA, float * X, int INCX);
2015-07-10 01:22:14 +03:00
void pow_cpu(int N, float ALPHA, float *X, int INCX, float *Y, int INCY);
void mul_cpu(int N, float *X, int INCX, float *Y, int INCY);
2017-06-02 06:31:13 +03:00
int test_gpu_blas();
void shortcut_cpu(int batch, int w1, int h1, int c1, float *add, int w2, int h2, int c2, float s1, float s2, float *out);
2015-01-23 03:38:24 +03:00
2015-11-04 06:23:17 +03:00
void mean_cpu(float *x, int batch, int filters, int spatial, float *mean);
void variance_cpu(float *x, float *mean, int batch, int filters, int spatial, float *variance);
2016-01-28 23:30:38 +03:00
void scale_bias(float *output, float *scales, int batch, int n, int size);
void backward_scale_cpu(float *x_norm, float *delta, int batch, int n, int size, float *scale_updates);
void mean_delta_cpu(float *delta, float *variance, int batch, int filters, int spatial, float *mean_delta);
void variance_delta_cpu(float *x, float *delta, float *mean, float *variance, int batch, int filters, int spatial, float *variance_delta);
void normalize_delta_cpu(float *x, float *mean, float *variance, float *mean_delta, float *variance_delta, int batch, int filters, int spatial, float *delta);
2018-01-17 01:30:00 +03:00
void l2normalize_cpu(float *x, float *dx, int batch, int filters, int spatial);
2016-01-28 23:30:38 +03:00
2016-03-01 00:54:12 +03:00
void smooth_l1_cpu(int n, float *pred, float *truth, float *delta, float *error);
void l2_cpu(int n, float *pred, float *truth, float *delta, float *error);
void l1_cpu(int n, float *pred, float *truth, float *delta, float *error);
void logistic_x_ent_cpu(int n, float *pred, float *truth, float *delta, float *error);
void softmax_x_ent_cpu(int n, float *pred, float *truth, float *delta, float *error);
2016-06-06 23:22:45 +03:00
void weighted_sum_cpu(float *a, float *b, float *s, int num, float *c);
2017-06-18 23:05:37 +03:00
void weighted_delta_cpu(float *a, float *b, float *s, float *da, float *db, float *ds, int n, float *dc);
2016-03-01 00:54:12 +03:00
void softmax(float *input, int n, float temp, int stride, float *output);
void softmax_cpu(float *input, int n, int batch, int batch_offset, int groups, int group_offset, int stride, float temp, float *output);
void upsample_cpu(float *in, int w, int h, int c, int batch, int stride, int forward, float scale, float *out);
2016-10-21 23:16:43 +03:00
2015-01-23 03:38:24 +03:00
#ifdef GPU
2016-10-21 23:16:43 +03:00
#include "cuda.h"
2017-05-29 21:59:27 +03:00
#include "tree.h"
2016-10-21 23:16:43 +03:00
2017-06-18 23:05:37 +03:00
void axpy_gpu(int N, float ALPHA, float * X, int INCX, float * Y, int INCY);
void axpy_gpu_offset(int N, float ALPHA, float * X, int OFFX, int INCX, float * Y, int OFFY, int INCY);
void copy_gpu(int N, float * X, int INCX, float * Y, int INCY);
void copy_gpu_offset(int N, float * X, int OFFX, int INCX, float * Y, int OFFY, int INCY);
void add_gpu(int N, float ALPHA, float * X, int INCX);
void supp_gpu(int N, float ALPHA, float * X, int INCX);
void mask_gpu(int N, float * X, float mask_num, float * mask, float val);
2017-06-18 23:05:37 +03:00
void scale_mask_gpu(int N, float * X, float mask_num, float * mask, float scale);
void const_gpu(int N, float ALPHA, float *X, int INCX);
void pow_gpu(int N, float ALPHA, float *X, int INCX, float *Y, int INCY);
void mul_gpu(int N, float *X, int INCX, float *Y, int INCY);
2015-11-04 06:23:17 +03:00
void mean_gpu(float *x, int batch, int filters, int spatial, float *mean);
void variance_gpu(float *x, float *mean, int batch, int filters, int spatial, float *variance);
void normalize_gpu(float *x, float *mean, float *variance, int batch, int filters, int spatial);
2018-01-17 01:30:00 +03:00
void l2normalize_gpu(float *x, float *dx, int batch, int filters, int spatial);
2015-11-04 06:23:17 +03:00
void normalize_delta_gpu(float *x, float *mean, float *variance, float *mean_delta, float *variance_delta, int batch, int filters, int spatial, float *delta);
2015-12-08 04:18:04 +03:00
void fast_mean_delta_gpu(float *delta, float *variance, int batch, int filters, int spatial, float *mean_delta);
void fast_variance_delta_gpu(float *x, float *delta, float *mean, float *variance, int batch, int filters, int spatial, float *variance_delta);
2015-07-10 01:22:14 +03:00
2015-12-08 04:18:04 +03:00
void fast_variance_gpu(float *x, float *mean, int batch, int filters, int spatial, float *variance);
void fast_mean_gpu(float *x, int batch, int filters, int spatial, float *mean);
void shortcut_gpu(int batch, int w1, int h1, int c1, float *add, int w2, int h2, int c2, float s1, float s2, float *out);
2016-01-28 23:30:38 +03:00
void scale_bias_gpu(float *output, float *biases, int batch, int n, int size);
void backward_scale_gpu(float *x_norm, float *delta, int batch, int n, int size, float *scale_updates);
void scale_bias_gpu(float *output, float *biases, int batch, int n, int size);
2016-05-07 02:25:16 +03:00
void add_bias_gpu(float *output, float *biases, int batch, int n, int size);
void backward_bias_gpu(float *bias_updates, float *delta, int batch, int n, int size);
2016-03-01 00:54:12 +03:00
void logistic_x_ent_gpu(int n, float *pred, float *truth, float *delta, float *error);
void softmax_x_ent_gpu(int n, float *pred, float *truth, float *delta, float *error);
2016-03-01 00:54:12 +03:00
void smooth_l1_gpu(int n, float *pred, float *truth, float *delta, float *error);
void l2_gpu(int n, float *pred, float *truth, float *delta, float *error);
void l1_gpu(int n, float *pred, float *truth, float *delta, float *error);
2018-01-17 01:30:00 +03:00
void wgan_gpu(int n, float *pred, float *truth, float *delta, float *error);
2016-05-07 02:25:16 +03:00
void weighted_delta_gpu(float *a, float *b, float *s, float *da, float *db, float *ds, int num, float *dc);
void weighted_sum_gpu(float *a, float *b, float *s, int num, float *c);
void mult_add_into_gpu(int num, float *a, float *b, float *c);
2017-06-18 23:05:37 +03:00
void inter_gpu(int NX, float *X, int NY, float *Y, int B, float *OUT);
void deinter_gpu(int NX, float *X, int NY, float *Y, int B, float *OUT);
2016-05-07 02:25:16 +03:00
2017-06-18 23:05:37 +03:00
void reorg_gpu(float *x, int w, int h, int c, int batch, int stride, int forward, float *out);
2016-05-07 02:25:16 +03:00
void softmax_gpu(float *input, int n, int batch, int batch_offset, int groups, int group_offset, int stride, float temp, float *output);
2017-06-13 02:19:08 +03:00
void adam_update_gpu(float *w, float *d, float *m, float *v, float B1, float B2, float eps, float decay, float rate, int n, int batch, int t);
2016-10-26 18:35:44 +03:00
void adam_gpu(int n, float *x, float *m, float *v, float B1, float B2, float rate, float eps, int t);
2016-10-21 23:16:43 +03:00
2017-06-18 23:05:37 +03:00
void flatten_gpu(float *x, int spatial, int layers, int batch, int forward, float *out);
2017-05-29 21:59:27 +03:00
void softmax_tree(float *input, int spatial, int batch, int stride, float temp, float *output, tree hier);
void upsample_gpu(float *in, int w, int h, int c, int batch, int stride, int forward, float scale, float *out);
2016-11-16 09:53:58 +03:00
2015-01-23 03:38:24 +03:00
#endif
#endif