-
Notifications
You must be signed in to change notification settings - Fork 2
LLAMA - Automatic Memory Allocations
License
derrickgreenspan/LLAMA
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
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 0
No packages published