HPC Benchmarker [2019]

Concept

An easy to use web application for running common C/C++ and Cuda algorithms (currently two supported) on UIC ACER servers in the form of a benchmark test. The C/C++ and Cuda results can then be compared against one another in a visually meaningful way.

This project was done as a research project during my Summer 2019 internship for ACER@UIC. It was found that for parallelizable tasks, Cuda accelerated code is exponentially more efficient than traditional computations completed on the main processor.

Features

As described above, this project was designed to allow any authorized user to easily live run and see the performance differences between C/C++ (CPU) and Cuda (GPU) code. In order to accomplish this, the following features were implemented:

    • Browser support for ease of use and operating system independence (requires project to be hosted first)

    • SSH support to gain access to UIC servers (for security purposes, only manually authorized users can login)

    • Basic two factor authentication support via Duo Mobile push notifications (for increases security purposes)

    • Footer links for quick help dialog boxes

    • Automated shell scripts to load, compile, run, and fetch the output of each benchmark on the back-end

    • One button to run a single benchmark and display its results to the user on the front-end

    • Benchmarks customizable with different parameters for different results

    • Benchmark results saved so that previous runs still show

    • One button to view the graphical results of each benchmark (with data points that can be hovered for information on that specific run)

Click here for a more complete set of documentation

Release

The source code can be viewed on GitHub.

Specifications

  • Java for application logic

  • JavaFX for graphical user interface

  • JSch for SSH and 2FA support

  • JPro for browser support

  • Maven for browser deployment

  • C++ for the benchmarks run on the processor

  • Cuda for the benchmarks run on the graphics processor