Skip to content

joshdelon03-hash/PyCL-GPU

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyCL-GPU: A GPGPU Framework for Python

PyCL-GPU is a streamlined, Python-based framework for General-Purpose computing on Graphics Processing Units (GPGPU). It abstracts away the boilerplate of PyOpenCL, providing a clean, modular API for numerical and image processing tasks.

Key Features

  • Clean API: Manage GPU contexts, buffers, and kernels with minimal code.
  • AMP Integrated: Built-in support for the Adaptive Multiprocessing Pool (AMP) to orchestrate parallel GPU tasks across multiple CPU cores.
  • Cross-Platform: Works with any OpenCL-compliant hardware (NVIDIA, AMD, Intel).

Project Structure

  • framework/: The core library (Context, Buffer, Program, Task management).
  • kernels/: OpenCL C kernel source files (e.g., core.cl).
  • main_simple.py: A basic vector addition example.
  • main.py: An advanced "ensemble" example using multiprocessing (AMP).

Installation

  1. Install core dependencies:
    pip install -r requirements.txt
  2. Install the amp library (included in this repository's ecosystem):
    cd ../amp_library
    pip install -e .

Quick Start

Simple Task

from framework.task import ParallelTask
task = ParallelTask(kernel_code)
task.execute(global_size=(N,), kernel_args=[a_gpu, b_gpu, c_gpu])

Multiprocessing Ensemble

from framework.task import MultiParallelTask
ensemble = MultiParallelTask(kernel_code)
ensemble.run_async(global_size=(N, N), kernel_args=[A, B, C, N])
ensemble.wait_all()

License

MIT License.

About

This project is a simple, Python-based framework for General-Purpose computing on Graphics Processing Units (GPGPU) that uses OpenCL as its backend. It is inspired by the modular architecture described in the "Parallel Data Mining on Graphics Processors" paper (GPUMiner).

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors