2022-11-01 17:24:29 +01:00
|
|
|
#include "struct.h"
|
|
|
|
|
2023-05-13 15:50:01 +02:00
|
|
|
/*
|
|
|
|
On renvoie true si et seulement si _ et _:
|
|
|
|
lower_bound <= x < upper_bound
|
|
|
|
lower_bound <= y < upper_bound
|
|
|
|
*/
|
|
|
|
int convolution_not_outside(int x, int y, int lower_bound, int upper_bound);
|
|
|
|
|
2022-11-01 17:24:29 +01:00
|
|
|
/*
|
2022-12-19 15:49:18 +01:00
|
|
|
* Effectue la convolution naïvement sur le processeur
|
2022-11-01 17:24:29 +01:00
|
|
|
*/
|
2023-05-13 13:37:46 +02:00
|
|
|
void make_convolution_cpu(Kernel_cnn* kernel, float*** input, float*** output, int output_dim, int stride, int padding);
|
2022-11-01 17:24:29 +01:00
|
|
|
|
|
|
|
#ifdef __CUDACC__
|
|
|
|
/*
|
|
|
|
* Kernel de la convolution sur carte graphique
|
|
|
|
*/
|
2023-05-13 13:37:46 +02:00
|
|
|
__global__ void make_convolution_kernel(int k_size, int columns, int rows, float* bias, size_t pitch_bias, float**** weights, size_t pitch_weights, float*** input, size_t pitch_input, float*** output, size_t pitch_output, int output_dim, int stride, int padding);
|
2022-11-01 17:24:29 +01:00
|
|
|
|
|
|
|
/*
|
2022-12-19 15:49:18 +01:00
|
|
|
* Effectue la convolution naïvement sur la carte graphique
|
2022-11-01 17:24:29 +01:00
|
|
|
*/
|
2023-05-13 13:37:46 +02:00
|
|
|
void make_convolution_device(Kernel_cnn* kernel, float*** input, float*** output, int output_dim, int stride, int padding);
|
2022-11-01 17:24:29 +01:00
|
|
|
#endif
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Détermine si la convolution peut-être faite sur la carte graphique au moment de la compilation
|
|
|
|
*/
|
2023-05-13 13:37:46 +02:00
|
|
|
void make_convolution(Kernel_cnn* kernel, float*** input, float*** output, int output_dim, int stride, int padding);
|