GithubHelp home page GithubHelp logo

f4z3r / dphpc-project Goto Github PK

View Code? Open in Web Editor NEW

This project forked from matthaeusheer/dphpc-project

0.0 0.0 0.0 26.46 MB

Group work for the Design of Parallel and High Performance Computing course 2017

Python 53.08% CMake 1.49% C++ 45.06% Makefile 0.23% C 0.15%

dphpc-project's Introduction

dphpc-project

The goal of this project was to implement various parllel 2D convex hull solver algorithms and perform benchmark tests among themselfs. For further information, check the Report/report pdf.

How-To

  1. cd <project_root_folder>
  2. Do mkdir build, compile using cmake and put the executable named dphpc_project into the build folder
  3. Make sure your desired input image (.png or .jpg) is placed in the Input folder (used for point generation). A default "sample_image.png" is provided from the repo.
  4. Set the desired parameters in run_config.py in the Project root folder folder.
    Important: the exe_dir_name has to match the folder name where you placed your dphpc_project executable!
  5. Start the runs by running dphpcpython/scripts/grid_run_exe.py from your project root folder, you might specify a different run config
  6. Run benchmark_postprocessing.py in dphpcpython/scripts/ folder to create runtime and speedup plots.

Parameters

  • run_name: the run will appear in the Output folder as <run_name>_mmhh_ssssss
  • exe_dir_name: the name of the folder containing the dphpc_project executable file
  • save_png_input: whether to save the created input points as an img to look at
  • n_cores: specify on what numbers of cores to run as a list, e.g. [1, 2, 4] runs all configurations on 1, 2 and 4 cores
  • n_points: specify number of input points as a list, e.g. [5000, 10000, 100000]
  • img_files: specify the name of images you want to run on as a list, files have to be in Input folder
  • algorithms: specify names of algorithms to run, note all possible algorithms are given at the bottom
  • sub_size: specify sub sizes on which you want to run the algorithms
  • use_sub_sizes: whether you want to use this feature or not
  • n_iterations: number of times to repeat a given configuration to gain statistics information

Output

The output folder in Output/<run_name>_mmhh_ssssss will contain

  • input_data folder: holds the input images and data files for created input points
  • sub_<run_id> folders: for every run configuration one sub folder holding hull points data, json param file and timing file
  • a all_params.json file holding all configurations
  • a config.json file holding the run config in json format

Input Creation

In case you just want to create input data files from images without doing full parameter grid runs:
From the dphpcpython/scripts/ directory, run the create_points_from_img.py (specify parameters at top section of file) to create point distributions using images. The input image specified has to be located in the Input folder (.png or .jpg is fine)!
The Input data will be stored in a .dat file in the Input folder.

Visualization

Run animation_wrapper.py script in the dphpcpython/scripts/ folder. First specify the desired parameters at the top section of the script. However, there is some tweeking needed, it might not work since some output files might not have been written :), sorry...

dphpc-project's People

Contributors

polly95 avatar pollymath 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.