⚠️ Archived: This repository is read-only legacy research code and is not maintained. Built for historical CUDA toolchains.
🚀 Overview
hpmoonCUDA is a legacy research project implementing high-performance, multi-objective optimization for EEG (electroencephalogram) signal classification using NVIDIA CUDA. It explores parallel evolutionary strategies and performance-critical primitives to accelerate model evaluation and selection on GPUs.
🧠 What it does
- Multi-objective optimization for classification pipelines on EEG data
- GPU-accelerated evaluation and selection (CUDA, parallel primitives)
- Quality assessment via hypervolume (includes Fonseca's HV 1.3)
- Experiment tooling for initialization, crossover, tournament selection, and evaluation
📦 Tech stack
- C++ and CUDA (GPU kernels in
src/*.cu) - Vendor libraries/tools: CUB 1.5.2, helper utilities, HV 1.3 (Fonseca)
- Makefile-based build; designed for legacy CUDA toolchains
🗂️ Repository structure
src/: CUDA/C++ sources (main.cu,evaluation.cu,bd.cu,crossover.cu,sort.cu,tournament.cu, etc.)include/: public headers (algorithms, data structures,cub-1.5.2/)common/: helper utilities (CUDA/GL helpers, timers, images)hv-1.3-Fonseca/: hypervolume reference implementation and CLIcommon/data/and rootdata-*.txt: sample inputs and test datasetsdoc/: documentation and a sequential guide PDF
🛠️ Build (legacy)
This code targets legacy CUDA toolchains and may require older compilers/SDKs.
- Ensure you have a CUDA toolkit compatible with the codebase (circa CUDA 6–8).
- Build with the provided
Makefilefrom the project root:
makeOutputs are placed under bin/ and intermediates under obj/.
⚙️ Algorithms & components
- Initialization and individual representation (
initialization.cu,individual.cpp) - Genetic operators: crossover, tournament selection (
crossover.cu,tournament.cu) - Fitness/evaluation kernels for EEG classification (
evaluation.cu) - Sorting and selection (
sort.cu) - Hypervolume calculation (quality indicator) via
hv-1.3-Fonseca
📊 Data
The repository includes small example datasets (e.g., data-178x480.txt, data-178x4200.txt) and image assets under common/data/ used by helper utilities.
⚡ Performance notes
- Leverages GPU parallelism for population evaluation and reduction
- Uses CUB primitives and custom kernels to minimize memory traffic
- Emphasizes throughput over generality; parameters are tuned for historic GPUs
📚 References
- Fonseca, C. M., Paquete, L., & López-Ibáñez, M. (Hypervolume by Slicing Objectives).
- CUB: CUDA UnBound (NVIDIA parallel primitives).
📝 Status
This repository is archived for portfolio/educational purposes and is not maintained. Keeping it public to showcase GPU programming, parallel algorithms, and research engineering work.
👤 Author
Created as part of a final degree project focused on neuroengineering and high-performance multi-objective optimization using CUDA.