Updating Kokkos lib

git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@15556 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
stamoor
2016-09-06 23:06:32 +00:00
parent 1ad033ec0c
commit 39be4185c4
502 changed files with 157510 additions and 0 deletions

127
lib/kokkos/doc/Doxyfile Normal file
View File

@ -0,0 +1,127 @@
#
# Include the global look and feel options
#
@INCLUDE = ../../common/Doxyfile
#
# Package options
#
PROJECT_NAME = "Kokkos Core Kernels Package"
PROJECT_NUMBER = "Version of the Day"
OUTPUT_DIRECTORY = .
OUTPUT_LANGUAGE = English
EXTRACT_ALL = NO
EXTRACT_PRIVATE = NO
EXTRACT_STATIC = YES
HIDE_UNDOC_MEMBERS = YES
HIDE_UNDOC_CLASSES = YES
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ALWAYS_DETAILED_SEC = YES
FULL_PATH_NAMES = NO
STRIP_FROM_PATH =
INTERNAL_DOCS = NO
CLASS_DIAGRAMS = YES
SOURCE_BROWSER = YES
INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = NO
REFERENCES_RELATION = NO
CASE_SENSE_NAMES = YES
HIDE_SCOPE_NAMES = NO
VERBATIM_HEADERS = YES
SHOW_INCLUDE_FILES = YES
#JAVADOC_AUTOBRIEF = YES
INHERIT_DOCS = YES
INLINE_INHERITED_MEMB = YES
INLINE_INFO = YES
SORT_MEMBER_DOCS = NO
TAB_SIZE = 2
ENABLED_SECTIONS =
SORT_BRIEF_DOCS = NO
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
QUIET = NO
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_FORMAT = "$file:$line: $text"
#
# INPUT: Where to find files that Doxygen should process. ../classic
# has a doc/ subdirectory with its own Doxyfile that points to its own
# files. The other Kokkos subpackages don't currently have their own
# Doxyfile files, so we have to do it manually here.
#
# mfh 26 Sep 2013: I've only added those directories in the Core
# subpackage that constitute the "public interface" of that
# subpackage. Please feel free to include additional subdirectories
# of ../core if you want to generate their documentation as well.
#
# mfh 26 Sep 2013: I've only added the Kokkos subpackages here that I
# think are ready for Doxygen documentation generation. Please feel
# free to amend this list as you see fit.
#
INPUT = index.doc ../classic ../core/src ../containers/src ../linalg/src
FILE_PATTERNS = *.hpp *.cpp *.cuh *.cu
RECURSIVE = NO
EXCLUDE_PATTERNS = *.x *.o *.out
EXAMPLE_PATH =
EXAMPLE_RECURSIVE = YES
EXAMPLE_PATTERNS = *.cpp *.hpp
IMAGE_PATH =
INPUT_FILTER =
ALPHABETICAL_INDEX = YES
COLS_IN_ALPHA_INDEX = 4
IGNORE_PREFIX =
#
# What diagrams are created
#
CLASS_GRAPH = YES
COLLABORATION_GRAPH = NO
INCLUDE_GRAPH = NO
INCLUDED_BY_GRAPH = NO
GRAPHICAL_HIERARCHY = YES
#
# Preprocessing
#
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
SEARCH_INCLUDES = YES
INCLUDE_FILE_PATTERNS =
PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS DOXYGEN_USE_ONLY
INCLUDE_PATH = ../src
EXPAND_AS_DEFINED =
#
# Links to other packages
#
TAGFILES = ../../common/tag_files/teuchos.tag=../../../teuchos/doc/html ../../common/tag_files/epetra.tag=../../../epetra/doc/html \
../../common/tag_files/belos.tag=../../../belos/doc/html ../../common/tag_files/anasazi.tag=../../../anasazi/doc/html \
../../common/tag_files/kokkos.tag=../../../kokkos/doc/html
GENERATE_TAGFILE = ../../common/tag_files/tpetra.tag
ALLEXTERNALS = NO
EXTERNAL_GROUPS = NO
#
# Environment
#
PERL_PATH = /usr/bin/perl
HAVE_DOT = YES
DOT_PATH =
MAX_DOT_GRAPH_WIDTH = 1024
MAX_DOT_GRAPH_HEIGHT = 1024
#
# What kind of documentation is generated
#
#GENERATE_HTML = YES
#HTML_OUTPUT = html
#HTML_HEADER = includes/header.html
#HTML_FOOTER = includes/footer.html
#HTML_STYLESHEET = includes/stylesheet.css
#HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO
DISABLE_INDEX = NO
GENERATE_LATEX = NO
GENERATE_RTF = NO
GENERATE_MAN = NO
GENERATE_XML = NO

