Giter Site home page Giter Site logo

inf560_parallel_project's Introduction

INF560-parallel-algorithm

Description

In this project, we are targetted at implementing some paralleing algorithms (i.e., OPENMP, MPI, CUDA...) to achieve higher performance in a pattern matching problem in course INF560 Algorithmique parallèle et distribuée.

We merge all our algorithms together with a decision tree. Finally can achieve a performance increase of around 100.

The contributors of this project are Changjie Wang and Chinonso Stanislaus Ngwu

This project is guided by professor Patrick CARRIBAULT

Click here for our paper

File architecture

  • apm/dna contains the dna database we use for matching

  • apm/src contains all the algorithm we implemented. Inside we have

    • mpi directory with all the pure mpi implementation

      • mpi/apm.c is the sequential version
      • mpi/cj_apm_mpi_static.c is the static decomposition
      • mpi/cj_mpi_d.c is the dynamic distribution over file, with pattern together
      • mpi/scan_mpi.c is the dynamic distribution over file, with pattern one by one
      • mpi/scan_mpi_dd.c is the dynamic pattern distribution
      • Makefile to compile the c file into object file to execute
    • openmp directory with all the OpenMP implementation of mpi mentioned before

      • openmp/apm.c is the sequential version

      • openmp/cj_apm_mpi_static.c is the static decomposition with OpenMP over chunks

      • openmp/cj_apm_mpi_static.c is the static decomposition with OpenMP over patterns

      • openmp/cj_apm_mpi_d.c is the dynamic distribution over file with pattern together with OpenMP over chunks

      • openmp/scan.c is the dynamic distribution over file, with pattern one by one, with OpenMP over chunks

      • mpi/scan_mpi_dd.c is the dynamic pattern distributions with OpenMP over chunks

      • Makefile to compile the c file into object file to execute

    • cuda directory gives implementation of cuda

      • cuda/apm.c is the sequential version
      • cuda/cuda_omp_static.cu is the cuda file giving some necessary functions for to run on the cuda devide.
      • cuda/static_decomposition.c is the cuda implementation over static decomposition, with 90% balance between cuda and OpenMP
    • app directory gives the final version of our app merging all the algorithms together, where we provide 12 different decisions finally

      • app/app.c is the final version of our app
      • app/app2.c is the one for test in simulation situation where GPU is ignored
      • app/cuda_omp_static.cu gives the necessary functions to call for a GPU device
      • app/kernel.h gives the header file for cuda_omp_static.cu
      • app/Makefile gives commands to compile
      • app/test.batch gives test batch for decision 1- 4
      • app/test2.batch gives test batch for decision 5-6
      • app/test3.batch gives test batch for decision 7-8
      • app/test4.batch gives test batch for decision 9-12

How to run

  • Enter app directory

    apm/src/app
    
  • Compile

    make
    
  • Run batch file

    sbatch test.batch
    sbatch test2.batch
    sbatch test3.batch
    sbatch test4.batch
    

inf560_parallel_project's People

Contributors

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