Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

1D Convolution Optimizations

A high-performance computing project implementing and optimizing various CUDA-based 1D convolution algorithms. This repository explores different optimization techniques and compares their performance on HPC systems.

Overview

This project implements multiple approaches to 1D convolution using CUDA, focusing on performance optimization through:

  • Basic CUDA implementation - Baseline GPU implementation
  • Shared memory optimization - Leveraging fast on-chip memory
  • cuBLAS integration - Using optimized linear algebra libraries
  • Performance benchmarking - Comprehensive speed comparisons

Features

  • 🚀 Multiple CUDA kernel implementations
  • 📊 Comprehensive performance benchmarking
  • 🔧 Modular design for easy algorithm comparison
  • 🎯 Optimized for HPC environments
  • ✅ Reference validation against CPU implementation

Project Structure

├── fp/                     # Main convolution implementations
│   ├── basic_conv1d.cu     # Basic CUDA kernel
│   ├── conv1d_cublas.cu    # cuBLAS-optimized version
│   ├── conv1d_sharedMemory.cu # Shared memory optimization
│   ├── conv1d-main.cc      # Main benchmark harness
│   └── reference_validation.py # Python validation script
├── common/                 # Shared utilities and benchmarking tools
└── cmake/                  # CMake configuration files

Prerequisites

  • CUDA Toolkit (11.0+)
  • CMake (3.18+)
  • C++ compiler with C++17 support (GCC 7+ or Clang 5+)
  • cuBLAS library
  • Python 3 (for validation scripts)

Building

  1. Clone the repository:
git clone <repository-url>
cd 1D-convolution-optimizations
  1. Configure the build system:
cmake .
  1. Build the project:
make

Usage

Navigate to the fp/ directory and run the main benchmark:

cd fp
./conv1d-main

This will execute all implemented convolution algorithms and provide performance comparisons.

Performance Results

The benchmark suite measures and compares:

  • Execution time across different input sizes
  • Memory bandwidth utilization
  • Speedup factors relative to baseline implementations
  • Scalability on multi-GPU systems

Contributing

Feel free to submit issues and enhancement requests. Contributions are welcome!

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages