Skip to content

Legacy, archived research codebase implementing GPU-accelerated multi-objective optimization for EEG classification (CUDA + CUB + HV). Not maintained.

License

Notifications You must be signed in to change notification settings

Loadge/hpmoonCUDA

Repository files navigation

hpmoonCUDA

status maintenance cuda

⚠️ 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 CLI
  • common/data/ and root data-*.txt: sample inputs and test datasets
  • doc/: documentation and a sequential guide PDF

🛠️ Build (legacy)

This code targets legacy CUDA toolchains and may require older compilers/SDKs.

  1. Ensure you have a CUDA toolkit compatible with the codebase (circa CUDA 6–8).
  2. Build with the provided Makefile from the project root:
make

Outputs 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.

About

Legacy, archived research codebase implementing GPU-accelerated multi-objective optimization for EEG classification (CUDA + CUB + HV). Not maintained.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published