Skip to content

Latest commit

 

History

History
112 lines (83 loc) · 2.98 KB

README.md

File metadata and controls

112 lines (83 loc) · 2.98 KB

DAGEE (Directed Acyclic Graph Execution Engine)

Directed Acyclic Graph Execution Engine (DAGEE) is a C++ library that enables programmers to express computation and data movement, as tasks in a graph structure, where edges represent task dependencies. Computation can be HIP kernels on GPU and C++ functions on CPUs. DAGEE schedules tasks concurrently and asynchronously, at runtime, as soon as their dependencies are met, i.e., their preceding tasks finish execution. This is an emerging alternative to conventional GPU programming with HIP Streams that can lead to better performance due to improved concurrency, efficiency, and utilization of hardware resources. DAGEE builds on AMD Research’s ATMI library, and uses it for low-level scheduling and hardware management.

Prerequisites

  1. ROCm compatible hardware. See ROCm Release Page
  2. ROCm version 3.5 or newer. DAGEE will no longer work with ROCm versions older than 3.5
  3. Make sure following packages are installed (in addition to a basic ROCm installation). All these are available from ROCm DEB or RPM repos:

atmi comgr hip-base hsa-ext-rocr-dev hsa-rocr-dev hsakmt-roct hsakmt-roct-dev rocm-cmake rocm-dev rocm-device-libs

  1. Optional packages

rocminfo rocprofiler-dev hsa-amd-aqlprofile rocm-smi rocm-utils

Building & Running

Building

DAGEE builds on top of ATMI. We recommend cloning the ATMI source repo instead of installing atmi deb/rpm package to get the latest updates.

Clone ATMI:

git clone https://github.com/RadeonOpenCompute/atmi

Clone this repository:

$ git clone <path-to-dagee>

Create a build directory:

$ mkdir build 
cd build

Run CMake:

$ CXX=/opt/rocm/bin/hipcc cmake -DATMI_SRC=<absolute-path-to-atmi-repo-dir> ..

Now you can compile the benchmarks

$ make -j

To run the benchmarks:

ctest

Or, individually ,e.g.:

  ./examples/kiteDagCpu
  ./examples/kiteDagGpu

Source Tree Organization

  • DAGEE-lib : the source code for DAGEE library
  • examples : some simple example code showing how DAGEE can be used
  • cppUtils : helper C++ classes and functions
  • tools : various scripts
  • cmakeUtils : cmake utility functions and scripts
  • doc : Source code for doxygen documentation

Using DAGEE with your project

  • Add DAGEE-lib/include and cppUtils/include to the compiler's include path
  • Add ATMI_ROOT/include to the compiler's include path
  • Link the executable with ATMI_BUILD/lib/libatmi_runtime.so

Documentation

We use Doxygen. Run make doc in the build directory to generate API documentation and a basic tutorial for DAGEE in <dagee-build-dir>/html.

Support

This is a research project undergoing development. Please open a Github issue if you encounter a bug or a problem.