Difference between revisions of "SHOC"

From Tau Wiki
Jump to: navigation, search
(Performance Data)
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
[Category:Applications]
+
[[Category:Applications]]
[Category:Showcase]
+
[[Category:Showcase]]
  
 
== Background ==
 
== Background ==
Line 9: Line 9:
 
!Code
 
!Code
 
!Version
 
!Version
 +
!Machine
 
!Date
 
!Date
 
|-
 
|-
Line 14: Line 15:
 
|[http://ft.ornl.gov/doku/_media/shoc/shoc-1.1.2.tar.gz Download]
 
|[http://ft.ornl.gov/doku/_media/shoc/shoc-1.1.2.tar.gz Download]
 
|1.0.1
 
|1.0.1
 +
|Keeneland
 
|December 2011
 
|December 2011
 
|}
 
|}
Line 20: Line 22:
  
 
== Building SHOC ==
 
== Building SHOC ==
 
  
 
=== Setting up environment ===
 
=== Setting up environment ===
Line 99: Line 100:
 
Some example performance data from S3D:
 
Some example performance data from S3D:
  
[[Image:S3D-profile.png]]
+
[[Image:S3D-profile.png|750px]]
  
[[Image:S3D-cuda.png]]  
+
[[Image:S3D-cuda.png|750px]]  
  
 
[[Image:S3D-cuda.ppk]] and [[Image:S3D-cuda.slog2]]
 
[[Image:S3D-cuda.ppk]] and [[Image:S3D-cuda.slog2]]

Latest revision as of 17:08, 28 February 2012


Background

Link Code Version Machine Date
ORNL website Download 1.0.1 Keeneland December 2011

SHOC instrumented with TAU shows a lot of features of TAU's GPU measurement system. The Keeneland cluster was chosen to run these experiments.

Building SHOC

Setting up environment

setup your environment this way:

   module load tau/2.21
   export TAU_MAKEFILE=$TAUROOT/lib/Makefile.tau-cupti-pdt

Compiling SHOC 1.0.1 with TAU

After configuring SHOC edit the config/common.mk to:


   # === Basics ===
   CC       = tau_cc.sh
   CXX      = tau_cxx.sh
   LD       = tau_cxx.sh
   AR       = /usr/bin/ar
   RANLIB   = ranlib
  
   CPPFLAGS += -I$(SHOC_ROOT)/src/common -I${SHOC_ROOT}/config
   CFLAGS   += -m64 -g -O2
   CXXFLAGS += -m64 -g -O2
   ARFLAGS  = rcv
   LDFLAGS  =
   LIBS     = -L$(SHOC_ROOT)/lib  -lrt -L/sw/keeneland/cuda/3.2RC/lib64/ -lcudart
  
   USE_MPI         = no
  
   OCL_CPPFLAGS    += -I${SHOC_ROOT}/src/opencl/common
   OCL_LIBS        =
  
   NVCC            = /sw/keeneland/cuda/3.2/bin/nvcc
   CUDA_CXX        = tau_cxx.sh
   CUDA_INC        = -I/sw/keeneland/cuda/3.2/include
   CUDA_CPPFLAGS   += -gencode=arch=compute_10,code=sm_10 \
   -gencode=arch=compute_11,code=sm_11  -gencode=arch=compute_13,code=sm_13 \
   -gencode=arch=compute_20,code=sm_20  -gencode=arch=compute_20,code=compute_20 \
   -I${SHOC_ROOT}/src/cuda/include $(TAU_LIBS)
  

Then make/install as you normally would.

More info at: TAU's userguide

Running CUDA applications

Both CUDA and OpenCL are instrumented dynamically through library preloading, use the tau_exec script to run the CUDA application:

   %> tau_exec -T serial -cuda ./Stencil2D

The -T serial specifies with TAU configuration to use, you can change this for MPI applications and run:

   %> mpirun -np 4 tau_exec -T mpi -cuda ./SGEMM

This could be done with executables build with or without TAU.

Traces

Traces can be recorded by first setting:

   %> export TAU_TRACE=1
   %> tau_exec -T serial -cuda ./Stencil2D
   %> tau_multimerge
   %> tau2slog2 tau.trc tau.ed -o stencil2d.slog2
   %> jumpshot

Running OpenCL applications

Use tau_exec as well:

   %> tau_exec -T serial -opencl ./SGEMM 


Performance Data

Some example performance data from S3D:

S3D-profile.png

S3D-cuda.png

File:S3D-cuda.ppk and File:S3D-cuda.slog2