Commit 97ed757d authored by crtrott's avatar crtrott
Browse files

Kokkos-Kernels: Adding Kokkos-Kernels as a stand-alone package

Kokkos-Kernels was moved from its previous location tpetra/kernels
to kokkos-kernels and now is its own package. Testing was performed
on multiple platforms with gcc, intel and cuda, also debug mode.
As far as I can tell the have the same errors as on current develop.
I.e. hopefully nothing related to this switch. Testing was done with
the samplescripts/Sandia-Sems/configure-testbeds-jenkins-all script.
parent badb4110
...@@ -62,6 +62,7 @@ TRIBITS_REPOSITORY_DEFINE_PACKAGES( ...@@ -62,6 +62,7 @@ TRIBITS_REPOSITORY_DEFINE_PACKAGES(
ThreadPool packages/ThreadPool PT # Depends on Pthreads ThreadPool packages/ThreadPool PT # Depends on Pthreads
Kokkos packages/kokkos PT Kokkos packages/kokkos PT
Teuchos packages/teuchos PT Teuchos packages/teuchos PT
KokkosKernels packages/kokkos-kernels PT
RTOp packages/rtop PT RTOp packages/rtop PT
Sacado packages/sacado PT Sacado packages/sacado PT
MiniTensor packages/minitensor PT MiniTensor packages/minitensor PT
......
SET(LIB_REQUIRED_DEP_PACKAGES Belos Teuchos Tpetra TpetraKernels) SET(LIB_REQUIRED_DEP_PACKAGES Belos Teuchos Tpetra KokkosKernels)
SET(LIB_OPTIONAL_DEP_PACKAGES Xpetra Zoltan2 ThyraTpetraAdapters Amesos2 ShyLUBasker ShyLUHTS) SET(LIB_OPTIONAL_DEP_PACKAGES Xpetra Zoltan2 ThyraTpetraAdapters Amesos2 ShyLUBasker ShyLUHTS)
SET(TEST_REQUIRED_DEP_PACKAGES Belos Galeri) SET(TEST_REQUIRED_DEP_PACKAGES Belos Galeri)
SET(TEST_OPTIONAL_DEP_PACKAGES Amesos2 ShyLUBasker ShyLUHTS ML) SET(TEST_OPTIONAL_DEP_PACKAGES Amesos2 ShyLUBasker ShyLUHTS ML)
......
# Standard ignores
*~
*.pyc
\#*#
.#*
.*.swp
.cproject
.project
INCLUDE(TribitsETISupport) INCLUDE(TribitsETISupport)
# #
# Define the subpackage # Define the package
# #
TRIBITS_SUBPACKAGE(Kernels) TRIBITS_PACKAGE(KokkosKernels)
# Define ${PACKAGE_NAME}_ENABLE_EXPLICIT_INSTANTIATION, # Define ${PACKAGE_NAME}_ENABLE_EXPLICIT_INSTANTIATION,
# which defaults to ${PROJECT_NAME}_ENABLE_EXPLICIT_INSTANTIATION. # which defaults to ${PROJECT_NAME}_ENABLE_EXPLICIT_INSTANTIATION.
...@@ -13,7 +13,7 @@ TRIBITS_ADD_EXPLICIT_INSTANTIATION_OPTION() ...@@ -13,7 +13,7 @@ TRIBITS_ADD_EXPLICIT_INSTANTIATION_OPTION()
# template instantiation (ETI). # template instantiation (ETI).
TRIBITS_ADD_ETI_SUPPORT() TRIBITS_ADD_ETI_SUPPORT()
# If building in debug mode, define the HAVE_TPETRAKERNELS_DEBUG macro. # If building in debug mode, define the HAVE_KOKKOSKERNELS_DEBUG macro.
TRIBITS_ADD_DEBUG_OPTION() TRIBITS_ADD_DEBUG_OPTION()
# #
...@@ -21,7 +21,7 @@ TRIBITS_ADD_DEBUG_OPTION() ...@@ -21,7 +21,7 @@ TRIBITS_ADD_DEBUG_OPTION()
# #
# #
# "Optimization level" for TpetraKernels computational kernels. The # "Optimization level" for KokkosKernels computational kernels. The
# higher the level, the more code variants get generated, and thus the # higher the level, the more code variants get generated, and thus the
# longer the compile times. However, more code variants mean both # longer the compile times. However, more code variants mean both
# better performance overall, and more uniform performance for corner # better performance overall, and more uniform performance for corner
...@@ -29,7 +29,7 @@ TRIBITS_ADD_DEBUG_OPTION() ...@@ -29,7 +29,7 @@ TRIBITS_ADD_DEBUG_OPTION()
# #
TRIBITS_ADD_OPTION_AND_DEFINE( KokkosLinAlg_Opt_Level TRIBITS_ADD_OPTION_AND_DEFINE( KokkosLinAlg_Opt_Level
KOKKOSLINALG_OPT_LEVEL KOKKOSLINALG_OPT_LEVEL
"Optimization level for TpetraKernels computational kernels: a nonnegative integer. Higher levels result in better performance that is more uniform for corner cases, but increase build time and library size. The default value is 1, which should give performance within ten percent of optimal on most platforms, for most problems." "Optimization level for KokkosKernels computational kernels: a nonnegative integer. Higher levels result in better performance that is more uniform for corner cases, but increase build time and library size. The default value is 1, which should give performance within ten percent of optimal on most platforms, for most problems."
"1" "1"
) )
...@@ -37,74 +37,84 @@ TRIBITS_ADD_OPTION_AND_DEFINE( KokkosLinAlg_Opt_Level ...@@ -37,74 +37,84 @@ TRIBITS_ADD_OPTION_AND_DEFINE( KokkosLinAlg_Opt_Level
# time. Default is no. # time. Default is no.
TRIBITS_ADD_OPTION_AND_DEFINE( TRIBITS_ADD_OPTION_AND_DEFINE(
${PACKAGE_NAME}_ENABLE_Experimental ${PACKAGE_NAME}_ENABLE_Experimental
HAVE_TPETRAKERNELS_EXPERIMENTAL HAVE_KOKKOSKERNELS_EXPERIMENTAL
"Enable building and installation of experimental TpetraKernels features." "Enable building and installation of experimental KokkosKernels features."
NO ) NO )
ASSERT_DEFINED (Tpetra_INST_CUDA) ASSERT_DEFINED (Kokkos_ENABLE_Cuda)
TRIBITS_ADD_OPTION_AND_DEFINE( TRIBITS_ADD_OPTION_AND_DEFINE(
${PACKAGE_NAME}_ENABLE_EXECUTION_SPACE_CUDA ${PACKAGE_NAME}_ENABLE_EXECUTION_SPACE_CUDA
TPETRAKERNELS_BUILD_EXECUTION_SPACE_CUDA KOKKOSKERNELS_BUILD_EXECUTION_SPACE_CUDA
"Whether to build kernels for the execution space Kokkos::Cuda. This option is Tpetra_INST_CUDA=${Tpetra_INST_CUDA} by default. If expliict template instantiation (ETI) is enabled in Trilinos, disabling this when Tpetra_INST_CUDA is enabled will make Tpetra build times longer." "Whether to build kernels for the execution space Kokkos::Cuda. This option is Tpetra_INST_CUDA=${Tpetra_INST_CUDA} by default. If expliict template instantiation (ETI) is enabled in Trilinos, disabling this when Tpetra_INST_CUDA is enabled will make Tpetra build times longer."
${Tpetra_INST_CUDA} ${Kokkos_ENABLE_Cuda}
) )
ASSERT_DEFINED (Tpetra_INST_OPENMP) ASSERT_DEFINED (Kokkos_ENABLE_OpenMP)
TRIBITS_ADD_OPTION_AND_DEFINE( TRIBITS_ADD_OPTION_AND_DEFINE(
${PACKAGE_NAME}_ENABLE_EXECUTION_SPACE_OPENMP ${PACKAGE_NAME}_ENABLE_EXECUTION_SPACE_OPENMP
TPETRAKERNELS_BUILD_EXECUTION_SPACE_OPENMP KOKKOSKERNELS_BUILD_EXECUTION_SPACE_OPENMP
"Whether to build kernels for the execution space Kokkos::OpenMP. This option is Tpetra_INST_OPENMP=${Tpetra_INST_OPENMP} by default. If expliict template instantiation (ETI) is enabled in Trilinos, disabling this when Tpetra_INST_OPENMP is enabled will make Tpetra build times longer." "Whether to build kernels for the execution space Kokkos::OpenMP. This option is Tpetra_INST_OPENMP=${Tpetra_INST_OPENMP} by default. If expliict template instantiation (ETI) is enabled in Trilinos, disabling this when Tpetra_INST_OPENMP is enabled will make Tpetra build times longer."
${Tpetra_INST_OPENMP} ${Kokkos_ENABLE_OpenMP}
) )
ASSERT_DEFINED (Tpetra_INST_PTHREAD) ASSERT_DEFINED (Kokkos_ENABLE_Pthread)
TRIBITS_ADD_OPTION_AND_DEFINE( TRIBITS_ADD_OPTION_AND_DEFINE(
${PACKAGE_NAME}_ENABLE_EXECUTION_SPACE_PTHREAD ${PACKAGE_NAME}_ENABLE_EXECUTION_SPACE_PTHREAD
TPETRAKERNELS_BUILD_EXECUTION_SPACE_PTHREAD KOKKOSKERNELS_BUILD_EXECUTION_SPACE_PTHREAD
"Whether to build kernels for the execution space Kokkos::Threads. This option is Tpetra_INST_PTHREAD=${Tpetra_INST_PTHREAD} by default. If expliict template instantiation (ETI) is enabled in Trilinos, disabling this when Tpetra_INST_PTHREAD is enabled will make Tpetra build times longer." "Whether to build kernels for the execution space Kokkos::Threads. This option is Tpetra_INST_PTHREAD=${Tpetra_INST_PTHREAD} by default. If expliict template instantiation (ETI) is enabled in Trilinos, disabling this when Tpetra_INST_PTHREAD is enabled will make Tpetra build times longer."
${Tpetra_INST_PTHREAD} ${Kokkos_ENABLE_Pthread}
) )
ASSERT_DEFINED (Tpetra_INST_SERIAL) ASSERT_DEFINED (Kokkos_ENABLE_Serial)
TRIBITS_ADD_OPTION_AND_DEFINE( TRIBITS_ADD_OPTION_AND_DEFINE(
${PACKAGE_NAME}_ENABLE_EXECUTION_SPACE_SERIAL ${PACKAGE_NAME}_ENABLE_EXECUTION_SPACE_SERIAL
TPETRAKERNELS_BUILD_EXECUTION_SPACE_SERIAL KOKKOSKERNELS_BUILD_EXECUTION_SPACE_SERIAL
"Whether to build kernels for the execution space Kokkos::Serial. This option is Tpetra_INST_SERIAL=${Tpetra_INST_SERIAL} by default. If expliict template instantiation (ETI) is enabled in Trilinos, disabling this when Tpetra_INST_SERIAL is enabled will make Tpetra build times longer." "Whether to build kernels for the execution space Kokkos::Serial. This option is Tpetra_INST_SERIAL=${Tpetra_INST_SERIAL} by default. If expliict template instantiation (ETI) is enabled in Trilinos, disabling this when Tpetra_INST_SERIAL is enabled will make Tpetra build times longer."
${Tpetra_INST_SERIAL} ${Kokkos_ENABLE_Serial}
) )
# ================================================================== # ==================================================================
# Explicit template instantiation (ETI) and test instantiation logic # Explicit template instantiation (ETI) and test instantiation logic
# ================================================================== # ==================================================================
SET(${PACKAGE_NAME}_ETI_SCALARS "")
SET(${PACKAGE_NAME}_ETI_LORDS "")
SET(${PACKAGE_NAME}_ETI_DEVICES "")
# tpetra/CMakeLists.txt (the package's CMake logic) defines these # ============================================================
# variables. Despite "ETI" in their names, they exist whether or not # Kokkos execution space types
# ETI is defined. If ETI is defined, these variables govern the set # ============================================================
# of template parameter combinations over which Tpetra instantiates.
# Whether or not ETI is defined, the variables govern the set of
# template parameter combinations over which Tpetra runs tests. #
# Construct the list of enabled Device types.
ASSERT_DEFINED (Tpetra_ETI_SCALARS_KOKKOS) #
ASSERT_DEFINED (Tpetra_ETI_SCALARS_KOKKOS_NO_ORDS) IF(KokkosKernels_ENABLE_EXECUTION_SPACE_SERIAL)
ASSERT_DEFINED (Tpetra_ETI_SCALARS_KOKKOS_ORDS) LIST(APPEND ${PACKAGE_NAME}_ETI_DEVICES "Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace>")
ASSERT_DEFINED (Tpetra_ETI_LORDS) ENDIF()
ASSERT_DEFINED (Tpetra_ETI_DEVICES) IF(KokkosKernels_ENABLE_EXECUTION_SPACE_PTHREAD)
LIST(APPEND ${PACKAGE_NAME}_ETI_DEVICES "Kokkos::Device<Kokkos::Threads, Kokkos::HostSpace>")
# mfh 11 Oct 2016: Use Kokkos versions of Scalar types for ETI. ENDIF()
# In particular, use Kokkos::complex<T> in place of std::complex<T>. IF(KokkosKernels_ENABLE_EXECUTION_SPACE_OPENMP)
SET(${PACKAGE_NAME}_ETI_SCALARS "${Tpetra_ETI_SCALARS_KOKKOS}") LIST(APPEND ${PACKAGE_NAME}_ETI_DEVICES "Kokkos::Device<Kokkos::OpenMP, Kokkos::HostSpace>")
# Exclude all ordinal types (GlobalOrdinal and int). ENDIF()
SET(${PACKAGE_NAME}_ETI_SCALARS_NO_ORDS "${Tpetra_ETI_SCALARS_KOKKOS_NO_ORDS}") IF(KokkosKernels_ENABLE_EXECUTION_SPACE_CUDA)
# Include ONLY ordinal types (GlobalOrdinal and int). LIST(APPEND ${PACKAGE_NAME}_ETI_DEVICES "Kokkos::Device<Kokkos::Cuda, Kokkos::CudaSpace>")
SET(${PACKAGE_NAME}_ETI_SCALARS_ORDS "${Tpetra_ETI_SCALARS_KOKKOS_ORDS}") LIST(APPEND ${PACKAGE_NAME}_ETI_DEVICES "Kokkos::Device<Kokkos::Cuda, Kokkos::CudaUVMSpace>")
SET(${PACKAGE_NAME}_ETI_LORDS "${Tpetra_ETI_LORDS}") ENDIF()
SET(${PACKAGE_NAME}_ETI_DEVICES "${Tpetra_ETI_DEVICES}")
# ============================================================
# LocalOrdinal types
# ============================================================
# FIXME (mfh 16 Oct 2015) Tpetra currently only supports LocalOrdinal
# = int. At some point, the list of allowed LocalOrdinal types will
# expand to include 64-bit signed integer types.
LIST (APPEND ${PACKAGE_NAME}_ETI_LORDS "int")
LIST (APPEND ${PACKAGE_NAME}_ETI_SCALARS "double")
# "Export" the names for use in the ETI system. # "Export" the names for use in the ETI system.
# If we don't do this, ETI won't see these variables. # If we don't do this, ETI won't see these variables.
GLOBAL_SET(${PACKAGE_NAME}_ETI_SCALARS ${${PACKAGE_NAME}_ETI_SCALARS}) GLOBAL_SET(${PACKAGE_NAME}_ETI_SCALARS ${${PACKAGE_NAME}_ETI_SCALARS})
GLOBAL_SET(${PACKAGE_NAME}_ETI_SCALARS_NO_ORDS ${${PACKAGE_NAME}_ETI_SCALARS_NO_ORDS})
GLOBAL_SET(${PACKAGE_NAME}_ETI_SCALARS_ORDS ${${PACKAGE_NAME}_ETI_SCALARS_ORDS})
GLOBAL_SET(${PACKAGE_NAME}_ETI_GORDS ${${PACKAGE_NAME}_ETI_GORDS})
GLOBAL_SET(${PACKAGE_NAME}_ETI_LORDS ${${PACKAGE_NAME}_ETI_LORDS}) GLOBAL_SET(${PACKAGE_NAME}_ETI_LORDS ${${PACKAGE_NAME}_ETI_LORDS})
GLOBAL_SET(${PACKAGE_NAME}_ETI_DEVICES ${${PACKAGE_NAME}_ETI_DEVICES}) GLOBAL_SET(${PACKAGE_NAME}_ETI_DEVICES ${${PACKAGE_NAME}_ETI_DEVICES})
...@@ -118,5 +128,5 @@ TRIBITS_ADD_TEST_DIRECTORIES(perf_test) ...@@ -118,5 +128,5 @@ TRIBITS_ADD_TEST_DIRECTORIES(perf_test)
TRIBITS_ADD_TEST_DIRECTORIES(unit_test) TRIBITS_ADD_TEST_DIRECTORIES(unit_test)
TRIBITS_ADD_EXAMPLE_DIRECTORIES(example) TRIBITS_ADD_EXAMPLE_DIRECTORIES(example)
TRIBITS_SUBPACKAGE_POSTPROCESS() TRIBITS_PACKAGE_POSTPROCESS()
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
//@HEADER //@HEADER
// ************************************************************************ // ************************************************************************
// //
// KokkosKernels: Linear Algebra and Graph Kernels // KokkosKernels 0.9: Linear Algebra and Graph Kernels
// Copyright 2016 Sandia Corporation // Copyright 2017 Sandia Corporation
// //
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
// the U.S. Government retains certain rights in this software. // the U.S. Government retains certain rights in this software.
......
...@@ -2,12 +2,14 @@ ...@@ -2,12 +2,14 @@
//@HEADER //@HEADER
// ************************************************************************ // ************************************************************************
// //
// KokkosKernels: Linear Algebra and Graph Kernels // KokkosKernels 0.9: Linear Algebra and Graph Kernels
// Copyright 2016 Sandia Corporation // Copyright 2017 Sandia Corporation
// //
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
// the U.S. Government retains certain rights in this software. // the U.S. Government retains certain rights in this software.
// //
// KokkosKernels is licensed under 3-clause BSD terms of use:
//
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
// met: // met:
...@@ -41,24 +43,3 @@ ...@@ -41,24 +43,3 @@
//@HEADER //@HEADER
*/ */
#ifndef __KOKKOSKERNELS_VECTOR_HPP__
#define __KOKKOSKERNELS_VECTOR_HPP__
/// \author Kyungjoo Kim (kyukim@sandia.gov)
#include "KokkosKernels_Util.hpp"
namespace KokkosKernels {
template<typename T>
class Vector;
}
#include "KokkosKernels_Vector_SIMD.hpp"
#include "KokkosKernels_Vector_AVX256D.hpp"
#include "KokkosKernels_Vector_AVX512D.hpp"
#endif
The Kernels subpackage of Tpetra ("TpetraKernels"/"KokkosKernels") KokkosKernels provides dense and sparse linear algebra as well graph computing
contains local computational kernels. "Local" means no MPI or other local computational kernels using the Kokkos programming model.
distributed-memory communication. "Computational kernels" are coarse-grained "Local" means no MPI or other distributed-memory communication.
operations; they take a lot of work and make sense to parallelize inside using "Computational kernels" are coarse-grained operations; they take a lot of work
Kokkos. Computational kernels in this subpackage include the following: and make sense to parallelize inside using Kokkos.
Computational kernels in this subpackage include the following:
- (Multi)vector dot products, norms, and updates (AXPY-like - (Multi)vector dot products, norms, and updates (AXPY-like
operations that add vectors together entry-wise) operations that add vectors together entry-wise)
...@@ -11,6 +13,9 @@ The Kernels subpackage of Tpetra ("TpetraKernels"/"KokkosKernels") ...@@ -11,6 +13,9 @@ The Kernels subpackage of Tpetra ("TpetraKernels"/"KokkosKernels")
- Other operations that the Core subpackage of Tpetra (TpetraCore) - Other operations that the Core subpackage of Tpetra (TpetraCore)
needs needs
Kokkos is licensed under standard 3-clause BSD terms of use. For specifics
see the LICENSE file contained in the repository or distribution.
We organize this directory as follows: We organize this directory as follows:
1. Public interfaces to computational kernels live in the src/ 1. Public interfaces to computational kernels live in the src/
......
...@@ -47,7 +47,7 @@ ENDIF() ...@@ -47,7 +47,7 @@ ENDIF()
# #
# Tpetra ETI type fields. S, LO, D correspond to the template # Tpetra ETI type fields. S, LO, D correspond to the template
# parameters Scalar, LocalOrdinal, and DeviceType. TpetraKernels does # parameters Scalar, LocalOrdinal, and DeviceType. KokkosKernels does
# not need to know about GlobalOrdinal so we omit that. # not need to know about GlobalOrdinal so we omit that.
SET(${PACKAGE_NAME}_ETI_FIELDS "S|LO|D") SET(${PACKAGE_NAME}_ETI_FIELDS "S|LO|D")
...@@ -122,10 +122,10 @@ TRIBITS_ETI_GENERATE_MACROS( ...@@ -122,10 +122,10 @@ TRIBITS_ETI_GENERATE_MACROS(
"${${PACKAGE_NAME}_ETI_EXCLUDE_SET};${${PACKAGE_NAME}_ETI_EXCLUDE_SET_ORDINAL_SCALAR}" "${${PACKAGE_NAME}_ETI_EXCLUDE_SET};${${PACKAGE_NAME}_ETI_EXCLUDE_SET_ORDINAL_SCALAR}"
list_of_manglings list_of_manglings
eti_typedefs eti_typedefs
"TPETRAKERNELS_INSTANTIATE_SLD_NO_ORDINAL_SCALAR(S,LO,D)" TPETRAKERNELS_INSTANTIATE_SLD_NO_ORDINAL_SCALAR "KOKKOSKERNELS_INSTANTIATE_SLD_NO_ORDINAL_SCALAR(S,LO,D)" KOKKOSKERNELS_INSTANTIATE_SLD_NO_ORDINAL_SCALAR
"TPETRAKERNELS_INSTANTIATE_SL_NO_ORDINAL_SCALAR(S,LO)" TPETRAKERNELS_INSTANTIATE_SL_NO_ORDINAL_SCALAR "KOKKOSKERNELS_INSTANTIATE_SL_NO_ORDINAL_SCALAR(S,LO)" KOKKOSKERNELS_INSTANTIATE_SL_NO_ORDINAL_SCALAR
"TPETRAKERNELS_INSTANTIATE_SD_NO_ORDINAL_SCALAR(S,D)" TPETRAKERNELS_INSTANTIATE_SD_NO_ORDINAL_SCALAR "KOKKOSKERNELS_INSTANTIATE_SD_NO_ORDINAL_SCALAR(S,D)" KOKKOSKERNELS_INSTANTIATE_SD_NO_ORDINAL_SCALAR
"TPETRAKERNELS_INSTANTIATE_S_NO_ORDINAL_SCALAR(S)" TPETRAKERNELS_INSTANTIATE_S_NO_ORDINAL_SCALAR) "KOKKOSKERNELS_INSTANTIATE_S_NO_ORDINAL_SCALAR(S)" KOKKOSKERNELS_INSTANTIATE_S_NO_ORDINAL_SCALAR)
# Generate macros include ONLY possible ordinal types in the list of Scalar types. # Generate macros include ONLY possible ordinal types in the list of Scalar types.
TRIBITS_ETI_GENERATE_MACROS( TRIBITS_ETI_GENERATE_MACROS(
...@@ -134,10 +134,10 @@ TRIBITS_ETI_GENERATE_MACROS( ...@@ -134,10 +134,10 @@ TRIBITS_ETI_GENERATE_MACROS(
"${${PACKAGE_NAME}_ETI_EXCLUDE_SET}" "${${PACKAGE_NAME}_ETI_EXCLUDE_SET}"
list_of_manglings list_of_manglings
eti_typedefs eti_typedefs
"TPETRAKERNELS_INSTANTIATE_SLD_ORDINAL_SCALAR(S,LO,D)" TPETRAKERNELS_INSTANTIATE_SLD_ORDINAL_SCALAR "KOKKOSKERNELS_INSTANTIATE_SLD_ORDINAL_SCALAR(S,LO,D)" KOKKOSKERNELS_INSTANTIATE_SLD_ORDINAL_SCALAR
"TPETRAKERNELS_INSTANTIATE_SL_ORDINAL_SCALAR(S,LO)" TPETRAKERNELS_INSTANTIATE_SL_ORDINAL_SCALAR "KOKKOSKERNELS_INSTANTIATE_SL_ORDINAL_SCALAR(S,LO)" KOKKOSKERNELS_INSTANTIATE_SL_ORDINAL_SCALAR
"TPETRAKERNELS_INSTANTIATE_SD_ORDINAL_SCALAR(S,D)" TPETRAKERNELS_INSTANTIATE_SD_ORDINAL_SCALAR "KOKKOSKERNELS_INSTANTIATE_SD_ORDINAL_SCALAR(S,D)" KOKKOSKERNELS_INSTANTIATE_SD_ORDINAL_SCALAR
"TPETRAKERNELS_INSTANTIATE_S_ORDINAL_SCALAR(S)" TPETRAKERNELS_INSTANTIATE_S_ORDINAL_SCALAR) "KOKKOSKERNELS_INSTANTIATE_S_ORDINAL_SCALAR(S)" KOKKOSKERNELS_INSTANTIATE_S_ORDINAL_SCALAR)
# Generate macros that include all Scalar types (if applicable), # Generate macros that include all Scalar types (if applicable),
# including possible ordinal types. # including possible ordinal types.
...@@ -147,20 +147,20 @@ TRIBITS_ETI_GENERATE_MACROS( ...@@ -147,20 +147,20 @@ TRIBITS_ETI_GENERATE_MACROS(
"${${PACKAGE_NAME}_ETI_EXCLUDE_SET}" "${${PACKAGE_NAME}_ETI_EXCLUDE_SET}"
list_of_manglings list_of_manglings
eti_typedefs eti_typedefs
"TPETRAKERNELS_INSTANTIATE_SLD(S,LO,D)" TPETRAKERNELS_INSTANTIATE_SLD "KOKKOSKERNELS_INSTANTIATE_SLD(S,LO,D)" KOKKOSKERNELS_INSTANTIATE_SLD
"TPETRAKERNELS_INSTANTIATE_SL(S,LO)" TPETRAKERNELS_INSTANTIATE_SL "KOKKOSKERNELS_INSTANTIATE_SL(S,LO)" KOKKOSKERNELS_INSTANTIATE_SL
"TPETRAKERNELS_INSTANTIATE_SD(S,D)" TPETRAKERNELS_INSTANTIATE_SD "KOKKOSKERNELS_INSTANTIATE_SD(S,D)" KOKKOSKERNELS_INSTANTIATE_SD
"TPETRAKERNELS_INSTANTIATE_S(S)" TPETRAKERNELS_INSTANTIATE_S "KOKKOSKERNELS_INSTANTIATE_S(S)" KOKKOSKERNELS_INSTANTIATE_S
"TPETRAKERNELS_INSTANTIATE_LD(LO,D)" TPETRAKERNELS_INSTANTIATE_LD "KOKKOSKERNELS_INSTANTIATE_LD(LO,D)" KOKKOSKERNELS_INSTANTIATE_LD
"TPETRAKERNELS_INSTANTIATE_L(LO)" TPETRAKERNELS_INSTANTIATE_L "KOKKOSKERNELS_INSTANTIATE_L(LO)" KOKKOSKERNELS_INSTANTIATE_L
"TPETRAKERNELS_INSTANTIATE_D(D)" TPETRAKERNELS_INSTANTIATE_D) "KOKKOSKERNELS_INSTANTIATE_D(D)" KOKKOSKERNELS_INSTANTIATE_D)
# Generate "mangled" typedefs. Macros sometimes get grumpy when types # Generate "mangled" typedefs. Macros sometimes get grumpy when types
# have spaces, colons, or angle brackets in them. This includes types # have spaces, colons, or angle brackets in them. This includes types
# like "long long" or "std::complex<double>". Thus, we define # like "long long" or "std::complex<double>". Thus, we define
# typedefs that remove the offending characters. The typedefs also # typedefs that remove the offending characters. The typedefs also
# get written to the generated header file. # get written to the generated header file.
TRIBITS_ETI_GENERATE_TYPEDEF_MACRO(TPETRAKERNELS_ETI_MANGLING_TYPEDEFS "TPETRAKERNELS_ETI_MANGLING_TYPEDEFS" "${eti_typedefs}") TRIBITS_ETI_GENERATE_TYPEDEF_MACRO(KOKKOSKERNELS_ETI_MANGLING_TYPEDEFS "KOKKOSKERNELS_ETI_MANGLING_TYPEDEFS" "${eti_typedefs}")
# Generate the header file ${PACKAGE_NAME}_ETIHelperMacros.h, from the # Generate the header file ${PACKAGE_NAME}_ETIHelperMacros.h, from the
# file ${PACKAGE_NAME}_ETIHelperMacros.h.in (that lives in this # file ${PACKAGE_NAME}_ETIHelperMacros.h.in (that lives in this
......
#ifndef KOKKOSKERNELS_ETIHELPERMACROS_H
#define KOKKOSKERNELS_ETIHELPERMACROS_H
#include "KokkosKernels_config.h"
@KOKKOSKERNELS_INSTANTIATE_SLD@
@KOKKOSKERNELS_INSTANTIATE_SL@
@KOKKOSKERNELS_INSTANTIATE_SD@
@KOKKOSKERNELS_INSTANTIATE_S@
@KOKKOSKERNELS_INSTANTIATE_SLD_NO_ORDINAL_SCALAR@
@KOKKOSKERNELS_INSTANTIATE_SL_NO_ORDINAL_SCALAR@
@KOKKOSKERNELS_INSTANTIATE_SD_NO_ORDINAL_SCALAR@
@KOKKOSKERNELS_INSTANTIATE_S_NO_ORDINAL_SCALAR@
@KOKKOSKERNELS_INSTANTIATE_SLD_ORDINAL_SCALAR@
@KOKKOSKERNELS_INSTANTIATE_SL_ORDINAL_SCALAR@
@KOKKOSKERNELS_INSTANTIATE_SD_ORDINAL_SCALAR@
@KOKKOSKERNELS_INSTANTIATE_S_ORDINAL_SCALAR@
@KOKKOSKERNELS_INSTANTIATE_LD@
@KOKKOSKERNELS_INSTANTIATE_L@
@KOKKOSKERNELS_INSTANTIATE_D@
@KOKKOSKERNELS_ETI_MANGLING_TYPEDEFS@
#endif // KOKKOSKERNELS_ETIHELPERMACROS_H
#ifndef TPETRAKERNELS_CONFIG_H #ifndef KOKKOSKERNELS_CONFIG_H
#define TPETRAKERNELS_CONFIG_H #define KOKKOSKERNELS_CONFIG_H
/* Define if building in debug mode */ /* Define if building in debug mode */
#cmakedefine HAVE_TPETRAKERNELS_DEBUG #cmakedefine HAVE_KOKKOSKERNELS_DEBUG
/* Define this macro if the quadmath TPL is enabled */ /* Define this macro if the quadmath TPL is enabled */
#cmakedefine HAVE_TPETRAKERNELS_QUADMATH #cmakedefine HAVE_KOKKOSKERNELS_QUADMATH
/* Define this macro if the MKL TPL is enabled. This is different /* Define this macro if the MKL TPL is enabled. This is different
than just linking against the MKL to get the BLAS and LAPACK; it than just linking against the MKL to get the BLAS and LAPACK; it
requires (a) header file(s) as well, and may use functions other requires (a) header file(s) as well, and may use functions other
than just BLAS and LAPACK functions. */ than just BLAS and LAPACK functions. */
#cmakedefine HAVE_TPETRAKERNELS_MKL #cmakedefine HAVE_KOKKOSKERNELS_MKL
/* Define this macro if experimental features of Kokkoskernels are enabled */ /* Define this macro if experimental features of Kokkoskernels are enabled */
#cmakedefine HAVE_TPETRAKERNELS_EXPERIMENTAL #cmakedefine HAVE_KOKKOSKERNELS_EXPERIMENTAL
/* Define this macro to disallow instantiations of kernels which are not covered by ETI */ /* Define this macro to disallow instantiations of kernels which are not covered by ETI */
#cmakedefine HAVE_TPETRAKERNELS_ETI_ONLY #cmakedefine HAVE_KOKKOSKERNELS_ETI_ONLY
/* Whether to build kernels for execution space Kokkos::Cuda */ /* Whether to build kernels for execution space Kokkos::Cuda */
#cmakedefine TPETRAKERNELS_BUILD_EXECUTION_SPACE_CUDA #cmakedefine KOKKOSKERNELS_BUILD_EXECUTION_SPACE_CUDA
/* Whether to build kernels for execution space Kokkos::OpenMP */ /* Whether to build kernels for execution space Kokkos::OpenMP */
#cmakedefine TPETRAKERNELS_BUILD_EXECUTION_SPACE_OPENMP #cmakedefine KOKKOSKERNELS_BUILD_EXECUTION_SPACE_OPENMP
/* Whether to build kernels for execution space Kokkos::Threads */ /* Whether to build kernels for execution space Kokkos::Threads */
#cmakedefine TPETRAKERNELS_BUILD_EXECUTION_SPACE_PTHREAD #cmakedefine KOKKOSKERNELS_BUILD_EXECUTION_SPACE_PTHREAD
/* Whether to build kernels for execution space Kokkos::Serial */ /* Whether to build kernels for execution space Kokkos::Serial */
#cmakedefine TPETRAKERNELS_BUILD_EXECUTION_SPACE_SERIAL #cmakedefine KOKKOSKERNELS_BUILD_EXECUTION_SPACE_SERIAL
/* /*
* "Optimization level" for computational kernels in this subpackage. * "Optimization level" for computational kernels in this subpackage.
...@@ -37,4 +37,4 @@ ...@@ -37,4 +37,4 @@
*/ */
#define KOKKOSLINALG_OPT_LEVEL @KokkosLinAlg_Opt_Level@ #define KOKKOSLINALG_OPT_LEVEL @KokkosLinAlg_Opt_Level@
#endif // TPETRAKERNELS_CONFIG_H #endif // KOKKOSKERNELS_CONFIG_H
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
//@HEADER //@HEADER
// ************************************************************************ // ************************************************************************
// //
// KokkosKernels: Linear Algebra and Graph Kernels // KokkosKernels 0.9: Linear Algebra and Graph Kernels
// Copyright 2016 Sandia Corporation // Copyright 2017 Sandia Corporation
// //
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
// the U.S. Government retains certain rights in this software. // the U.S. Government retains certain rights in this software.
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
//@HEADER //@HEADER
// ************************************************************************ // ************************************************************************
// //
// KokkosKernels: Linear Algebra and Graph Kernels // KokkosKernels 0.9: Linear Algebra and Graph Kernels
// Copyright 2016 Sandia Corporation // Copyright 2017 Sandia Corporation
// //
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
// the U.S. Government retains certain rights in this software. // the U.S. Government retains certain rights in this software.
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
//@HEADER //@HEADER
// ************************************************************************ // ************************************************************************
// //
// KokkosKernels: Linear Algebra and Graph Kernels // KokkosKernels 0.9: Linear Algebra and Graph Kernels
// Copyright 2016 Sandia Corporation // Copyright 2017 Sandia Corporation
// //
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
// the U.S. Government retains certain rights in this software. // the U.S. Government retains certain rights in this software.
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
//@HEADER //@HEADER
// ************************************************************************ // ************************************************************************
// //
// KokkosKernels: Linear Algebra and Graph Kernels // KokkosKernels 0.9: Linear Algebra and Graph Kernels
// Copyright 2016 Sandia Corporation // Copyright 2017 Sandia Corporation
// //
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
// the U.S. Government retains certain rights in this software. // the U.S. Government retains certain rights in this software.
......