Giter Site home page Giter Site logo

socal-ucr / dagee Goto Github PK

View Code? Open in Web Editor NEW

This project forked from amdresearch/dagee

0.0 2.0 0.0 317 KB

Directed Acyclic Graph Execution Engine (DAGEE) is a C++ library that enables programmers to express computation and data movement, as task graphs that are scheduled concurrently and asynchronously on both CPUs and GPUs.

License: MIT License

CMake 3.41% C++ 82.53% C 0.55% Shell 2.00% Python 11.51%

dagee's Introduction

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.

dagee's People

Contributors

amberhassaan avatar ashwinma avatar

Watchers

James Cloos avatar  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.