Skip to content

paulmetzger/Device-Hopping-Paper

Repository files navigation

Device-Hopping Paper 🦘

This repository contains the parallel_for library and source-to-source translator that was used in the paper "Device-Hopping: Transparent Mid-Kernel Runtime Switching for Heterogeneous Systems", Metzger P., Seeker V., Fensch C., Cole M., to be published in ACM TACO.

The build.sh script creates a directory for build files, generates migratable CUDA, OpenCL, and OpenMP code from the high-level benchmark implementations with our parallel_for, builds the benchmarks, and sets up IPC.

Caution:

  • The build script creates files in /dev/shm for IPC.
  • One some installation the message queue size has to be changed with echo 1048576 > /proc/sys/fs/mqueue/msgsize_max

Directory structure

Directory Description
benchmarks Contains the high_level benchmark implementations with our parallel_for in separate .cpp files. The source-to-source translator will place its outputs also in this directory. Generated files are prefixed with _generated or are stored in "opencl_files", which will be created by the script that translates the benchmarks.
daemon Source code of the daemon.
device_hopper Contains the header library. The applications generated by the source-to-source translator use the code in this directory.
source_to_source_translator Source code of the translator.
utils Utilities, that, among other things, set up IPC and generate inputs for Rodinia NN and SHOC SPMV.

Usage

The scripts run_benchmarks.sh and run_daemon.sh illustrate how to use the daemon with the SHOC FFT benchmark. First start the daemon with run_daemon.sh and then the benchmarks with run_benchmarks.sh. Monitor the output of run_daemon.sh. The outputs of the benchmarks will appear here because they are run by the daemon.

WARNING: run_daemon.sh kills all processes that start with "plasticd" and deletes and creates files in /dev/shm for IPC.

Dependencies

  • Boost libraries:
    • asio/ip/host_name
    • crc
    • program_options
    • special_functions/next.hpp
  • CUDA
  • Intel's C/C++ compiler (ICC).

To do

  • Create a script that automatically generates inputs for the benchmarks that load them from disk.

Contact: Paul Metzger, [email protected]

About

No description, website, or topics provided.

Resources

License

Unknown and 2 other licenses found

Licenses found

Unknown
LICENSE-CUDPP.txt
Unknown
LICENSE-Rodinia
Unknown
LICENSE-SHOC.txt

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published