Binary file not shown.

32
lib/kokkos/doc/README Normal file
View File

@ -0,0 +1,32 @@
Kokkos uses the Doxygen tool for providing three documentation
sources:
- man pages
- Latex User Guide
- HTML Online User Guide.
Man Pages
Man pages are available for all files and functions in the directory
TRILINOS_HOME/doc/kokkos/man, where TRILINOS_HOME is the location of your
copy of Trilinos. To use these pages with the Unix man utility, add
the directory to your man path as follows:
setenv MANPATH `echo $MANPATH`:TRILINOS_HOME/doc/kokkos/man
LaTeX User Guide
A postscript version of this guide is in
TRILINOS_HOME/doc/kokkos/latex/user_guide.ps. The LaTeX source is in the
directory TRILINOS_HOME/doc/kokkos/latex.
HTML Online User Guide
The online guide is initiated by pointing your browser to
TRILINOS_HOME/doc/kokkos/html/index.html
Any question, comments or suggestions are welcome. Please send to
Mike Heroux at
320-845-7695
maherou@sandia.gov

15
lib/kokkos/doc/build_docs Executable file
View File

@ -0,0 +1,15 @@
#!/bin/sh
if [ $TRILINOS_HOME ]; then
echo "TRILINOS_HOME has already been set!"
else
echo "TRILINOS_HOME has not been set. Setting it!"
export TRILINOS_HOME=`pwd`/../../..
fi
echo
echo "Generating main Kokkos doxygen documentation ..."
echo
doxygen Doxyfile

72
lib/kokkos/doc/index.doc Normal file
View File

@ -0,0 +1,72 @@
/*!
\mainpage Trilinos/Kokkos: Shared-memory programming interface and computational kernels
\section Kokkos_Intro Introduction
The %Kokkos package has two main components. The first, sometimes
called "%Kokkos Array" or just "%Kokkos," implements a
performance-portable shared-memory parallel programming model and data
containers. The second, called "%Kokkos Classic," consists of
computational kernels that support the %Tpetra package.
\section Kokkos_Kokkos The %Kokkos programming model
%Kokkos implements a performance-portable shared-memory parallel
programming model and data containers. It lets you write an algorithm
once, and just change a template parameter to get the optimal data
layout for your hardware. %Kokkos has back-ends for the following
parallel programming models:
- Kokkos::Threads: POSIX Threads (Pthreads)
- Kokkos::OpenMP: OpenMP
- Kokkos::Cuda: NVIDIA's CUDA programming model for graphics
processing units (GPUs)
- Kokkos::Serial: No thread parallelism
%Kokkos also has optimizations for shared-memory parallel systems with
nonuniform memory access (NUMA). Its containers can hold data of any
primitive ("plain old") data type (and some aggregate types). %Kokkos
Array may be used as a stand-alone programming model.
%Kokkos' parallel operations include the following:
- parallel_for: a thread-parallel "for loop"
- parallel_reduce: a thread-parallel reduction
- parallel_scan: a thread-parallel prefix scan operation
as well as expert-level platform-independent interfaces to thread
"teams," per-team "shared memory," synchronization, and atomic update
operations.
%Kokkos' data containers include the following:
- Kokkos::View: A multidimensional array suitable for thread-parallel
operations. Its layout (e.g., row-major or column-major) is
optimized by default for the particular thread-parallel device.
- Kokkos::Vector: A drop-in replacement for std::vector that eases
porting from standard sequential C++ data structures to %Kokkos'
parallel data structures.
- Kokkos::UnorderedMap: A parallel lookup table comparable in
functionality to std::unordered_map.
%Kokkos also uses the above basic containers to implement higher-level
data structures, like sparse graphs and matrices.
A good place to start learning about %Kokkos would be <a href="http://trilinos.sandia.gov/events/trilinos_user_group_2013/presentations/2013-11-TUG-Kokkos-Tutorial.pdf">these tutorial slides</a> from the 2013 Trilinos Users' Group meeting.
\section Kokkos_Classic %Kokkos Classic
"%Kokkos Classic" consists of computational kernels that support the
%Tpetra package. These kernels include sparse matrix-vector multiply,
sparse triangular solve, Gauss-Seidel, and dense vector operations.
They are templated on the type of objects (\c Scalar) on which they
operate. This component was not meant to be visible to users; it is
an implementation detail of the %Tpetra distributed linear algebra
package.
%Kokkos Classic also implements a shared-memory parallel programming
model. This inspired and preceded the %Kokkos programming model
described in the previous section. Users should consider the %Kokkos
Classic programming model deprecated, and prefer the new %Kokkos
programming model.
*/