Menu

Tree [r19] /
 History

HTTPS access


File Date Author Commit
 darts 2021-06-07 mprocaccini [r19] makefile and simloop update. Added script for p...
 logs 2021-06-07 mprocaccini [r19] makefile and simloop update. Added script for p...
 ocr 2021-06-07 mprocaccini [r18] OCR and DARTS added
 AUTHORS 2013-09-19 robgiorgi [r1] First version released
 ChangeLog 2013-09-19 robgiorgi [r1] First version released
 LICENSE 2013-10-16 robgiorgi [r4] changing license style from GPLv3 to MIT
 Makefile 2021-06-07 mprocaccini [r18] OCR and DARTS added
 README.md 2021-06-07 mprocaccini [r18] OCR and DARTS added
 drt.h 2021-06-07 mprocaccini [r18] OCR and DARTS added
 fib-tsu4.c 2021-06-07 mprocaccini [r18] OCR and DARTS added
 mmul2d.c 2020-12-05 robgiorgi [r8] Updating names to drt.h
 run_fib.sh 2021-06-07 mprocaccini [r19] makefile and simloop update. Added script for p...
 run_perf_comparison.sh 2021-06-07 mprocaccini [r19] makefile and simloop update. Added script for p...
 simloop.sh 2021-06-07 mprocaccini [r19] makefile and simloop update. Added script for p...
 sl4a.c 2021-06-07 mprocaccini [r13] README update, Makefile improved
 tregression.sh 2021-06-07 mprocaccini [r13] README update, Makefile improved

Read Me

DRT: A Lightweight Runtime for Developing Benchmarks for a Dataflow Execution Model

This software aims at demonstrating that we can easily provide
a very small and powerful runtime for running programs that are
coded in whatever programming model, but that could
be executed in a DATAFLOW style.

The first benefit of this software is to allow a rapid development
of such programs in the context of the TERAFLUX project http://teraflux.eu

The runtime API has been designed in such a way to allow for a future
development of a good compiler that targets such interface on one side,
and to allow for good architectural support of such API too:
ideally, each function could map to a Thread-Level-Parallelism
Instruction Set Extension (TLP ISE).

HOW TO LEARN MORE

BENCHMARKS

Benchmark File Description
Recursive Fibonacci (RFIB) fib-tsu4.c Recursively compute a Fibonacci number.
The recursion stops when the threshold is reached.
The benchmark aims at generating a high number of
threads easily for stressing the threads managment.

| Blocked Matrix-Multiplication (BMM) | mmul2d.c | Blocked Matrix Multiplication (BMM) as
it is a very commonly used kernel in many applications
(especially in Artificial Intelligence, Deep Neural Networks, etc.),
and it moves much data around. |

QUICKSTART GUIDE

  • There are some examples to start with:
    Recursive-Fibonacci (fib-tsu4.c), Matrix-Multiply (mmul2d.c), Simple-List (sl4a.c).

  • To check that everything works, just issue the ./tregression.sh script: it should print OK for each correctly compiled program and for each correctly tested program (the first time you launch it the reference outputs will be generated, the second time the outputs are compared, so you can modify the C examples)

That's it !

COMPILE AND RUN

The compilation procedure is straightforward, just use the following commands:

make run_{benchmark_name}

For example, to compile and run RFIB example:

make run_fib-tsu4
Enter the Fibonacci number to compute
Enter the threshold of the recursion.

ENVIROMENT VARIABLES

  • Some environment variables can show more details about the "Dataflow mode" of executing programs.

export DRT_DEBUG=1
to see more detailed information (values of 2, 3, 4, ... increase the verbosity level).

export DRT_FSIZE=10000
to set the size of internal frame queues (similar to a "stack size")

  • An example:

DRT_DEBUG=2 DRT_FSIZE=1000 ./fib-tsu4 5 3

PERFORMANCE COMPARISON

For comparing the performance of DRT against OCR and DARTS by using the
Recursive Fibonacci benchmark just execute the script:

$  ./run_perf_comparison.sh

OR

$ make run_perf

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.