This is a C++ project aimed at implementing and optimizing neural network operations for both CPU and GPU. The primary goal is to compare performance between basic CPU operations and optimized CPU operations (SIMD), as well as to compare performance between CPU and GPU implementations of basic neural network components.
This project implements:
- A Tensor class for handling multi-dimensional data
- CPU implementations of basic operations (addition, matrix multiplication)
- SIMD-optimized versions of above operations using AVX instructions
- A FullyConnectedLayer class with both CPU and GPU forward pass, using OpenCL for GPU
- A benchmarking system to compare baseline and optimized CPU performance, and to compare CPU and GPU performance (Latency, Throughput, Memory Usage)
tensor.h/cpp
: Defines the Tensor class for data representationops_cpu.cpp
: CPU implementations of neural network operationsops_opencl.cpp
: GPU (OpenCL) implementations of neural network operationsfully_connected_layer.h/cpp
: Implementation of a fully connected neural network layergpu_operations.h/cpp
: Wrapper for OpenCL operationsbenchmark.h/cpp
: Benchmarking utilities
![image](https://private-user-images.githubusercontent.com/68761660/352935203-cf55ade3-527b-4ef0-a7b9-ec15f60696d2.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNTMwNDEsIm5iZiI6MTczOTA1Mjc0MSwicGF0aCI6Ii82ODc2MTY2MC8zNTI5MzUyMDMtY2Y1NWFkZTMtNTI3Yi00ZWYwLWE3YjktZWMxNWY2MDY5NmQyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDIyMTIyMVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTcxMTM3YTU0ZTQzOTYwZmIyN2FlNGUwNjFhOTI1YTdmZWU0NjdjNWM5ZGFmZmJiNmE0OGJhMGYxMjc4MGVmMTcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.pOTE8o5vjxncTOSsLu9em0TZS1jnunFdN8x9NYqMTFw)
![image](https://private-user-images.githubusercontent.com/68761660/352935450-4b66aeec-13e5-471c-9c5a-2e4b40d0fd60.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNTMwNDEsIm5iZiI6MTczOTA1Mjc0MSwicGF0aCI6Ii82ODc2MTY2MC8zNTI5MzU0NTAtNGI2NmFlZWMtMTNlNS00NzFjLTljNWEtMmU0YjQwZDBmZDYwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDIyMTIyMVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTNkZGRlYWRlMTNiZTY5YTQ5NGQ5Nzk4NDA5YjY5NWE2NTU4MWI1MGVkMmQ0Y2U2ZjBlZTJhMGU5ZTA4MmFjYjMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.64fIdlisrsqgPQmdHrp4bTFAN_J_cdEaDKVdJDZw6B8)