Git Product home page Git Product logo

farukulutas / cs426-parallel-computing Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 2.12 MB

A comprehensive collection of projects developed for the CS426 - Parallel Computing course at Bilkent University. This repository showcases implementations of various parallel computing techniques and algorithms, highlighting the use of MPI, OMP, CUDA and GPU programming.

C 50.93% Makefile 2.08% C++ 13.81% Shell 0.04% Cuda 31.77% Python 1.37%
algorithms bilkent-university computer-science cuda gpu-programming parallel-computing cs426 educational-projects

cs426-parallel-computing's Introduction

Bilkent CS426 Parallel Computing Projects

Welcome to the repository for the CS426 - Parallel Computing course at Bilkent University. This repository contains four detailed projects that illustrate the application of parallel computing techniques, particularly focusing on CUDA and GPU programming.

Projects Overview

  1. Project 1 - 55 / 100: Implementation of a single layer in a fully connected neural network. Students are required to write both a serial and a parallel program that processes two matrices and a vector of float values stored in ASCII text files. The main task is to calculate the output using a sigmoid function after matrix multiplication and bias addition. This project aims to demonstrate the efficiency of parallel computing in handling neural network computations, comparing the performance of serial and parallel implementations.
  2. Project 2 - 40 / 100: Implementation of the Quicksort algorithm in both serial and parallel versions. The project starts with a serial implementation of Quicksort, requiring students to sort a sequence of integers provided in a text file. The parallel part of the project involves using MPI to implement Quicksort on a hypercube topology, emphasizing efficient parallel sorting and load balancing among processors. This project aims to teach students about parallelizing traditional algorithms like Quicksort and understanding the complexities involved in distributed computing environments.
  3. Project 3 - 95 / 100: Implementation of a Convolutional Neural Network (CNN). Initially, students are tasked with developing a serial code version, followed by a parallel implementation using OpenMP. The project revolves around reading data from text files and performing operations like convolution, zero-padding, max-pooling, and applying a sigmoid activation function. The emphasis is on understanding the structure and functionality of CNNs, while also learning to optimize the code for parallel performance using OpenMP and profiling tools. This project is instrumental in teaching the application of parallel computing techniques in the field of deep learning and image processing.
  4. Project 4 - 90 / 100: Implementation of a basic k-mer search program in both serial and parallel versions, using CUDA for GPU programming. This project involves handling substrings of a given length (k-mers) within a reference string and multiple read strings, with an emphasis on performance optimization and algorithm efficiency.

Technologies and Techniques

  • CUDA: Utilized for parallel computing on NVIDIA GPUs.
  • GPU Programming: Leveraging the power of GPUs for handling intensive computational tasks.
  • Parallel Algorithms: Implementation of efficient algorithms suitable for parallel computation.
  • MPI (Message Passing Interface): Used for programming parallel computers. A key technology in Project 2 for implementing parallel Quicksort on a hypercube topology.
  • OpenMP (Open Multi-Processing): An application programming interface (API) that supports multi-platform shared-memory multiprocessing programming, crucial in Project 3 for parallelizing CNN layers.

Getting Started

Please refer to individual project directories for specific instructions on compiling and running each project.


Bilkent University | CS426 - Parallel Computing

cs426-parallel-computing's People

Contributors

farukulutas avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.