Skip to content

derrickgreenspan/LLAMA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Author: Derrick Greenspan and the University of Central Florida
Email: Derrick.Greenspan(at)ucf.edu

https://github.com/derrickgreenspan/LLAMA/raw/master/llama.pdf

How to build:
	Prerequisites:
	The LLVM pass is built with clang 4.0 and gcc 7.1.0
	Also note that LLVM has a habit of breaking backwards compatibility -- later or older versions of clang most likely will not work
	If you run into any problems, make sure you are using these exact versions of clang and gcc.
	A precompiled version of the pass is available under build/libllamapass.so
	Several precompiled versions of the library with thresholds already set are available in library/ 

	To build the llvm pass, simply do the following:
		1. Go to the llvm directory
		2. Run ./build.sh 
	To build the library, simply do the following:
		1. Go to the library directory
		2. Run make
		3. Run cp build/llama.a .  

	To build the benchmarks, simply do the following:
		For the two simple benchmarks (Matrix Multiplication and Memory Allocator), run ./build in their folders.
		For the DoD benchmarks (XSBench and SimpleMOC), cd to their source directories and type "make". The Makefile available here has been modified to build with the LLVM pass and library.


How to run and reproduce results: 
	Note: The ariel element requires Intel PIN 2.14, which is incompatible with newer kernels. If, in running the benchmarks,
	it crashes, try adding the "-ifeellucky" flag to the SST script.
	Also note that the "-ifeellucky" flag may not save you in some cases -- both XSBench and SimpleMOC-Kernel raised signal 11 
	when the flag was thrown, but did not segfault on a system with the proper earlier kernel.


	For each executable you want to run, run: sst DUAL_NVM.py executable

	Note that some benchmarks might take more than an hour to complete. 



Abstract: 
There is an expectation among experts that the memory hierarchy
will be expanded to provide support for multi-level memory,
enabling the use of new memory technologies living side-by-side
with traditional DRAM. In doing so, the advantages of traditional
DRAM can be retained alongside the advantages of these new memory
technologies. However, in order to be effective, memory must be 
allocated to different memory levels, either manually by the programmer,
or automatically.

This paper introduces a novel process which combines a custom
LLVM Pass with a custom C library to automatically handle
memory allocations performed by function calls without the need
for programmer input or hardware/OS level changes. When utilizing
a simulated multi-level memory architecture with dual non-
volatile RAM and volatile DRAM, the results demonstrate that such
a program can alleviate the burden on the programmer while still
maintaining the performance advantages of DRAM and the higher
density of non-volatile memory technology.

About

LLAMA - Automatic Memory Allocations

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published