CUDA Networks
mainpage.h
Go to the documentation of this file.
1 /**
2  * @mainpage CUDA Neural Networks
3  *
4  * @section intro_sec Overview
5  * Deep neural network implementation from scratch in C++ with CUDA for GPU acceleration.
6  * This project focuses on creating a neural network to classify digits using the MNIST dataset.
7  *
8  * The main features include:
9  * - Matrix and vector operations optimized for GPU
10  * - Feedforward neural network with customizable architecture
11  * - Training using backpropagation and gradient descent
12  * - MNIST digit classification
13  *
14  * @section requirements_sec System Requirements
15  * This project was developed and tested on a system with the following specifications:
16  * - OS: Arch Linux x86_64
17  * - CPU: Intel i7-9750H (12) @ 4.500GHz
18  * - GPU: NVIDIA GeForce GTX 1650 Mobile / Max-Q
19  * - Memory: 16GB
20  * - NVIDIA Driver Version: 560.35.03
21  * - CUDA Version: 12.6
22  * - CUDA Compilation Tools: Release 12.6, V12.6.77
23  *
24  * Please ensure your system meets these requirements or adjust accordingly.
25  *
26  * @section installation_sec Installation
27  * 1. Clone the repository:
28  * ```
29  * git clone https://github.com/juan-esteban-berger/cuda_networks.git
30  * cd cuda_networks
31  * ```
32  * 2. Ensure you have the CUDA Toolkit (version 12.6 or compatible) installed on your system.
33  * 3. Install the Google Test library if not already present:
34  * ```
35  * sudo pacman -S gtest
36  * ```
37  * 4. Build the project:
38  * ```
39  * make
40  * ```
41  *
42  * @section usage_sec Usage
43  * To run the MNIST classifier:
44  * ```
45  * make run
46  * ```
47  * This will execute the main program, which trains the neural network on the MNIST dataset
48  * and displays the training progress and final accuracy.
49  *
50  * @image html demo.gif "Demo of CUDA Neural Networks"
51  *
52  * @section tests_sec Running Tests
53  * To run the test suite:
54  * ```
55  * make test
56  * ```
57  * This will execute all the unit tests for the project.
58  *
59  * @section memcheck_sec Memory Check
60  * To run the compute sanitizer memory check:
61  * ```
62  * make memcheck
63  * ```
64  * This will use NVIDIA's Compute Sanitizer to check for memory errors in the CUDA code.
65  *
66  * @section license_sec License
67  * This project is licensed under the MIT License - see the LICENSE file for details.
68  *
69  * @section modifications_sec Modifications
70  * If you encounter any issues running the project, you may need to:
71  * 1. Adjust the `NVCCFLAGS` in the Makefile to match your GPU architecture.
72  * 2. Ensure the paths to the CUDA Toolkit and Google Test library are correct for your system.
73  * 3. If you're using a different CUDA version, you might need to update some CUDA function calls or syntax.
74  */