Cruft
Background
Link | Code | Version | Machine | Date |
---|---|---|---|---|
LLNL website | git repo | Kyle Spafford fork | Keeneland | March 2012 |
Building Cruft
Modify the CmakeLists.txt and add these lines:
set (CMAKE_CXX_COMPILER tau_cxx.sh) set (CMAKE_C_COMPILER tau_cc.sh)
Then issue
cmake .
You can safety proceed when you encounter reversions.
Selective instrumentation of Loops:
BEGIN_INSTRUMENT_SECTION loops file="eam.c" routine="eamForce#" loops file="ljForce.c" routine="LJ#" END_INSTRUMENT_SECTION
For the Opencl code edit src-ocl/eam_kernels.c to move this section about the typedef CL_REAL_T real_t;
#if defined(cl_khr_fp64) // Khronos extension available? #pragma OPENCL EXTENSION cl_khr_fp64 : enable #elif defined(cl_amd_fp64) // AMD extension available? #pragma OPENCL EXTENSION cl_amd_fp64 : enable #endif
Then set:
export TAU_OPTIONS="-optVerbose -optTauSelectFile=`pwd`/select.tau" export TAU_MAKEFILE=<path to TAU>/x86_64/lib/Makefile.tau-icpc-pdt make
Running Cruft
./cruft -p ag -e -f data/8k.inp.gz
or
./cruft -f data/8k.inp.gz
And for OpenCL accelerated version:
tau_exec -T serial -opencl ./cruftOCL -p ag -e -f data/8k.inp.gz
tau_exec -T serial -opencl ./cruftOCL -f data/8k.inp.gz
Performance Data
EAM method:
LJ method: