Skip to content
/ Dwarf Public

Dwarf is a Domain Specific Language for Representative-Based Clustering Algorithms.

License

Notifications You must be signed in to change notification settings

ADAPTLab/Dwarf

Repository files navigation

Dwarf

Dwarf is a Domain Specific Language for Representative-Based Clustering Algorithms. Its Parallelizing Compiler takes the sequential Dwarf code and produces either Distributed-memory MPI C++ code or Hybrid-memory (MPI and OpenMP) C++ Code.

Usage

sh dwarf.sh <dwarf file name>.dw
  1. Compiles Dwarf Source code to generate C++ code as per Dwarf Compiler Flags
  2. Compiles C++ Code to generate executables
    • master
    • slave
  3. Execute the executables using one of make targets
    • localserial : Sequential Execution on the local machine
    • localpar p=4 : Distributed-memory Execution by 4 processes on the local machine
    • localhybrid p=4 t=2 : Hybrid-memory Execution by 4 processes and 2 threads on the local machine
    • serial : Sequential Execution on the given host machine
    • mpircluster p=4 : Distributed-memory Execution by 4 processes on the cluster (assumes a hostlist for MPI)
    • hybridrcluster p=4 t=2 : Hybrid-memory Execution by 4 processes and 2 threads on the cluster (assumes a hostlist for MPI)

Dependencies

Generated CPP Code

Compiler generates code in cppsrc directory. It already has a few codes.

Platform\Algorithm K-means Algorithm EM Algorithm
Serial C++ Code KDSeq EDSeq
Distributed-memory Parallel MPI C++ Code KDDis EDDis
Hybrid-memory Parallel MPI OpenMP C++ Code KDHyb EDHyb

Benchmark Codes

Comparison of various manual parallel implementations of Representative-based Clustering Algorithms with Dwarf Compiler generated automatically parallelized codes.

Sample Test Codes

About

Dwarf is a Domain Specific Language for Representative-Based Clustering Algorithms.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages