mirror of
https://github.com/augustin64/projet-tipe
synced 2025-01-23 15:16:26 +01:00
Fix some MacOS compatibility issues
This commit is contained in:
parent
6c7112b9b5
commit
e661a4178d
8
Makefile
8
Makefile
@ -1,3 +1,4 @@
|
|||||||
|
OS := $(shell uname)
|
||||||
BUILDDIR := ./build
|
BUILDDIR := ./build
|
||||||
SRCDIR := ./src
|
SRCDIR := ./src
|
||||||
CACHE_DIR := ./.cache
|
CACHE_DIR := ./.cache
|
||||||
@ -41,6 +42,13 @@ NVCCFLAGS = -g
|
|||||||
# -fsanitize=address -lasan
|
# -fsanitize=address -lasan
|
||||||
#! WARNING: test/cnn-neuron_io fails with this option enabled
|
#! WARNING: test/cnn-neuron_io fails with this option enabled
|
||||||
|
|
||||||
|
# Specify library path of libjpeg on MacOS
|
||||||
|
ifeq ($(OS),Darwin)
|
||||||
|
LD_CFLAGS += -I/opt/homebrew/Cellar/jpeg/9e/include/ -L/opt/homebrew/Cellar/jpeg/9e/lib/
|
||||||
|
LD_NVCCFLAGS += -L/opt/homebrew/Cellar/jpeg/9e/lib/
|
||||||
|
|
||||||
|
CFLAGS += -I/opt/homebrew/Cellar/jpeg/9e/include/
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
all: dense cnn;
|
all: dense cnn;
|
||||||
|
21
README.md
21
README.md
@ -178,17 +178,24 @@ Résultats avec VGG16, pour des images de 256x256 pixels (seulement une plus pet
|
|||||||
|
|
||||||
Sur le cloud avec google Colab: bon GPU mais mauvais processeur: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1LfwSrQRaoC91yC9mx9BKHzuc7odev5r6?usp=sharing)
|
Sur le cloud avec google Colab: bon GPU mais mauvais processeur: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1LfwSrQRaoC91yC9mx9BKHzuc7odev5r6?usp=sharing)
|
||||||
|
|
||||||
Les distributions suivantes ont étés essayées, il sera sans doute nécessaire de modifier le code pour l'exécuter sous Windows/ MacOS:
|
## Dépendances
|
||||||
|
- `cuda` : pour utiliser la carte graphique (NVIDIA seulement)
|
||||||
|
- `libjpeg-dev` : n'est pas nécessairement installé par défaut
|
||||||
|
- GNU `make` : installé par défaut sur la majorité des distributions Linux et sur MacOS
|
||||||
|
- `gcc` : installé par défaut sur la majorité des distributions Linux et sur MacOS
|
||||||
|
|
||||||
|
### Linux
|
||||||
|
Les distributions suivantes ont étés essayées, il faudra parfois installer `libjpeg`
|
||||||
- Arch
|
- Arch
|
||||||
- Fedora
|
- Fedora
|
||||||
- Manjaro
|
- Manjaro
|
||||||
- Ubuntu
|
- Ubuntu: `apt install libjpeg-dev`
|
||||||
|
|
||||||
## Dépendances
|
### MacOS
|
||||||
- `cuda` : pour utiliser la carte graphique (NVIDIA seulement)
|
Avec [Homebrew](https://brew.sh/):
|
||||||
- `libjpeg-dev` : n'est pas installé par défaut sur ubuntu notamment
|
```bash
|
||||||
- GNU `make` : installé par défaut sur la majorité des distributions
|
brew install libjpeg
|
||||||
- `gcc` : installé par défaut sur la majorité des distributions
|
```
|
||||||
|
|
||||||
## Compilation
|
## Compilation
|
||||||
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
#include <sys/sysinfo.h>
|
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -7,6 +6,14 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
#include <sys/sysinfo.h>
|
||||||
|
#elif defined(__APPLE__)
|
||||||
|
#include <sys/sysctl.h>
|
||||||
|
#else
|
||||||
|
#error Unknown platform
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "../common/include/memory_management.h"
|
#include "../common/include/memory_management.h"
|
||||||
#include "../common/include/colors.h"
|
#include "../common/include/colors.h"
|
||||||
#include "../common/include/utils.h"
|
#include "../common/include/utils.h"
|
||||||
@ -261,7 +268,17 @@ void train(int dataset_type, char* images_file, char* labels_file, char* data_di
|
|||||||
#ifdef USE_MULTITHREADING
|
#ifdef USE_MULTITHREADING
|
||||||
int nb_remaining_images; // Nombre d'images restantes à lancer pour une série de threads
|
int nb_remaining_images; // Nombre d'images restantes à lancer pour une série de threads
|
||||||
// Récupération du nombre de threads disponibles
|
// Récupération du nombre de threads disponibles
|
||||||
|
#ifdef __linux__
|
||||||
int nb_threads = get_nprocs();
|
int nb_threads = get_nprocs();
|
||||||
|
#elif defined(__APPLE__)
|
||||||
|
int nb_threads;
|
||||||
|
size_t len = sizeof(nb_threads);
|
||||||
|
|
||||||
|
if (sysctlbyname("hw.logicalcpu", &nb_threads, &len, NULL, 0) == -1) {
|
||||||
|
perror("sysctl");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
pthread_t *tid = (pthread_t*)malloc(nb_threads * sizeof(pthread_t));
|
pthread_t *tid = (pthread_t*)malloc(nb_threads * sizeof(pthread_t));
|
||||||
|
|
||||||
// Création des paramètres donnés à chaque thread dans le cas du multi-threading
|
// Création des paramètres donnés à chaque thread dans le cas du multi-threading
|
||||||
|
@ -4,7 +4,14 @@
|
|||||||
#include <float.h>
|
#include <float.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
#include <sys/sysinfo.h>
|
#include <sys/sysinfo.h>
|
||||||
|
#elif defined(__APPLE__)
|
||||||
|
#include <sys/sysctl.h>
|
||||||
|
#else
|
||||||
|
#error Unknown platform
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "include/neural_network.h"
|
#include "include/neural_network.h"
|
||||||
#include "../common/include/colors.h"
|
#include "../common/include/colors.h"
|
||||||
@ -201,7 +208,17 @@ void train(int epochs, char* recovery, char* image_file, char* label_file, char*
|
|||||||
float accuracy;
|
float accuracy;
|
||||||
float current_accuracy;
|
float current_accuracy;
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
int nb_threads = get_nprocs();
|
int nb_threads = get_nprocs();
|
||||||
|
#elif defined(__APPLE__)
|
||||||
|
int nb_threads;
|
||||||
|
size_t len = sizeof(nb_threads);
|
||||||
|
|
||||||
|
if (sysctlbyname("hw.logicalcpu", &nb_threads, &len, NULL, 0) == -1) {
|
||||||
|
perror("sysctl");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
pthread_t *tid = (pthread_t *)malloc(nb_threads * sizeof(pthread_t));
|
pthread_t *tid = (pthread_t *)malloc(nb_threads * sizeof(pthread_t));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -33,7 +33,9 @@ int main(int argc, char* argv[]) {
|
|||||||
}
|
}
|
||||||
printf("OK\n");
|
printf("OK\n");
|
||||||
end_time = clock();
|
end_time = clock();
|
||||||
printf("Temps par image (calculé sur une moyenne de %d): %lf s\n", N, (end_time - start_time)/N);
|
printf("Temps par image (calculé sur une moyenne de %d): ", N);
|
||||||
|
printf_time((end_time - start_time)/N);
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
for (int i=0; i < (int)dataset->numImages; i++) {
|
for (int i=0; i < (int)dataset->numImages; i++) {
|
||||||
if (!dataset->fileNames[i]) {
|
if (!dataset->fileNames[i]) {
|
||||||
|
Loading…
Reference in New Issue
Block a user