mirror of
https://github.com/augustin64/projet-tipe
synced 2025-01-23 23:26:25 +01:00
Update utils.c/u
This commit is contained in:
parent
8662704faa
commit
bc18a7cb34
24
Makefile
24
Makefile
@ -2,6 +2,7 @@ BUILDDIR := ./build
|
|||||||
SRCDIR := ./src
|
SRCDIR := ./src
|
||||||
CACHE_DIR := ./cache
|
CACHE_DIR := ./cache
|
||||||
NVCC := nvcc
|
NVCC := nvcc
|
||||||
|
CUDA_INCLUDE := /opt/cuda/include # Default instalmlation path for ArchLinux, may be different
|
||||||
|
|
||||||
NVCC_INSTALLED := $(shell command -v $(NVCC) 2> /dev/null)
|
NVCC_INSTALLED := $(shell command -v $(NVCC) 2> /dev/null)
|
||||||
|
|
||||||
@ -59,7 +60,7 @@ $(BUILDDIR)/mnist.o: $(MNIST_SRCDIR)/mnist.c $(MNIST_SRCDIR)/include/mnist.h
|
|||||||
$(CC) -c $< -o $@ $(CFLAGS)
|
$(CC) -c $< -o $@ $(CFLAGS)
|
||||||
|
|
||||||
$(BUILDDIR)/mnist.cuda.o: $(MNIST_SRCDIR)/mnist.c $(MNIST_SRCDIR)/include/mnist.h
|
$(BUILDDIR)/mnist.cuda.o: $(MNIST_SRCDIR)/mnist.c $(MNIST_SRCDIR)/include/mnist.h
|
||||||
$(CC) -c $< -o $@ $(CFLAGS) -DUSE_CUDA -lcuda -I/opt/cuda/include
|
$(CC) -c $< -o $@ $(CFLAGS) -DUSE_CUDA -lcuda -I$(CUDA_INCLUDE)
|
||||||
|
|
||||||
$(BUILDDIR)/mnist_%.o: $(MNIST_SRCDIR)/%.c $(MNIST_SRCDIR)/include/%.h
|
$(BUILDDIR)/mnist_%.o: $(MNIST_SRCDIR)/%.c $(MNIST_SRCDIR)/include/%.h
|
||||||
$(CC) -c $< -o $@ $(CFLAGS)
|
$(CC) -c $< -o $@ $(CFLAGS)
|
||||||
@ -94,21 +95,20 @@ ifdef NVCC_INSTALLED
|
|||||||
$(BUILDDIR)/cnn-main-cuda: $(BUILDDIR)/cnn_main.cuda.o \
|
$(BUILDDIR)/cnn-main-cuda: $(BUILDDIR)/cnn_main.cuda.o \
|
||||||
$(BUILDDIR)/cnn_train.cuda.o \
|
$(BUILDDIR)/cnn_train.cuda.o \
|
||||||
$(BUILDDIR)/cnn_test_network.cuda.o \
|
$(BUILDDIR)/cnn_test_network.cuda.o \
|
||||||
$(BUILDDIR)/cnn_cnn.cuda.o \
|
$(BUILDDIR)/cnn_cnn.o \
|
||||||
$(BUILDDIR)/cnn_creation.cuda.o \
|
$(BUILDDIR)/cnn_creation.cuda.o \
|
||||||
$(BUILDDIR)/cnn_initialisation.cuda.o \
|
$(BUILDDIR)/cnn_initialisation.o \
|
||||||
$(BUILDDIR)/cnn_make.cuda.o \
|
$(BUILDDIR)/cnn_make.o \
|
||||||
$(BUILDDIR)/cnn_neuron_io.cuda.o \
|
$(BUILDDIR)/cnn_neuron_io.cuda.o \
|
||||||
$(BUILDDIR)/cnn_function.cuda.o \
|
$(BUILDDIR)/cnn_function.o \
|
||||||
$(BUILDDIR)/cnn_utils.cuda.o \
|
$(BUILDDIR)/cnn_utils.cuda.o \
|
||||||
$(BUILDDIR)/cnn_update.cuda.o \
|
$(BUILDDIR)/cnn_update.o \
|
||||||
$(BUILDDIR)/cnn_free.cuda.o \
|
$(BUILDDIR)/cnn_free.cuda.o \
|
||||||
$(BUILDDIR)/cnn_jpeg.cuda.o \
|
$(BUILDDIR)/cnn_jpeg.cuda.o \
|
||||||
$(BUILDDIR)/cnn_cuda_convolution.o \
|
$(BUILDDIR)/cnn_cuda_convolution.o \
|
||||||
$(BUILDDIR)/cnn_backpropagation.cuda.o \
|
$(BUILDDIR)/cnn_backpropagation.o \
|
||||||
$(BUILDDIR)/colors.cuda.o \
|
$(BUILDDIR)/colors.o \
|
||||||
$(BUILDDIR)/mnist.cuda.o \
|
$(BUILDDIR)/mnist.cuda.o \
|
||||||
$(BUILDDIR)/utils.cuda.o \
|
|
||||||
$(BUILDDIR)/cuda_utils.o
|
$(BUILDDIR)/cuda_utils.o
|
||||||
$(NVCC) $(NVCCFLAGS) $^ -o $@
|
$(NVCC) $(NVCCFLAGS) $^ -o $@
|
||||||
else
|
else
|
||||||
@ -123,7 +123,7 @@ $(BUILDDIR)/cnn_%.o: $(CNN_SRCDIR)/%.c $(CNN_SRCDIR)/include/%.h
|
|||||||
$(CC) -c $< -o $@ $(CFLAGS)
|
$(CC) -c $< -o $@ $(CFLAGS)
|
||||||
|
|
||||||
$(BUILDDIR)/cnn_%.cuda.o: $(CNN_SRCDIR)/%.c $(CNN_SRCDIR)/include/%.h
|
$(BUILDDIR)/cnn_%.cuda.o: $(CNN_SRCDIR)/%.c $(CNN_SRCDIR)/include/%.h
|
||||||
$(CC) -c $< -o $@ $(CFLAGS) -DUSE_CUDA -lcuda -I/opt/cuda/include
|
$(CC) -c $< -o $@ $(CFLAGS) -DUSE_CUDA -lcuda -I$(CUDA_INCLUDE)
|
||||||
|
|
||||||
ifdef NVCC_INSTALLED
|
ifdef NVCC_INSTALLED
|
||||||
$(BUILDDIR)/cnn_cuda_%.o: $(CNN_SRCDIR)/%.cu $(CNN_SRCDIR)/include/%.h
|
$(BUILDDIR)/cnn_cuda_%.o: $(CNN_SRCDIR)/%.cu $(CNN_SRCDIR)/include/%.h
|
||||||
@ -139,7 +139,7 @@ $(BUILDDIR)/%.o: $(SRCDIR)/%.c $(SRCDIR)/include/%.h
|
|||||||
$(CC) -c $< -o $@ $(CFLAGS)
|
$(CC) -c $< -o $@ $(CFLAGS)
|
||||||
|
|
||||||
$(BUILDDIR)/%.cuda.o: $(SRCDIR)/%.c $(SRCDIR)/include/%.h
|
$(BUILDDIR)/%.cuda.o: $(SRCDIR)/%.c $(SRCDIR)/include/%.h
|
||||||
$(CC) -c $< -o $@ $(CFLAGS) -DUSE_CUDA -lcuda -I/opt/cuda/include
|
$(CC) -c $< -o $@ $(CFLAGS) -DUSE_CUDA -lcuda -I$(CUDA_INCLUDE)
|
||||||
|
|
||||||
ifdef NVCC_INSTALLED
|
ifdef NVCC_INSTALLED
|
||||||
$(BUILDDIR)/cuda_%.o: $(SRCDIR)/%.cu $(SRCDIR)/include/%.h
|
$(BUILDDIR)/cuda_%.o: $(SRCDIR)/%.cu $(SRCDIR)/include/%.h
|
||||||
@ -173,7 +173,7 @@ ifdef NVCC_INSTALLED
|
|||||||
$(BUILDDIR)/test-cnn_%: test/cnn_%.cu \
|
$(BUILDDIR)/test-cnn_%: test/cnn_%.cu \
|
||||||
$(BUILDDIR)/cnn_cuda_%.o \
|
$(BUILDDIR)/cnn_cuda_%.o \
|
||||||
$(BUILDDIR)/cuda_utils.o \
|
$(BUILDDIR)/cuda_utils.o \
|
||||||
$(BUILDDIR)/colors.cuda.o \
|
$(BUILDDIR)/colors.o \
|
||||||
$(BUILDDIR)/mnist.cuda.o
|
$(BUILDDIR)/mnist.cuda.o
|
||||||
$(NVCC) $(NVCCFLAGS) $^ -o $@
|
$(NVCC) $(NVCCFLAGS) $^ -o $@
|
||||||
else
|
else
|
||||||
|
@ -94,6 +94,12 @@ void* train_thread(void* parameters) {
|
|||||||
|
|
||||||
|
|
||||||
void train(int dataset_type, char* images_file, char* labels_file, char* data_dir, int epochs, char* out, char* recover) {
|
void train(int dataset_type, char* images_file, char* labels_file, char* data_dir, int epochs, char* out, char* recover) {
|
||||||
|
#ifdef USE_CUDA
|
||||||
|
bool compatibility = check_cuda_compatibility();
|
||||||
|
if (!compatibility) {
|
||||||
|
printf("Exiting.\n");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
srand(time(NULL));
|
srand(time(NULL));
|
||||||
Network* network;
|
Network* network;
|
||||||
int input_dim = -1;
|
int input_dim = -1;
|
||||||
|
@ -1,7 +1,14 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
#ifdef USE_CUDA
|
#ifdef USE_CUDA
|
||||||
|
#ifndef __CUDACC__
|
||||||
#include "cuda_runtime.h"
|
#include "cuda_runtime.h"
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#ifdef __CUDACC__
|
||||||
|
#define USE_CUDA
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef DEF_UTILS_CU_H
|
#ifndef DEF_UTILS_CU_H
|
||||||
@ -26,10 +33,28 @@ int i_div_up(int a, int b);
|
|||||||
/*
|
/*
|
||||||
* Vérification de la compatibilité CUDA
|
* Vérification de la compatibilité CUDA
|
||||||
*/
|
*/
|
||||||
bool check_cuda_compatibility();
|
#ifdef __CUDACC__
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
void* nalloc(size_t sz);
|
bool check_cuda_compatibility();
|
||||||
|
#ifdef __CUDACC__
|
||||||
void gree(void* ptr);
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __CUDACC__
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
void* nalloc(size_t sz);
|
||||||
|
#ifdef __CUDACC__
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __CUDACC__
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
void gree(void* ptr);
|
||||||
|
#ifdef __CUDACC__
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
56
src/utils.c
56
src/utils.c
@ -1,10 +1,11 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdbool.h>
|
|
||||||
|
|
||||||
#ifdef USE_CUDA
|
#ifdef USE_CUDA
|
||||||
|
#ifndef __CUDACC__
|
||||||
#include "cuda_runtime.h"
|
#include "cuda_runtime.h"
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "include/utils.h"
|
#include "include/utils.h"
|
||||||
#include "include/colors.h"
|
#include "include/colors.h"
|
||||||
|
|
||||||
@ -13,6 +14,9 @@ int i_div_up(int a, int b) { // Partie entière supérieure de a/b
|
|||||||
return ((a % b) != 0) ? (a / b + 1) : (a / b);
|
return ((a % b) != 0) ? (a / b + 1) : (a / b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __CUDACC__
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
bool check_cuda_compatibility() {
|
bool check_cuda_compatibility() {
|
||||||
#ifdef __CUDACC__
|
#ifdef __CUDACC__
|
||||||
int nDevices;
|
int nDevices;
|
||||||
@ -39,28 +43,52 @@ bool check_cuda_compatibility() {
|
|||||||
return false;
|
return false;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
#ifdef __CUDACC__
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifndef USE_CUDA
|
#ifndef USE_CUDA
|
||||||
|
#ifdef __CUDACC__
|
||||||
void* nalloc(size_t sz) {
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
void* nalloc(size_t sz) {
|
||||||
void* ptr = malloc(sz);
|
void* ptr = malloc(sz);
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
#ifdef __CUDACC__
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void gree(void* ptr) {
|
#ifdef __CUDACC__
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
void gree(void* ptr) {
|
||||||
free(ptr);
|
free(ptr);
|
||||||
}
|
}
|
||||||
|
#ifdef __CUDACC__
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
|
#ifdef __CUDACC__
|
||||||
void* nalloc(size_t sz) {
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
void* nalloc(size_t sz) {
|
||||||
void* ptr;
|
void* ptr;
|
||||||
cudaMallocManaged(&ptr, sz, cudaMemAttachHost);
|
cudaMallocManaged(&ptr, sz, cudaMemAttachHost);
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
#ifdef __CUDACC__
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void gree(void* ptr) {
|
#ifdef __CUDACC__
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
void gree(void* ptr) {
|
||||||
cudaFree(ptr);
|
cudaFree(ptr);
|
||||||
}
|
}
|
||||||
|
#ifdef __CUDACC__
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
56
src/utils.cu
56
src/utils.cu
@ -1,5 +1,10 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#ifdef USE_CUDA
|
||||||
|
#ifndef __CUDACC__
|
||||||
|
#include "cuda_runtime.h"
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "include/utils.h"
|
#include "include/utils.h"
|
||||||
#include "include/colors.h"
|
#include "include/colors.h"
|
||||||
@ -9,6 +14,9 @@ int i_div_up(int a, int b) { // Partie entière supérieure de a/b
|
|||||||
return ((a % b) != 0) ? (a / b + 1) : (a / b);
|
return ((a % b) != 0) ? (a / b + 1) : (a / b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __CUDACC__
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
bool check_cuda_compatibility() {
|
bool check_cuda_compatibility() {
|
||||||
#ifdef __CUDACC__
|
#ifdef __CUDACC__
|
||||||
int nDevices;
|
int nDevices;
|
||||||
@ -35,28 +43,52 @@ bool check_cuda_compatibility() {
|
|||||||
return false;
|
return false;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
#ifdef __CUDACC__
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef __CUDACC__
|
|
||||||
|
|
||||||
void* nalloc(size_t sz) {
|
#ifndef USE_CUDA
|
||||||
|
#ifdef __CUDACC__
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
void* nalloc(size_t sz) {
|
||||||
void* ptr = malloc(sz);
|
void* ptr = malloc(sz);
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
#ifdef __CUDACC__
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void gree(void* ptr) {
|
#ifdef __CUDACC__
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
void gree(void* ptr) {
|
||||||
free(ptr);
|
free(ptr);
|
||||||
}
|
}
|
||||||
|
#ifdef __CUDACC__
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
|
#ifdef __CUDACC__
|
||||||
void* nalloc(size_t sz) {
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
void* nalloc(size_t sz) {
|
||||||
void* ptr;
|
void* ptr;
|
||||||
cudaMallocManaged(&ptr, sz, cudaMemAttachHost);
|
cudaMallocManaged(&ptr, sz, cudaMemAttachHost);
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
#ifdef __CUDACC__
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void gree(void* ptr) {
|
#ifdef __CUDACC__
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
void gree(void* ptr) {
|
||||||
cudaFree(ptr);
|
cudaFree(ptr);
|
||||||
}
|
}
|
||||||
|
#ifdef __CUDACC__
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user