Skip to content

pr0mak/Systems-Programming-and-Hardware

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Systems Programming & Hardware

Language Platform Technologies

The projects were developed as part of university coursework and personal experimentation. The repository contains implementations using CUDA, OpenCL, OpenMP, POSIX Threads, and VHDL, focusing on workload distribution, synchronization, multithreaded systems, and basic hardware architecture.

The projects were developed as part of university coursework and personal experimentation to better understand performance, scalability, synchronization mechanisms, and hardware-oriented programming.


Repository Structure

Systems-Programming-Hardware/

  • Parallel-Programming/

    • Workload-Distribution-using-CUDA-OpenCL/ ──► GPU Computing
    • Workload-Distribution-using-OpenMP/ ──► Shared-Memory Parallelism
    • Workload-Distribution-using-pthreads/ ──► POSIX Threads
    • multithread-pizza-store-simulation/ ──► Concurrent Systems Simulation
  • VHDL/

    • 16-bit-ALU/ ──► Introductory Digital Hardware Design

Parallel Programming

CUDA & OpenCL

Different implementations of the same numerical integration problem were developed using CUDA and OpenCL to compare workload distribution strategies across heterogeneous hardware.

Experiments include:

  • Barrier synchronization
  • Thread-per-block configuration
  • Workload distribution
  • GPU memory models (Global vs Shared/Local Memory)
  • Analytic results are included in the pdf report

OpenMP

Numerical integration implementations using OpenMP with different parallelization techniques:

  • Loop parallelization
  • Reduction operations
  • Task-based recursion
  • Dynamic scheduling strategies
  • Analytic results are included in the pdf report

POSIX Threads (pthreads)

Manual multithreaded implementations focusing on synchronization and workload balancing.

Topics explored:

  • Thread creation and synchronization
  • Mutex-based locking
  • Lock-free execution
  • Dynamic job queues
  • Alternative work distribution strategies
  • Analytic results are included in the pdf report

Multi-threaded Pizza Store Simulation

A producer-consumer simulation of a pizza delivery system implemented with POSIX Threads.

Features include:

  • Multiple concurrent worker threads
  • Mutexes and Condition Variables
  • Shared resource synchronization
  • Order processing pipeline

VHDL

Introductory Hardware Design (VHDL)

A simple VHDL project implementing a modular 16-bit Arithmetic Logic Unit (ALU). The design includes a Full Adder, a reusable 1-bit ALU slice, opcode-based control logic, and a scalable 16-bit ALU built using structural design principles.

Components

  • Full Adder
  • 1-bit ALU Slice
  • 16-bit ALU
  • Opcode Control Unit

Roadmap: Additional VHDL projects covering topics from my Computer Architecture coursework will be added when i finish the course

Toolchain

CUDA / OpenCL

  • NVIDIA CUDA Toolkit (11+)
  • OpenCL 2.0 compatible runtime

CPU

  • GCC (9+)
  • OpenMP
  • POSIX Threads

Hardware Design

  • Quartus Prime / ModelSim (or any VHDL-compatible simulator)

About

Systems programming and hardware projects featuring CUDA, OpenCL, OpenMP, POSIX threads, VHDL, and a multi-threaded asynchronous pipeline simulation.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C 51.9%
  • C++ 21.8%
  • Cuda 19.0%
  • VHDL 7.3%