MARTIN-LUTHER-UNIVERSITÄT HALLE-WITTENBERG | RESEARCH PROJECT |
Institut für Informatik | Deductive Databases |
Prof. Dr. Stefan Brass | Push Method |
Home Publications C++ Code Translator Abstract Machine Benchmark Results Links
Publication:
Source code, version from September 19, 2017:
This is the first prototype implementation of an abstract machine for bottom-up evaluation that I recently proposed. I have implemented just enough to be able to execute two benchmarks for a first performance test. Not all proposed machine instructions are implemented yet. Furthermore, the test programs are currently generated in main memory, the reading and writing of "BAM"-programs from/to files still has to be implemented. However, first performance tests are very encouraging: In the two tested benchmarks (TCFF and Join1) the slowdown compared to native machine code was only a factor of 1.5. This is better than the difference that was observed for Prolog code compiled to the WAM vs. native code. I certainly will condtinue the implementation task and also will do tests to check whether the many instructions for special cases are really important for the performance.
git clone git@gitlab.informatik.uni-halle.de:brass/bam.git
CMakeLists.txt
Running cmake
without parameters
prints the available generators.
For instance, to generate UNIX makefiles, run
cmake -G "Unix Makefiles" .
.
This assumes that the current directory .
is where the sources are stored.
CMake can also generate project files
for Microsoft Visual C++
and other IDEs.
make
on UNIX,
or use your IDE to build the project.
The compilation should at least work with
the GNU C++ compiler g++
and
Microsoft Visual Studio 2015, Express Edition.
If the compilation does not work,
please contact
brass@informatik.uni-halle.de.
I have tried to write portable code
and would be interested to hear about problems.
tc_*
.
doxygen
in the main directory.
The generated documentation will be stored
in the directory doc
.
One can start by opening
doc/html/index.html.
Currently, not all classes and methods are fully documented,
but the generated documentation should be useful.
The program has compiled in a number of tests
and benchmarks.
The test/benchmark can be selected with a command line argument.
A list of tests is printed if the program is called
with the option -l
.
The most important benchmarks are:
The program is called in the form
bam <Options> <Test/Benchmark IDs>
.
It understands the following options:
Note: The current version writes a file "alert" with error messages and object dumps (in debug mode). I will soon add an option to suppress this. For the time being, one needs write permission for the directory in which one executes bam because of this error log file (which is opened even if there are no errors).
Stefan Brass (brass@informatik.uni-halle.de), December 18, 2017
Original URL: http://www.informatik.uni-halle.de/~brass/push/bam.html [XHTML 1.0] [CSS] [Links] [Legal Info]