mirror of
https://github.com/augustin64/projet-tipe
synced 2025-01-23 15:16:26 +01:00
Compare commits
3 Commits
b72227496e
...
4e1cf3e627
Author | SHA1 | Date | |
---|---|---|---|
4e1cf3e627 | |||
446aa2c734 | |||
84759caf0b |
@ -42,13 +42,6 @@
|
|||||||
|
|
||||||
|
|
||||||
//** Paramètres d'optimisation
|
//** Paramètres d'optimisation
|
||||||
//* Paramètre d'optimisation pour un dataset Jpeg
|
|
||||||
// keep images in ram e.g re-read and decompress each time
|
|
||||||
// Enabling this will lead to a large amount of ram used while economizing not that
|
|
||||||
// much computing power
|
|
||||||
// Note: 50States10K dataset is 90Go once decompressed, use with caution
|
|
||||||
//#define STORE_IMAGES_TO_RAM
|
|
||||||
|
|
||||||
//* Optimisation de libération de la mémoire pour de larges réseaux
|
//* Optimisation de libération de la mémoire pour de larges réseaux
|
||||||
// En utilisant CUDA, de larges réseaux créés dans src/common/memory_management.cu
|
// En utilisant CUDA, de larges réseaux créés dans src/common/memory_management.cu
|
||||||
// peuvent prendre jusqu'à plusieurs heures pour être libérés
|
// peuvent prendre jusqu'à plusieurs heures pour être libérés
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
// Génère un flottant entre 0 et 1
|
// Génère un flottant entre 0 et 1
|
||||||
#define RAND_FLT() ((float)rand())/((float)RAND_MAX)
|
#define RAND_FLT() ((float)rand())/((float)RAND_MAX)
|
||||||
#define TWOPI 6.2831853071795864769252867665
|
|
||||||
|
|
||||||
#define ZERO 0
|
#define ZERO 0
|
||||||
#define GLOROT 1
|
#define GLOROT 1
|
||||||
|
@ -24,7 +24,7 @@ typedef struct jpegDataset {
|
|||||||
unsigned int height; // Hauteur des images
|
unsigned int height; // Hauteur des images
|
||||||
|
|
||||||
unsigned int* labels; // Labels
|
unsigned int* labels; // Labels
|
||||||
unsigned char** images; // Images en cache, vaut NULL si STORE_IMAGES_TO_RAM n'est pas défini
|
unsigned char** images; // Images en cache
|
||||||
char** fileNames; // Noms de fichiers
|
char** fileNames; // Noms de fichiers
|
||||||
} jpegDataset;
|
} jpegDataset;
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ float randn() {
|
|||||||
while (f1 == 0) {
|
while (f1 == 0) {
|
||||||
f1 = RAND_FLT();
|
f1 = RAND_FLT();
|
||||||
}
|
}
|
||||||
return sqrt(-2.0*log(f1))*cos(TWOPI*RAND_FLT());
|
return sqrt(-2.0*log(f1))*cos(2*M_PI*RAND_FLT());
|
||||||
}
|
}
|
||||||
|
|
||||||
void initialisation_1d_matrix(int initialisation, float* matrix, int dim, int n_in, int n_out) {
|
void initialisation_1d_matrix(int initialisation, float* matrix, int dim, int n_in, int n_out) {
|
||||||
|
@ -157,19 +157,7 @@ jpegDataset* loadJpegDataset(char* folderPath) {
|
|||||||
dataset->images = (unsigned char**)malloc(sizeof(unsigned char*)*dataset->numImages);
|
dataset->images = (unsigned char**)malloc(sizeof(unsigned char*)*dataset->numImages);
|
||||||
for (int i=0; i < (int)dataset->numImages; i++) {
|
for (int i=0; i < (int)dataset->numImages; i++) {
|
||||||
dataset->images[i] = NULL;
|
dataset->images[i] = NULL;
|
||||||
#ifdef STORE_IMAGES_TO_RAM
|
|
||||||
if (i%1000 == 0) {
|
|
||||||
printf("[%d/%d] Chargement des images\r\n", i, dataset->numImages);
|
|
||||||
fflush(stdout);
|
|
||||||
}
|
|
||||||
image = loadJpegImageFile(dataset->fileNames[i]);
|
|
||||||
dataset->images[i] = image->lpData;
|
|
||||||
free(image);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
#ifdef STORE_IMAGES_TO_RAM
|
|
||||||
printf("Chargement des images terminé \n");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Lecture des caractéristiques des images
|
// Lecture des caractéristiques des images
|
||||||
image = loadJpegImageFile(dataset->fileNames[0]);
|
image = loadJpegImageFile(dataset->fileNames[0]);
|
||||||
@ -245,9 +233,6 @@ void addFilenamesToArray(char* path, char** array, int* index) {
|
|||||||
void free_dataset(jpegDataset* dataset) {
|
void free_dataset(jpegDataset* dataset) {
|
||||||
for (int i=0; i < (int)dataset->numImages; i++) {
|
for (int i=0; i < (int)dataset->numImages; i++) {
|
||||||
free(dataset->fileNames[i]);
|
free(dataset->fileNames[i]);
|
||||||
#ifdef STORE_IMAGES_TO_RAM
|
|
||||||
free(dataset->images[i]);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
free(dataset->fileNames);
|
free(dataset->fileNames);
|
||||||
free(dataset->labels);
|
free(dataset->labels);
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
#ifdef __CUDACC__
|
#ifdef __CUDACC__
|
||||||
__global__ void matrix_mul_kernel(float** M, float** N, float** P, int n, int p, int q) {
|
__global__ void matrix_mul_kernel(float** M, float** N, float** P, int n, int p, int q) {
|
||||||
// Ce fil calcule toutes les multiplications utilisant l'élément N[idx][idy]
|
// Ce fil effectue toutes les multiplications utilisant l'élément N[idx][idy]
|
||||||
int idx = (blockIdx.x*blockDim.x) + threadIdx.x; // Indice de colonne
|
int idx = (blockIdx.x*blockDim.x) + threadIdx.x; // Indice de colonne
|
||||||
int idy = (blockIdx.y*blockDim.y) + threadIdx.y; // Indice de ligne
|
int idy = (blockIdx.y*blockDim.y) + threadIdx.y; // Indice de ligne
|
||||||
|
|
||||||
|
@ -19,12 +19,6 @@ int main(int argc, char* argv[]) {
|
|||||||
printf("Nombre de catégories: %d\n", dataset->numCategories);
|
printf("Nombre de catégories: %d\n", dataset->numCategories);
|
||||||
printf("Nombre d'images: %d\n", dataset->numImages);
|
printf("Nombre d'images: %d\n", dataset->numImages);
|
||||||
printf("Taille des images: %dx%d\n", dataset->width, dataset->height);
|
printf("Taille des images: %dx%d\n", dataset->width, dataset->height);
|
||||||
#ifdef STORE_IMAGES_TO_RAM
|
|
||||||
if (!dataset->images) {
|
|
||||||
printf_error("Aucune image n'a été chargée\n");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Calcul du temps de chargement des images une à une
|
// Calcul du temps de chargement des images une à une
|
||||||
double start_time, end_time;
|
double start_time, end_time;
|
||||||
@ -47,15 +41,6 @@ int main(int argc, char* argv[]) {
|
|||||||
printf("%d\n", i);
|
printf("%d\n", i);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
#ifdef STORE_IMAGES_TO_RAM
|
|
||||||
if (!dataset->images[i]) {
|
|
||||||
printf_error("Image non chargée à l'index ");
|
|
||||||
printf("%d\n", i);
|
|
||||||
printf_error("Nom du fichier: ");
|
|
||||||
printf("%s\n", dataset->fileNames[i]);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
free_dataset(dataset);
|
free_dataset(dataset);
|
||||||
|
Loading…
Reference in New Issue
Block a user