diff --git a/lib/kokkos/CHANGELOG.md b/lib/kokkos/CHANGELOG.md index feb2bd547f..145cc62706 100644 --- a/lib/kokkos/CHANGELOG.md +++ b/lib/kokkos/CHANGELOG.md @@ -1,5 +1,58 @@ # Change Log +## [2.7.00](https://github.com/kokkos/kokkos/tree/2.7.00) (2018-05-24) +[Full Changelog](https://github.com/kokkos/kokkos/compare/2.6.00...2.7.00) + +**Part of the Kokkos C++ Performance Portability Programming EcoSystem 2.7** + +**Implemented enhancements:** + +- Deprecate team\_size auto adjusting to maximal value possible [\#1618](https://github.com/kokkos/kokkos/issues/1618) +- DynamicView - remove restrictions to std::is\_trivial types and value\_type is power of two [\#1586](https://github.com/kokkos/kokkos/issues/1586) +- Kokkos::StaticCrsGraph does not propagate memory traits \(e.g., Unmanaged\) [\#1581](https://github.com/kokkos/kokkos/issues/1581) +- Adding ETI for DeepCopy / ViewFill etc. [\#1578](https://github.com/kokkos/kokkos/issues/1578) +- Deprecate all the left over KOKKOS\_HAVE\_ Macros and Kokkos\_OldMacros.hpp [\#1572](https://github.com/kokkos/kokkos/issues/1572) +- Error if Kokkos\_ARCH set in CMake [\#1555](https://github.com/kokkos/kokkos/issues/1555) +- Deprecate ExecSpace::initialize / ExecSpace::finalize [\#1532](https://github.com/kokkos/kokkos/issues/1532) +- New API for TeamPolicy property setting [\#1531](https://github.com/kokkos/kokkos/issues/1531) +- clang 6.0 + cuda debug out-of-memory test failure [\#1521](https://github.com/kokkos/kokkos/issues/1521) +- Cuda UniqueToken interface not consistent with other backends [\#1505](https://github.com/kokkos/kokkos/issues/1505) +- Move Reducers out of Experimental namespace [\#1494](https://github.com/kokkos/kokkos/issues/1494) +- Provide scope guard for initialize/finalize [\#1479](https://github.com/kokkos/kokkos/issues/1479) +- Check Kokkos::is\_initialized in SharedAllocationRecord dtor [\#1465](https://github.com/kokkos/kokkos/issues/1465) +- Remove static list of allocations [\#1464](https://github.com/kokkos/kokkos/issues/1464) +- Makefiles: Support single compile/link line use case [\#1402](https://github.com/kokkos/kokkos/issues/1402) +- ThreadVectorRange with a range [\#1400](https://github.com/kokkos/kokkos/issues/1400) +- Exclusive scan + last value API [\#1358](https://github.com/kokkos/kokkos/issues/1358) +- Install kokkos\_generated\_settings.cmake [\#1348](https://github.com/kokkos/kokkos/issues/1348) +- Kokkos arrays \(not views!\) don't do bounds checking in debug mode [\#1342](https://github.com/kokkos/kokkos/issues/1342) +- Expose round-robin GPU assignment outside of initialize\(int, char\*\*\) [\#1318](https://github.com/kokkos/kokkos/issues/1318) +- DynamicView misses use\_count and label function [\#1298](https://github.com/kokkos/kokkos/issues/1298) +- View constructor should check arguments [\#1286](https://github.com/kokkos/kokkos/issues/1286) +- False Positive on Oversubscription Warning [\#1207](https://github.com/kokkos/kokkos/issues/1207) +- Allow \(require\) execution space for 1st arg of VerifyExecutionCanAccessMemorySpace [\#1192](https://github.com/kokkos/kokkos/issues/1192) +- ROCm: Add ROCmHostPinnedSpace [\#958](https://github.com/kokkos/kokkos/issues/958) +- power of two functions [\#656](https://github.com/kokkos/kokkos/issues/656) +- CUDA 8 has 64bit \_\_shfl [\#361](https://github.com/kokkos/kokkos/issues/361) +- Add TriBITS/CMake configure information about node types [\#243](https://github.com/kokkos/kokkos/issues/243) + +**Fixed bugs:** + +- CUDA atomic\_fetch\_sub for doubles is hitting CAS instead of intrinsic [\#1624](https://github.com/kokkos/kokkos/issues/1624) +- Bug: use of ballot on Volta [\#1612](https://github.com/kokkos/kokkos/issues/1612) +- Kokkos::deep\_copy memory access failures [\#1583](https://github.com/kokkos/kokkos/issues/1583) +- g++ -std option doubly set for cmake project [\#1548](https://github.com/kokkos/kokkos/issues/1548) +- ViewFill for 1D Views of larger 32bit entries fails [\#1541](https://github.com/kokkos/kokkos/issues/1541) +- CUDA Volta another warpsync bug [\#1520](https://github.com/kokkos/kokkos/issues/1520) +- triple\_nested\_parallelism fails with KOKKOS\_DEBUG and CUDA [\#1513](https://github.com/kokkos/kokkos/issues/1513) +- Jenkins errors in Kokkos\_SharedAlloc.cpp with debug build [\#1511](https://github.com/kokkos/kokkos/issues/1511) +- Kokkos::Sort out-of-bounds with empty bins [\#1504](https://github.com/kokkos/kokkos/issues/1504) +- Get rid of deprecated functions inside Kokkos [\#1484](https://github.com/kokkos/kokkos/issues/1484) +- get\_work\_partition casts int64\_t to int, causing a seg fault [\#1481](https://github.com/kokkos/kokkos/issues/1481) +- NVCC bug with \_\_device\_\_ on defaulted function [\#1470](https://github.com/kokkos/kokkos/issues/1470) +- CMake example broken with CUDA backend [\#1468](https://github.com/kokkos/kokkos/issues/1468) + + ## [2.6.00](https://github.com/kokkos/kokkos/tree/2.6.00) (2018-03-07) [Full Changelog](https://github.com/kokkos/kokkos/compare/2.5.00...2.6.00) diff --git a/lib/kokkos/CMakeLists.txt b/lib/kokkos/CMakeLists.txt index cd1f4ea981..9e5308f1c3 100644 --- a/lib/kokkos/CMakeLists.txt +++ b/lib/kokkos/CMakeLists.txt @@ -44,6 +44,7 @@ IF(NOT KOKKOS_HAS_TRILINOS) "${KOKKOS_SETTINGS} make -f ${KOKKOS_SRC_PATH}/cmake/Makefile.generate_cmake_settings CXX=${CMAKE_CXX_COMPILER} generate_build_settings") endif() include(${Kokkos_BINARY_DIR}/kokkos_generated_settings.cmake) + install(FILES ${Kokkos_BINARY_DIR}/kokkos_generated_settings.cmake DESTINATION lib/cmake/Kokkos) string(REPLACE " " ";" KOKKOS_TPL_INCLUDE_DIRS "${KOKKOS_GMAKE_TPL_INCLUDE_DIRS}") string(REPLACE " " ";" KOKKOS_TPL_LIBRARY_DIRS "${KOKKOS_GMAKE_TPL_LIBRARY_DIRS}") string(REPLACE " " ";" KOKKOS_TPL_LIBRARY_NAMES "${KOKKOS_GMAKE_TPL_LIBRARY_NAMES}") diff --git a/lib/kokkos/Makefile.kokkos b/lib/kokkos/Makefile.kokkos index a7bb63f190..41ebee51b0 100644 --- a/lib/kokkos/Makefile.kokkos +++ b/lib/kokkos/Makefile.kokkos @@ -21,8 +21,10 @@ KOKKOS_DEBUG ?= "no" KOKKOS_USE_TPLS ?= "" # Options: c++11,c++1z KOKKOS_CXX_STANDARD ?= "c++11" -# Options: aggressive_vectorization,disable_profiling,disable_deprecated_code +# Options: aggressive_vectorization,disable_profiling,disable_deprecated_code,enable_large_mem_tests KOKKOS_OPTIONS ?= "" +# Option for setting ETI path +KOKKOS_ETI_PATH ?= ${KOKKOS_PATH}/core/src/eti # Default settings specific options. # Options: force_uvm,use_ldg,rdc,enable_lambda @@ -51,10 +53,12 @@ KOKKOS_INTERNAL_DISABLE_PROFILING := $(call kokkos_has_string,$(KOKKOS_OPTIONS), KOKKOS_INTERNAL_DISABLE_DEPRECATED_CODE := $(call kokkos_has_string,$(KOKKOS_OPTIONS),disable_deprecated_code) KOKKOS_INTERNAL_DISABLE_DUALVIEW_MODIFY_CHECK := $(call kokkos_has_string,$(KOKKOS_OPTIONS),disable_dualview_modify_check) KOKKOS_INTERNAL_ENABLE_PROFILING_LOAD_PRINT := $(call kokkos_has_string,$(KOKKOS_OPTIONS),enable_profile_load_print) +KOKKOS_INTERNAL_ENABLE_LARGE_MEM_TESTS := $(call kokkos_has_string,$(KOKKOS_OPTIONS),enable_large_mem_tests) KOKKOS_INTERNAL_CUDA_USE_LDG := $(call kokkos_has_string,$(KOKKOS_CUDA_OPTIONS),use_ldg) KOKKOS_INTERNAL_CUDA_USE_UVM := $(call kokkos_has_string,$(KOKKOS_CUDA_OPTIONS),force_uvm) KOKKOS_INTERNAL_CUDA_USE_RELOC := $(call kokkos_has_string,$(KOKKOS_CUDA_OPTIONS),rdc) KOKKOS_INTERNAL_CUDA_USE_LAMBDA := $(call kokkos_has_string,$(KOKKOS_CUDA_OPTIONS),enable_lambda) +KOKKOS_INTERNAL_ENABLE_ETI := $(call kokkos_has_string,$(KOKKOS_OPTIONS),enable_eti) # Check for Kokkos Host Execution Spaces one of which must be on. @@ -78,7 +82,12 @@ KOKKOS_INTERNAL_USE_OPENMPTARGET := $(call kokkos_has_string,$(KOKKOS_DEVICES),O ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) KOKKOS_INTERNAL_NVCC_PATH := $(shell which nvcc) - CUDA_PATH ?= $(KOKKOS_INTERNAL_NVCC_PATH:/bin/nvcc=) + ifeq ($(origin CUDA_PATH), undefined) + CUDA_PATH = $(KOKKOS_INTERNAL_NVCC_PATH:/bin/nvcc=) + endif + ifeq ($(CUDA_PATH),) + CUDA_PATH = $(KOKKOS_INTERNAL_NVCC_PATH:/bin/nvcc=) + endif KOKKOS_INTERNAL_COMPILER_NVCC_VERSION := $(shell nvcc --version 2>&1 | grep release | cut -d' ' -f5 | cut -d',' -f1 | tr -d .) endif @@ -116,7 +125,7 @@ ifeq ($(KOKKOS_INTERNAL_COMPILER_HCC), 1) endif ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) - KOKKOS_INTERNAL_COMPILER_CLANG_VERSION := $(shell clang --version | grep version | cut -d ' ' -f3 | tr -d '.') + KOKKOS_INTERNAL_COMPILER_CLANG_VERSION := $(shell $(CXX) --version | grep version | cut -d ' ' -f3 | tr -d '.') ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) ifeq ($(shell test $(KOKKOS_INTERNAL_COMPILER_CLANG_VERSION) -lt 400; echo $$?),0) @@ -323,12 +332,13 @@ endif # Generating the list of Flags. -KOKKOS_CPPFLAGS = -I./ -I$(KOKKOS_PATH)/core/src -I$(KOKKOS_PATH)/containers/src -I$(KOKKOS_PATH)/algorithms/src +#CPPFLAGS is now unused +KOKKOS_CPPFLAGS = +KOKKOS_CXXFLAGS = -I./ -I$(KOKKOS_PATH)/core/src -I$(KOKKOS_PATH)/containers/src -I$(KOKKOS_PATH)/algorithms/src -I$(KOKKOS_ETI_PATH) KOKKOS_TPL_INCLUDE_DIRS = KOKKOS_TPL_LIBRARY_DIRS = KOKKOS_TPL_LIBRARY_NAMES = -KOKKOS_CXXFLAGS = ifeq ($(KOKKOS_INTERNAL_ENABLE_COMPILER_WARNINGS), 1) KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_COMPILER_WARNINGS) endif @@ -336,6 +346,8 @@ endif KOKKOS_LIBS = -ldl KOKKOS_TPL_LIBRARY_NAMES += dl KOKKOS_LDFLAGS = -L$(shell pwd) +# CXXLDFLAGS is used together with CXXFLAGS in a combined compile/link command +KOKKOS_CXXLDFLAGS = -L$(shell pwd) KOKKOS_LINK_FLAGS = KOKKOS_SRC = KOKKOS_HEADERS = @@ -362,7 +374,7 @@ tmp := $(call kokkos_append_header,'\#endif') tmp := $(call kokkos_append_header,"/* Execution Spaces */") ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) - tmp := $(call kokkos_append_header,"\#define KOKKOS_HAVE_CUDA") + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_CUDA") endif ifeq ($(KOKKOS_INTERNAL_USE_ROCM), 1) @@ -374,19 +386,19 @@ ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) - tmp := $(call kokkos_append_header,'\#define KOKKOS_HAVE_OPENMP') + tmp := $(call kokkos_append_header,'\#define KOKKOS_ENABLE_OPENMP') endif ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 1) - tmp := $(call kokkos_append_header,"\#define KOKKOS_HAVE_PTHREAD") + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_THREADS") endif ifeq ($(KOKKOS_INTERNAL_USE_QTHREADS), 1) - tmp := $(call kokkos_append_header,"\#define KOKKOS_HAVE_QTHREADS") + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_QTHREADS") endif ifeq ($(KOKKOS_INTERNAL_USE_SERIAL), 1) - tmp := $(call kokkos_append_header,"\#define KOKKOS_HAVE_SERIAL") + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_SERIAL") endif ifeq ($(KOKKOS_INTERNAL_USE_TM), 1) @@ -422,13 +434,13 @@ endif tmp := $(call kokkos_append_header,"/* General Settings */") ifeq ($(KOKKOS_INTERNAL_ENABLE_CXX11), 1) KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_CXX11_FLAG) - tmp := $(call kokkos_append_header,"\#define KOKKOS_HAVE_CXX11") + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_CXX11") endif ifeq ($(KOKKOS_INTERNAL_ENABLE_CXX1Z), 1) KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_CXX1Z_FLAG) - tmp := $(call kokkos_append_header,"\#define KOKKOS_HAVE_CXX11") - tmp := $(call kokkos_append_header,"\#define KOKKOS_HAVE_CXX1Z") + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_CXX11") + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_CXX1Z") endif ifeq ($(KOKKOS_INTERNAL_ENABLE_DEBUG), 1) @@ -437,9 +449,9 @@ ifeq ($(KOKKOS_INTERNAL_ENABLE_DEBUG), 1) endif KOKKOS_CXXFLAGS += -g - KOKKOS_LDFLAGS += -g -ldl + KOKKOS_LDFLAGS += -g tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK") - tmp := $(call kokkos_append_header,"\#define KOKKOS_HAVE_DEBUG") + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_DEBUG") ifeq ($(KOKKOS_INTERNAL_DISABLE_DUALVIEW_MODIFY_CHECK), 0) tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_DEBUG_DUALVIEW_MODIFY_CHECK") endif @@ -451,14 +463,15 @@ endif ifeq ($(KOKKOS_INTERNAL_USE_HWLOC), 1) ifneq ($(HWLOC_PATH),) - KOKKOS_CPPFLAGS += -I$(HWLOC_PATH)/include + KOKKOS_CXXFLAGS += -I$(HWLOC_PATH)/include KOKKOS_LDFLAGS += -L$(HWLOC_PATH)/lib + KOKKOS_CXXLDFLAGS += -L$(HWLOC_PATH)/lib KOKKOS_TPL_INCLUDE_DIRS += $(HWLOC_PATH)/include KOKKOS_TPL_LIBRARY_DIRS += $(HWLOC_PATH)/lib endif KOKKOS_LIBS += -lhwloc KOKKOS_TPL_LIBRARY_NAMES += hwloc - tmp := $(call kokkos_append_header,"\#define KOKKOS_HAVE_HWLOC") + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_HWLOC") endif ifeq ($(KOKKOS_INTERNAL_USE_LIBRT), 1) @@ -469,14 +482,15 @@ endif ifeq ($(KOKKOS_INTERNAL_USE_MEMKIND), 1) ifneq ($(MEMKIND_PATH),) - KOKKOS_CPPFLAGS += -I$(MEMKIND_PATH)/include + KOKKOS_CXXFLAGS += -I$(MEMKIND_PATH)/include KOKKOS_LDFLAGS += -L$(MEMKIND_PATH)/lib + KOKKOS_CXXLDFLAGS += -L$(MEMKIND_PATH)/lib KOKKOS_TPL_INCLUDE_DIRS += $(MEMKIND_PATH)/include KOKKOS_TPL_LIBRARY_DIRS += $(MEMKIND_PATH)/lib endif KOKKOS_LIBS += -lmemkind -lnuma KOKKOS_TPL_LIBRARY_NAMES += memkind numa - tmp := $(call kokkos_append_header,"\#define KOKKOS_HAVE_HBWSPACE") + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_HBWSPACE") endif ifeq ($(KOKKOS_INTERNAL_DISABLE_PROFILING), 0) @@ -486,6 +500,13 @@ endif ifeq ($(KOKKOS_INTERNAL_DISABLE_DEPRECATED_CODE), 0) tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_DEPRECATED_CODE") endif +ifeq ($(KOKKOS_INTERNAL_ENABLE_ETI), 1) + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_ETI") +endif + +ifeq ($(KOKKOS_INTERNAL_ENABLE_LARGE_MEM_TESTS), 1) + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_LARGE_MEM_TESTS") +endif tmp := $(call kokkos_append_header,"/* Optimization Settings */") @@ -497,27 +518,35 @@ tmp := $(call kokkos_append_header,"/* Cuda Settings */") ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) ifeq ($(KOKKOS_INTERNAL_CUDA_USE_LDG), 1) - tmp := $(call kokkos_append_header,"\#define KOKKOS_CUDA_USE_LDG_INTRINSIC") + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_CUDA_LDG_INTRINSIC") else ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) - tmp := $(call kokkos_append_header,"\#define KOKKOS_CUDA_USE_LDG_INTRINSIC") + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_CUDA_LDG_INTRINSIC") endif endif ifeq ($(KOKKOS_INTERNAL_CUDA_USE_UVM), 1) - tmp := $(call kokkos_append_header,"\#define KOKKOS_CUDA_USE_UVM") + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_CUDA_UVM") endif ifeq ($(KOKKOS_INTERNAL_CUDA_USE_RELOC), 1) - tmp := $(call kokkos_append_header,"\#define KOKKOS_CUDA_USE_RELOCATABLE_DEVICE_CODE") + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE") KOKKOS_CXXFLAGS += --relocatable-device-code=true KOKKOS_LDFLAGS += --relocatable-device-code=true endif + ifeq ($(KOKKOS_INTERNAL_COMPILER_NVCC), 1) + ifeq ($(shell test $(KOKKOS_INTERNAL_COMPILER_NVCC_VERSION) -ge 90; echo $$?),0) + # This diagnostic is just plain wrong in CUDA 9 + # See https://github.com/kokkos/kokkos/issues/1470 + KOKKOS_CXXFLAGS += -Xcudafe --diag_suppress=esa_on_defaulted_function_ignored + endif + endif + ifeq ($(KOKKOS_INTERNAL_CUDA_USE_LAMBDA), 1) ifeq ($(KOKKOS_INTERNAL_COMPILER_NVCC), 1) ifeq ($(shell test $(KOKKOS_INTERNAL_COMPILER_NVCC_VERSION) -gt 70; echo $$?),0) - tmp := $(call kokkos_append_header,"\#define KOKKOS_CUDA_USE_LAMBDA") + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_CUDA_LAMBDA") KOKKOS_CXXFLAGS += -expt-extended-lambda else $(warning Warning: Cuda Lambda support was requested but NVCC version is too low. This requires NVCC for Cuda version 7.5 or higher. Disabling Lambda support now.) @@ -525,12 +554,12 @@ ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) endif ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) - tmp := $(call kokkos_append_header,"\#define KOKKOS_CUDA_USE_LAMBDA") + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_CUDA_LAMBDA") endif endif ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) - tmp := $(call kokkos_append_header,"\#define KOKKOS_CUDA_CLANG_WORKAROUND") + tmp := $(call kokkos_append_header,"\#define KOKKOS_IMPL_CUDA_CLANG_WORKAROUND") endif endif @@ -907,10 +936,14 @@ ifeq ($(KOKKOS_INTERNAL_USE_ROCM), 1) KOKKOS_CXXFLAGS += $(shell $(ROCM_HCC_PATH)/bin/hcc-config --cxxflags) KOKKOS_LDFLAGS += $(shell $(ROCM_HCC_PATH)/bin/hcc-config --ldflags) -lhc_am -lm + KOKKOS_CXXLDFLAGS += $(shell $(ROCM_HCC_PATH)/bin/hcc-config --ldflags) -lhc_am -lm KOKKOS_TPL_LIBRARY_NAMES += hc_am m KOKKOS_LDFLAGS += $(KOKKOS_INTERNAL_ROCM_ARCH_FLAG) KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/ROCm/*.cpp) +ifeq ($(KOKKOS_INTERNAL_ENABLE_ETI), 1) + KOKKOS_SRC += $(wildcard $(KOKKOS_ETI_PATH)/ROCm/*.cpp) +endif KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/ROCm/*.hpp) endif @@ -937,10 +970,14 @@ KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/containers/src/impl/*.cpp) ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/Cuda/*.cpp) +ifeq ($(KOKKOS_INTERNAL_ENABLE_ETI), 1) + KOKKOS_SRC += $(wildcard $(KOKKOS_ETI_PATH)/Cuda/*.cpp) +endif KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/Cuda/*.hpp) ifneq ($(CUDA_PATH),) - KOKKOS_CPPFLAGS += -I$(CUDA_PATH)/include + KOKKOS_CXXFLAGS += -I$(CUDA_PATH)/include KOKKOS_LDFLAGS += -L$(CUDA_PATH)/lib64 + KOKKOS_CXXLDFLAGS += -L$(CUDA_PATH)/lib64 KOKKOS_TPL_INCLUDE_DIRS += $(CUDA_PATH)/include KOKKOS_TPL_LIBRARY_DIRS += $(CUDA_PATH)/lib64 ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) @@ -964,6 +1001,9 @@ endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/OpenMP/*.cpp) +ifeq ($(KOKKOS_INTERNAL_ENABLE_ETI), 1) + KOKKOS_SRC += $(wildcard $(KOKKOS_ETI_PATH)/OpenMP/*.cpp) +endif KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/OpenMP/*.hpp) ifeq ($(KOKKOS_INTERNAL_COMPILER_NVCC), 1) @@ -978,6 +1018,9 @@ endif ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 1) KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/Threads/*.cpp) +ifeq ($(KOKKOS_INTERNAL_ENABLE_ETI), 1) + KOKKOS_SRC += $(wildcard $(KOKKOS_ETI_PATH)/Threads/*.cpp) +endif KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/Threads/*.hpp) KOKKOS_LIBS += -lpthread KOKKOS_TPL_LIBRARY_NAMES += pthread @@ -987,8 +1030,9 @@ ifeq ($(KOKKOS_INTERNAL_USE_QTHREADS), 1) KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/Qthreads/*.cpp) KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/Qthreads/*.hpp) ifneq ($(QTHREADS_PATH),) - KOKKOS_CPPFLAGS += -I$(QTHREADS_PATH)/include + KOKKOS_CXXFLAGS += -I$(QTHREADS_PATH)/include KOKKOS_LDFLAGS += -L$(QTHREADS_PATH)/lib + KOKKOS_CXXLDFLAGS += -L$(QTHREADS_PATH)/lib KOKKOS_TPL_INCLUDE_DIRS += $(QTHREADS_PATH)/include KOKKOS_TPL_LIBRARY_DIRS += $(QTHREADS_PATH)/lib64 endif @@ -1011,6 +1055,11 @@ endif # Don't include Kokkos_Serial.cpp or Kokkos_Serial_Task.cpp if not using Serial # device to avoid a link warning. +ifeq ($(KOKKOS_INTERNAL_USE_SERIAL), 1) +ifeq ($(KOKKOS_INTERNAL_ENABLE_ETI), 1) + KOKKOS_SRC += $(wildcard $(KOKKOS_ETI_PATH)/Serial/*.cpp) +endif +endif ifneq ($(KOKKOS_INTERNAL_USE_SERIAL), 1) KOKKOS_SRC := $(filter-out $(KOKKOS_PATH)/core/src/impl/Kokkos_Serial.cpp,$(KOKKOS_SRC)) KOKKOS_SRC := $(filter-out $(KOKKOS_PATH)/core/src/impl/Kokkos_Serial_Task.cpp,$(KOKKOS_SRC)) diff --git a/lib/kokkos/Makefile.targets b/lib/kokkos/Makefile.targets index a63598577c..44da1e082a 100644 --- a/lib/kokkos/Makefile.targets +++ b/lib/kokkos/Makefile.targets @@ -31,6 +31,12 @@ Kokkos_SharedAlloc.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_ Kokkos_MemoryPool.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_MemoryPool.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_MemoryPool.cpp +ifeq ($(KOKKOS_INTERNAL_USE_SERIAL), 1) +ifeq ($(KOKKOS_INTERNAL_ENABLE_ETI), 1) + include $(KOKKOS_ETI_PATH)/Serial/Makefile.eti_Serial +endif +endif + ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) Kokkos_Cuda_Impl.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Cuda/Kokkos_Cuda_Impl.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Cuda/Kokkos_Cuda_Impl.cpp @@ -40,6 +46,9 @@ Kokkos_Cuda_Task.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Cuda/Kokkos_Cu $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Cuda/Kokkos_Cuda_Task.cpp Kokkos_Cuda_Locks.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Cuda/Kokkos_Cuda_Locks.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Cuda/Kokkos_Cuda_Locks.cpp +ifeq ($(KOKKOS_INTERNAL_ENABLE_ETI), 1) + include $(KOKKOS_ETI_PATH)/Cuda/Makefile.eti_Cuda +endif endif ifeq ($(KOKKOS_INTERNAL_USE_ROCM), 1) @@ -51,6 +60,9 @@ Kokkos_ROCm_Task.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/ROCm/Kokkos_RO $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Task.cpp Kokkos_ROCm_Impl.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Impl.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Impl.cpp +ifeq ($(KOKKOS_INTERNAL_ENABLE_ETI), 1) + include $(KOKKOS_ETI_PATH)/ROCm/Makefile.eti_ROCm +endif endif ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 1) @@ -58,6 +70,9 @@ Kokkos_ThreadsExec_base.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Threads $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Threads/Kokkos_ThreadsExec_base.cpp Kokkos_ThreadsExec.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Threads/Kokkos_ThreadsExec.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Threads/Kokkos_ThreadsExec.cpp +ifeq ($(KOKKOS_INTERNAL_ENABLE_ETI), 1) + include $(KOKKOS_ETI_PATH)/Threads/Makefile.eti_Threads +endif endif ifeq ($(KOKKOS_INTERNAL_USE_QTHREADS), 1) @@ -72,6 +87,9 @@ Kokkos_OpenMP_Exec.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/OpenMP/Kokko $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/OpenMP/Kokkos_OpenMP_Exec.cpp Kokkos_OpenMP_Task.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/OpenMP/Kokkos_OpenMP_Task.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/OpenMP/Kokkos_OpenMP_Task.cpp +ifeq ($(KOKKOS_INTERNAL_ENABLE_ETI), 1) + include $(KOKKOS_ETI_PATH)/OpenMP/Makefile.eti_OpenMP +endif endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) diff --git a/lib/kokkos/algorithms/src/Kokkos_Random.hpp b/lib/kokkos/algorithms/src/Kokkos_Random.hpp index 1c659e44a4..5f1d88bfff 100644 --- a/lib/kokkos/algorithms/src/Kokkos_Random.hpp +++ b/lib/kokkos/algorithms/src/Kokkos_Random.hpp @@ -702,7 +702,11 @@ namespace Kokkos { } Random_XorShift64_Pool(uint64_t seed) { num_states_ = 0; +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE init(seed,DeviceType::max_hardware_threads()); +#else + init(seed,DeviceType::impl_max_hardware_threads()); +#endif } Random_XorShift64_Pool(const Random_XorShift64_Pool& src): @@ -751,7 +755,11 @@ namespace Kokkos { KOKKOS_INLINE_FUNCTION Random_XorShift64 get_state() const { +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE const int i = DeviceType::hardware_thread_id();; +#else + const int i = DeviceType::impl_hardware_thread_id();; +#endif return Random_XorShift64(state_(i),i); } @@ -957,7 +965,11 @@ namespace Kokkos { inline Random_XorShift1024_Pool(uint64_t seed){ num_states_ = 0; +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE init(seed,DeviceType::max_hardware_threads()); +#else + init(seed,DeviceType::impl_max_hardware_threads()); +#endif } Random_XorShift1024_Pool(const Random_XorShift1024_Pool& src): @@ -1012,7 +1024,11 @@ namespace Kokkos { KOKKOS_INLINE_FUNCTION Random_XorShift1024 get_state() const { +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE const int i = DeviceType::hardware_thread_id(); +#else + const int i = DeviceType::impl_hardware_thread_id(); +#endif return Random_XorShift1024(state_,p_(i),i); }; diff --git a/lib/kokkos/algorithms/src/Kokkos_Sort.hpp b/lib/kokkos/algorithms/src/Kokkos_Sort.hpp index 888476045b..c952b1e541 100644 --- a/lib/kokkos/algorithms/src/Kokkos_Sort.hpp +++ b/lib/kokkos/algorithms/src/Kokkos_Sort.hpp @@ -288,6 +288,7 @@ public: Kokkos::abort("BinSort::sort: values range length != permutation vector length"); } +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE scratch_view_type sorted_values("Scratch", len, @@ -298,6 +299,18 @@ public: values.extent(5), values.extent(6), values.extent(7)); +#else + scratch_view_type + sorted_values("Scratch", + values.rank_dynamic > 0 ? len : KOKKOS_IMPL_CTOR_DEFAULT_ARG, + values.rank_dynamic > 1 ? values.extent(1) : KOKKOS_IMPL_CTOR_DEFAULT_ARG , + values.rank_dynamic > 2 ? values.extent(2) : KOKKOS_IMPL_CTOR_DEFAULT_ARG, + values.rank_dynamic > 3 ? values.extent(3) : KOKKOS_IMPL_CTOR_DEFAULT_ARG, + values.rank_dynamic > 4 ? values.extent(4) : KOKKOS_IMPL_CTOR_DEFAULT_ARG, + values.rank_dynamic > 5 ? values.extent(5) : KOKKOS_IMPL_CTOR_DEFAULT_ARG, + values.rank_dynamic > 6 ? values.extent(6) : KOKKOS_IMPL_CTOR_DEFAULT_ARG, + values.rank_dynamic > 7 ? values.extent(7) : KOKKOS_IMPL_CTOR_DEFAULT_ARG); +#endif { copy_permute_functor< scratch_view_type /* DstViewType */ @@ -362,8 +375,10 @@ public: KOKKOS_INLINE_FUNCTION void operator() (const bin_sort_bins_tag& tag, const int&i ) const { + auto bin_size = bin_count_const(i); + if (bin_size <= 1) return; + int upper_bound = bin_offsets(i)+bin_size; bool sorted = false; - int upper_bound = bin_offsets(i)+bin_count_const(i); while(!sorted) { sorted = true; int old_idx = sort_order(bin_offsets(i)); @@ -501,7 +516,7 @@ bool try_std_sort(ViewType view) { template struct min_max_functor { - typedef Kokkos::Experimental::MinMaxScalar minmax_scalar; + typedef Kokkos::MinMaxScalar minmax_scalar; ViewType view; min_max_functor(const ViewType& view_):view(view_) {} @@ -523,8 +538,8 @@ void sort( ViewType const & view , bool const always_use_kokkos_sort = false) } typedef BinOp1D CompType; - Kokkos::Experimental::MinMaxScalar result; - Kokkos::Experimental::MinMax reducer(result); + Kokkos::MinMaxScalar result; + Kokkos::MinMax reducer(result); parallel_reduce("Kokkos::Sort::FindExtent",Kokkos::RangePolicy(0,view.extent(0)), Impl::min_max_functor(view),reducer); if(result.min_val == result.max_val) return; @@ -542,8 +557,8 @@ void sort( ViewType view typedef Kokkos::RangePolicy range_policy ; typedef BinOp1D CompType; - Kokkos::Experimental::MinMaxScalar result; - Kokkos::Experimental::MinMax reducer(result); + Kokkos::MinMaxScalar result; + Kokkos::MinMax reducer(result); parallel_reduce("Kokkos::Sort::FindExtent", range_policy( begin , end ) , Impl::min_max_functor(view),reducer ); diff --git a/lib/kokkos/cmake/kokkos_build.cmake b/lib/kokkos/cmake/kokkos_build.cmake index 76d0655adb..94dd733ca3 100644 --- a/lib/kokkos/cmake/kokkos_build.cmake +++ b/lib/kokkos/cmake/kokkos_build.cmake @@ -76,7 +76,11 @@ IF(KOKKOS_SEPARATE_LIBS) ) foreach(lib IN LISTS KOKKOS_TPL_LIBRARY_NAMES) - find_library(LIB_${lib} ${lib} PATHS ${KOKKOS_TPL_LIBRARY_DIRS}) + if ("${lib}" STREQUAL "cuda") + set(LIB_cuda "-lcuda") + else() + find_library(LIB_${lib} ${lib} PATHS ${KOKKOS_TPL_LIBRARY_DIRS}) + endif() target_link_libraries(kokkoscore PUBLIC ${LIB_${lib}}) endforeach() @@ -154,7 +158,11 @@ ELSE() ) foreach(lib IN LISTS KOKKOS_TPL_LIBRARY_NAMES) - find_library(LIB_${lib} ${lib} PATHS ${KOKKOS_TPL_LIBRARY_DIRS}) + if ("${lib}" STREQUAL "cuda") + set(LIB_cuda "-lcuda") + else() + find_library(LIB_${lib} ${lib} PATHS ${KOKKOS_TPL_LIBRARY_DIRS}) + endif() target_link_libraries(kokkos PUBLIC ${LIB_${lib}}) endforeach() diff --git a/lib/kokkos/cmake/kokkos_options.cmake b/lib/kokkos/cmake/kokkos_options.cmake index 25eb8e86ce..80a091bb98 100644 --- a/lib/kokkos/cmake/kokkos_options.cmake +++ b/lib/kokkos/cmake/kokkos_options.cmake @@ -31,6 +31,7 @@ list(APPEND KOKKOS_INTERNAL_ENABLE_OPTIONS_LIST Profiling_Load_Print Aggressive_Vectorization Deprecated_Code + Explicit_Instantiation ) #------------------------------------------------------------------------------- @@ -40,6 +41,7 @@ list(APPEND KOKKOS_INTERNAL_ENABLE_OPTIONS_LIST foreach(opt ${KOKKOS_INTERNAL_ENABLE_OPTIONS_LIST}) string(TOUPPER ${opt} OPT ) IF(DEFINED Kokkos_ENABLE_${opt}) + MESSAGE("Kokkos_ENABLE_${opt} is defined!") IF(DEFINED KOKKOS_ENABLE_${OPT}) IF(NOT ("${KOKKOS_ENABLE_${OPT}}" STREQUAL "${Kokkos_ENABLE_${opt}}")) IF(DEFINED KOKKOS_ENABLE_${OPT}_INTERNAL) @@ -57,18 +59,16 @@ foreach(opt ${KOKKOS_INTERNAL_ENABLE_OPTIONS_LIST}) ENDIF() ELSE() SET(KOKKOS_INTERNAL_ENABLE_${OPT}_DEFAULT ${Kokkos_ENABLE_${opt}}) + MESSAGE("set KOKKOS_INTERNAL_ENABLE_${OPT}_DEFAULT!") ENDIF() ENDIF() endforeach() +IF(DEFINED Kokkos_ARCH) + MESSAGE(FATAL_ERROR "Defined Kokkos_ARCH, use KOKKOS_ARCH instead!") +ENDIF() IF(DEFINED Kokkos_Arch) - IF(DEFINED KOKKOS_ARCH) - IF(NOT (${KOKKOS_ARCH} STREQUAL "${Kokkos_Arch}")) - MESSAGE(FATAL_ERROR "Defined both Kokkos_Arch and KOKKOS_ARCH and they differ!") - ENDIF() - ELSE() - SET(KOKKOS_ARCH ${Kokkos_Arch}) - ENDIF() + MESSAGE(FATAL_ERROR "Defined Kokkos_Arch, use KOKKOS_ARCH instead!") ENDIF() #------------------------------------------------------------------------------- @@ -103,6 +103,8 @@ list(APPEND KOKKOS_ARCH_LIST Maxwell53 # (GPU) NVIDIA Maxwell generation CC 5.3 Pascal60 # (GPU) NVIDIA Pascal generation CC 6.0 Pascal61 # (GPU) NVIDIA Pascal generation CC 6.1 + Volta70 # (GPU) NVIDIA Volta generation CC 7.0 + Volta72 # (GPU) NVIDIA Volta generation CC 7.2 ) # List of possible device architectures. @@ -267,6 +269,8 @@ set(KOKKOS_ENABLE_PROFILING_LOAD_PRINT ${KOKKOS_INTERNAL_ENABLE_PROFILING_LOAD_P set_kokkos_default_default(DEPRECATED_CODE ON) set(KOKKOS_ENABLE_DEPRECATED_CODE ${KOKKOS_INTERNAL_ENABLE_DEPRECATED_CODE_DEFAULT} CACHE BOOL "Enable deprecated code.") +set_kokkos_default_default(EXPLICIT_INSTANTIATION ON) +set(KOKKOS_ENABLE_EXPLICIT_INSTANTIATION ${KOKKOS_INTERNAL_ENABLE_EXPLICIT_INSTANTIATION_DEFAULT} CACHE BOOL "Enable explicit template instantiation.") #------------------------------------------------------------------------------- #------------------------------- KOKKOS_USE_TPLS ------------------------------- diff --git a/lib/kokkos/cmake/kokkos_settings.cmake b/lib/kokkos/cmake/kokkos_settings.cmake index 579fab0c95..21c9d75a96 100644 --- a/lib/kokkos/cmake/kokkos_settings.cmake +++ b/lib/kokkos/cmake/kokkos_settings.cmake @@ -74,6 +74,9 @@ endif() if(${KOKKOS_ENABLE_PROFILING_LOAD_PRINT}) list(APPEND KOKKOS_OPTIONSl enable_profile_load_print) endif() +if(${KOKKOS_ENABLE_EXPLICIT_INSTANTIATION}) + list(APPEND KOKKOS_OPTIONSl enable_eti) +endif() # List needs to be comma-delimitted string(REPLACE ";" "," KOKKOS_GMAKE_OPTIONS "${KOKKOS_OPTIONSl}") @@ -158,6 +161,19 @@ if (NOT "${KOKKOS_INTERNAL_ADDTOPATH}" STREQUAL "") set(KOKKOS_SETTINGS ${KOKKOS_SETTINGS} "PATH=\"${KOKKOS_INTERNAL_ADDTOPATH}:$ENV{PATH}\"") endif() +if (CMAKE_CXX_STANDARD) + if (CMAKE_CXX_STANDARD STREQUAL "98") + message(FATAL_ERROR "Kokkos requires C++11 or newer!") + endif() + set(KOKKOS_CXX_STANDARD "c++${CMAKE_CXX_STANDARD}") + if (CMAKE_CXX_EXTENSIONS) + if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + set(KOKKOS_CXX_STANDARD "gnu++${CMAKE_CXX_STANDARD}") + endif() + endif() + set(KOKKOS_SETTINGS ${KOKKOS_SETTINGS} "KOKKOS_CXX_STANDARD=\"${KOKKOS_CXX_STANDARD}\"") +endif() + # Final form that gets passed to make set(KOKKOS_SETTINGS env ${KOKKOS_SETTINGS}) diff --git a/lib/kokkos/cmake/tribits.cmake b/lib/kokkos/cmake/tribits.cmake index 1b5a7b2adb..f8eebc29f8 100644 --- a/lib/kokkos/cmake/tribits.cmake +++ b/lib/kokkos/cmake/tribits.cmake @@ -300,7 +300,9 @@ FUNCTION(TRIBITS_ADD_EXECUTABLE EXE_NAME) ENDIF() ENDFUNCTION() -ADD_CUSTOM_TARGET(check COMMAND ${CMAKE_CTEST_COMMAND} -VV -C ${CMAKE_CFG_INTDIR}) +IF(NOT TARGET check) + ADD_CUSTOM_TARGET(check COMMAND ${CMAKE_CTEST_COMMAND} -VV -C ${CMAKE_CFG_INTDIR}) +ENDIF() FUNCTION(TRIBITS_ADD_TEST) ENDFUNCTION() diff --git a/lib/kokkos/config/test_all_sandia b/lib/kokkos/config/test_all_sandia index 28b4a64b10..15e6049afb 100755 --- a/lib/kokkos/config/test_all_sandia +++ b/lib/kokkos/config/test_all_sandia @@ -22,30 +22,38 @@ if [[ "$HOSTNAME" =~ .*bowman.* ]]; then module load git fi -if [[ "$HOSTNAME" =~ n.* ]]; then # Warning: very generic name +if [[ "$HOSTNAME" == n* ]]; then # Warning: very generic name if [[ "$PROCESSOR" = "aarch64" ]]; then MACHINE=sullivan module load git fi fi -if [[ "$HOSTNAME" =~ node.* ]]; then # Warning: very generic name +if [[ "$HOSTNAME" == node* ]]; then # Warning: very generic name if [[ "$MACHINE" = "" ]]; then MACHINE=shepard module load git fi fi -if [[ "$HOSTNAME" =~ apollo ]]; then +if [[ "$HOSTNAME" == apollo\.* ]]; then MACHINE=apollo module load git fi -if [[ "$HOSTNAME" =~ sullivan ]]; then +if [[ "$HOSTNAME" == sullivan ]]; then MACHINE=sullivan module load git fi +if [[ "$HOSTNAME" == mayer\.* ]]; then + MACHINE=mayer +# module load git +fi +if [[ "$HOSTNAME" == cn* ]]; then # Warning: very generic name + MACHINE=mayer +fi + if [ ! -z "$SEMS_MODULEFILES_ROOT" ]; then if [[ "$MACHINE" = "" ]]; then MACHINE=sems @@ -83,7 +91,7 @@ CUSTOM_BUILD_LIST="" QTHREADS_PATH="" DRYRUN=False BUILD_ONLY=False -declare -i NUM_JOBS_TO_RUN_IN_PARALLEL=3 +declare -i NUM_JOBS_TO_RUN_IN_PARALLEL=1 TEST_SCRIPT=False SKIP_HWLOC=False SPOT_CHECK=False @@ -142,6 +150,9 @@ do --with-cuda-options*) KOKKOS_CUDA_OPTIONS="--with-cuda-options=${key#*=}" ;; + --with-options*) + KOKKOS_OPTIONS="--with-options=enable_large_mem_tests,${key#*=}" + ;; --cxxflags-extra*) CXX_FLAGS_EXTRA="${key#*=}" ;; @@ -247,7 +258,7 @@ elif [ "$MACHINE" = "white" ]; then ARCH_FLAG="--arch=Power8,Kepler37" fi - NUM_JOBS_TO_RUN_IN_PARALLEL=2 + NUM_JOBS_TO_RUN_IN_PARALLEL=1 elif [ "$MACHINE" = "bowman" ]; then source /etc/profile.d/modules.sh @@ -268,7 +279,7 @@ elif [ "$MACHINE" = "bowman" ]; then ARCH_FLAG="--arch=KNL" fi - NUM_JOBS_TO_RUN_IN_PARALLEL=2 + NUM_JOBS_TO_RUN_IN_PARALLEL=1 elif [ "$MACHINE" = "sullivan" ]; then source /etc/profile.d/modules.sh @@ -284,7 +295,24 @@ elif [ "$MACHINE" = "sullivan" ]; then ARCH_FLAG="--arch=ARMv8-ThunderX" fi - NUM_JOBS_TO_RUN_IN_PARALLEL=2 + NUM_JOBS_TO_RUN_IN_PARALLEL=1 + +elif [ "$MACHINE" = "mayer" ]; then + SKIP_HWLOC=True + export SLURM_TASKS_PER_NODE=96 + + BASE_MODULE_LIST="/" + ARM_MODULE_LIST="/" + + # Format: (compiler module-list build-list exe-name warning-flag) + COMPILERS=("gcc/7.2.0 $BASE_MODULE_LIST $ARM_GCC_BUILD_LIST g++ $GCC_WARNING_FLAGS" + "arm/1.4.0 $ARM_MODULE_LIST $ARM_GCC_BUILD_LIST armclang++ $CLANG_WARNING_FLAGS") + + if [ -z "$ARCH_FLAG" ]; then + ARCH_FLAG="--arch=ARMv8-TX2" + fi + + NUM_JOBS_TO_RUN_IN_PARALLEL=1 elif [ "$MACHINE" = "shepard" ]; then source /etc/profile.d/modules.sh @@ -303,7 +331,7 @@ elif [ "$MACHINE" = "shepard" ]; then if [ -z "$ARCH_FLAG" ]; then ARCH_FLAG="--arch=HSW" fi - NUM_JOBS_TO_RUN_IN_PARALLEL=2 + NUM_JOBS_TO_RUN_IN_PARALLEL=1 elif [ "$MACHINE" = "apollo" ]; then source /projects/sems/modulefiles/utils/sems-modules-init.sh @@ -331,7 +359,7 @@ elif [ "$MACHINE" = "apollo" ]; then if [ "$SPOT_CHECK" = "True" ]; then # Format: (compiler module-list build-list exe-name warning-flag) COMPILERS=("gcc/4.8.4 $BASE_MODULE_LIST "OpenMP,Pthread" g++ $GCC_WARNING_FLAGS" - "gcc/5.1.0 $BASE_MODULE_LIST "Serial" g++ $GCC_WARNING_FLAGS" + "gcc/5.3.0 $BASE_MODULE_LIST "Serial" g++ $GCC_WARNING_FLAGS" "intel/16.0.1 $BASE_MODULE_LIST "OpenMP" icpc $INTEL_WARNING_FLAGS" "clang/3.9.0 $BASE_MODULE_LIST "Pthread_Serial" clang++ $CLANG_WARNING_FLAGS" "clang/6.0 $CLANG_MODULE_LIST "Cuda_Pthread" clang++ $CUDA_WARNING_FLAGS" @@ -358,7 +386,7 @@ elif [ "$MACHINE" = "apollo" ]; then ARCH_FLAG="--arch=SNB,Volta70" fi - NUM_JOBS_TO_RUN_IN_PARALLEL=2 + NUM_JOBS_TO_RUN_IN_PARALLEL=1 else echo "Unhandled machine $MACHINE" >&2 @@ -627,6 +655,11 @@ single_build_and_test() { if [[ "$KOKKOS_CUDA_OPTIONS" != "" ]]; then local extra_args="$extra_args $KOKKOS_CUDA_OPTIONS" fi + if [[ "$KOKKOS_OPTIONS" != "" ]]; then + local extra_args="$extra_args $KOKKOS_OPTIONS" + else + local extra_args="$extra_args --with-options=enable_large_mem_tests" + fi echo " Starting job $desc" @@ -642,7 +675,7 @@ single_build_and_test() { else run_cmd ${KOKKOS_PATH}/generate_makefile.bash --with-devices=$build $ARCH_FLAG --compiler=$(which $compiler_exe) --cxxflags=\"$cxxflags\" --ldflags=\"$ldflags\" $extra_args &>> ${desc}.configure.log || { report_and_log_test_result 1 ${desc} configure && return 0; } local -i build_start_time=$(date +%s) - run_cmd make -j 32 build-test >& ${desc}.build.log || { report_and_log_test_result 1 ${desc} build && return 0; } + run_cmd make -j 48 build-test >& ${desc}.build.log || { report_and_log_test_result 1 ${desc} build && return 0; } local -i build_end_time=$(date +%s) comment="build_time=$(($build_end_time-$build_start_time))" @@ -682,6 +715,9 @@ run_in_background() { if [[ "$compiler" == cuda* ]]; then num_jobs=1 fi + if [[ "$compiler" == clang ]]; then + num_jobs=1 + fi # fi wait_for_jobs $num_jobs diff --git a/lib/kokkos/containers/performance_tests/TestCuda.cpp b/lib/kokkos/containers/performance_tests/TestCuda.cpp index 682f3f52f7..351fb86df3 100644 --- a/lib/kokkos/containers/performance_tests/TestCuda.cpp +++ b/lib/kokkos/containers/performance_tests/TestCuda.cpp @@ -70,13 +70,12 @@ protected: static void SetUpTestCase() { std::cout << std::setprecision(5) << std::scientific; - Kokkos::HostSpace::execution_space::initialize(); - Kokkos::Cuda::initialize( Kokkos::Cuda::SelectDevice(0) ); + Kokkos::InitArguments args(-1, -1, 0); + Kokkos::initialize(args); } static void TearDownTestCase() { - Kokkos::Cuda::finalize(); - Kokkos::HostSpace::execution_space::finalize(); + Kokkos::finalize(); } }; diff --git a/lib/kokkos/containers/performance_tests/TestOpenMP.cpp b/lib/kokkos/containers/performance_tests/TestOpenMP.cpp index 66d497552e..e6218074ea 100644 --- a/lib/kokkos/containers/performance_tests/TestOpenMP.cpp +++ b/lib/kokkos/containers/performance_tests/TestOpenMP.cpp @@ -70,13 +70,13 @@ protected: { std::cout << std::setprecision(5) << std::scientific; - Kokkos::OpenMP::initialize(); + Kokkos::initialize(); Kokkos::OpenMP::print_configuration( std::cout ); } static void TearDownTestCase() { - Kokkos::OpenMP::finalize(); + Kokkos::finalize(); } }; diff --git a/lib/kokkos/containers/performance_tests/TestThreads.cpp b/lib/kokkos/containers/performance_tests/TestThreads.cpp index a951a5ca56..6a02e67b25 100644 --- a/lib/kokkos/containers/performance_tests/TestThreads.cpp +++ b/lib/kokkos/containers/performance_tests/TestThreads.cpp @@ -81,12 +81,12 @@ protected: std::cout << "Threads: " << num_threads << std::endl; - Kokkos::Threads::initialize( num_threads ); + Kokkos::initialize( Kokkos::InitArguments(num_threads) ); } static void TearDownTestCase() { - Kokkos::Threads::finalize(); + Kokkos::finalize(); } }; diff --git a/lib/kokkos/containers/src/Kokkos_Bitset.hpp b/lib/kokkos/containers/src/Kokkos_Bitset.hpp index c48058d75d..bfe8080f3b 100644 --- a/lib/kokkos/containers/src/Kokkos_Bitset.hpp +++ b/lib/kokkos/containers/src/Kokkos_Bitset.hpp @@ -271,7 +271,7 @@ private: block = Impl::rotate_right(block, offset); return ((( !(scan_direction & BIT_SCAN_REVERSE) ? Impl::bit_scan_forward(block) : - Impl::bit_scan_reverse(block) + ::Kokkos::log2(block) ) + offset ) & block_mask ) + block_start; diff --git a/lib/kokkos/containers/src/Kokkos_DualView.hpp b/lib/kokkos/containers/src/Kokkos_DualView.hpp index 74fe4418f8..548e96d251 100644 --- a/lib/kokkos/containers/src/Kokkos_DualView.hpp +++ b/lib/kokkos/containers/src/Kokkos_DualView.hpp @@ -209,14 +209,14 @@ public: /// the first three integer arguments will be nonzero, and you may /// omit the integer arguments that follow. DualView (const std::string& label, - const size_t n0 = 0, - const size_t n1 = 0, - const size_t n2 = 0, - const size_t n3 = 0, - const size_t n4 = 0, - const size_t n5 = 0, - const size_t n6 = 0, - const size_t n7 = 0) + const size_t n0 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t n1 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t n2 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t n3 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t n4 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t n5 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t n6 = KOKKOS_IMPL_CTOR_DEFAULT_ARG, + const size_t n7 = KOKKOS_IMPL_CTOR_DEFAULT_ARG) : d_view (label, n0, n1, n2, n3, n4, n5, n6, n7) , h_view (create_mirror_view (d_view)) // without UVM, host View mirrors , modified_device (View ("DualView::modified_device")) @@ -464,14 +464,14 @@ public: /// This discards any existing contents of the objects, and resets /// their modified flags. It does not copy the old contents /// of either View into the new View objects. - void realloc( const size_t n0 = 0 , - const size_t n1 = 0 , - const size_t n2 = 0 , - const size_t n3 = 0 , - const size_t n4 = 0 , - const size_t n5 = 0 , - const size_t n6 = 0 , - const size_t n7 = 0 ) { + void realloc( const size_t n0 = KOKKOS_IMPL_CTOR_DEFAULT_ARG , + const size_t n1 = KOKKOS_IMPL_CTOR_DEFAULT_ARG , + const size_t n2 = KOKKOS_IMPL_CTOR_DEFAULT_ARG , + const size_t n3 = KOKKOS_IMPL_CTOR_DEFAULT_ARG , + const size_t n4 = KOKKOS_IMPL_CTOR_DEFAULT_ARG , + const size_t n5 = KOKKOS_IMPL_CTOR_DEFAULT_ARG , + const size_t n6 = KOKKOS_IMPL_CTOR_DEFAULT_ARG , + const size_t n7 = KOKKOS_IMPL_CTOR_DEFAULT_ARG ) { ::Kokkos::realloc(d_view,n0,n1,n2,n3,n4,n5,n6,n7); h_view = create_mirror_view( d_view ); @@ -483,14 +483,14 @@ public: /// /// This method only copies the old contents into the new View /// objects for the device which was last marked as modified. - void resize( const size_t n0 = 0 , - const size_t n1 = 0 , - const size_t n2 = 0 , - const size_t n3 = 0 , - const size_t n4 = 0 , - const size_t n5 = 0 , - const size_t n6 = 0 , - const size_t n7 = 0 ) { + void resize( const size_t n0 = KOKKOS_IMPL_CTOR_DEFAULT_ARG , + const size_t n1 = KOKKOS_IMPL_CTOR_DEFAULT_ARG , + const size_t n2 = KOKKOS_IMPL_CTOR_DEFAULT_ARG , + const size_t n3 = KOKKOS_IMPL_CTOR_DEFAULT_ARG , + const size_t n4 = KOKKOS_IMPL_CTOR_DEFAULT_ARG , + const size_t n5 = KOKKOS_IMPL_CTOR_DEFAULT_ARG , + const size_t n6 = KOKKOS_IMPL_CTOR_DEFAULT_ARG , + const size_t n7 = KOKKOS_IMPL_CTOR_DEFAULT_ARG ) { if(modified_device() >= modified_host()) { /* Resize on Device */ ::Kokkos::resize(d_view,n0,n1,n2,n3,n4,n5,n6,n7); @@ -533,10 +533,21 @@ public: //! \name Methods for getting capacity, stride, or dimension(s). //@{ +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE //! The allocation size (same as Kokkos::View::capacity). size_t capacity() const { return d_view.span(); } +#endif + + //! The allocation size (same as Kokkos::View::span). + KOKKOS_INLINE_FUNCTION constexpr size_t span() const { + return d_view.span(); + } + + KOKKOS_INLINE_FUNCTION bool span_is_contiguous() const { + return d_view.span_is_contiguous(); + } //! Get stride(s) for each dimension. template< typename iType> @@ -556,6 +567,11 @@ public: extent_int( const iType & r ) const { return static_cast(d_view.extent(r)); } +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE + /* Deprecate all 'dimension' functions in favor of + * ISO/C++ vocabulary 'extent'. + */ + /* \brief return size of dimension 0 */ size_t dimension_0() const {return d_view.extent(0);} /* \brief return size of dimension 1 */ @@ -572,6 +588,7 @@ public: size_t dimension_6() const {return d_view.extent(6);} /* \brief return size of dimension 7 */ size_t dimension_7() const {return d_view.extent(7);} +#endif //@} }; diff --git a/lib/kokkos/containers/src/Kokkos_DynRankView.hpp b/lib/kokkos/containers/src/Kokkos_DynRankView.hpp index ccf53b3d50..b30009a999 100644 --- a/lib/kokkos/containers/src/Kokkos_DynRankView.hpp +++ b/lib/kokkos/containers/src/Kokkos_DynRankView.hpp @@ -64,7 +64,7 @@ namespace Impl { template struct DynRankDimTraits { - enum : size_t{unspecified = ~size_t(0)}; + enum : size_t{unspecified =KOKKOS_INVALID_INDEX}; // Compute the rank of the view from the nonzero dimension arguments. KOKKOS_INLINE_FUNCTION @@ -192,14 +192,14 @@ struct DynRankDimTraits { static typename std::enable_if< (std::is_same::value || std::is_same::value) && std::is_integral::value , Layout >::type reconstructLayout( const Layout& layout , iType dynrank ) { - return Layout( dynrank > 0 ? layout.dimension[0] : ~size_t(0) - , dynrank > 1 ? layout.dimension[1] : ~size_t(0) - , dynrank > 2 ? layout.dimension[2] : ~size_t(0) - , dynrank > 3 ? layout.dimension[3] : ~size_t(0) - , dynrank > 4 ? layout.dimension[4] : ~size_t(0) - , dynrank > 5 ? layout.dimension[5] : ~size_t(0) - , dynrank > 6 ? layout.dimension[6] : ~size_t(0) - , dynrank > 7 ? layout.dimension[7] : ~size_t(0) + return Layout( dynrank > 0 ? layout.dimension[0] :KOKKOS_INVALID_INDEX + , dynrank > 1 ? layout.dimension[1] :KOKKOS_INVALID_INDEX + , dynrank > 2 ? layout.dimension[2] :KOKKOS_INVALID_INDEX + , dynrank > 3 ? layout.dimension[3] :KOKKOS_INVALID_INDEX + , dynrank > 4 ? layout.dimension[4] :KOKKOS_INVALID_INDEX + , dynrank > 5 ? layout.dimension[5] :KOKKOS_INVALID_INDEX + , dynrank > 6 ? layout.dimension[6] :KOKKOS_INVALID_INDEX + , dynrank > 7 ? layout.dimension[7] :KOKKOS_INVALID_INDEX ); } @@ -209,21 +209,21 @@ struct DynRankDimTraits { static typename std::enable_if< (std::is_same::value) && std::is_integral::value , Layout >::type reconstructLayout( const Layout& layout , iType dynrank ) { - return Layout( dynrank > 0 ? layout.dimension[0] : ~size_t(0) + return Layout( dynrank > 0 ? layout.dimension[0] :KOKKOS_INVALID_INDEX , dynrank > 0 ? layout.stride[0] : (0) - , dynrank > 1 ? layout.dimension[1] : ~size_t(0) + , dynrank > 1 ? layout.dimension[1] :KOKKOS_INVALID_INDEX , dynrank > 1 ? layout.stride[1] : (0) - , dynrank > 2 ? layout.dimension[2] : ~size_t(0) + , dynrank > 2 ? layout.dimension[2] :KOKKOS_INVALID_INDEX , dynrank > 2 ? layout.stride[2] : (0) - , dynrank > 3 ? layout.dimension[3] : ~size_t(0) + , dynrank > 3 ? layout.dimension[3] :KOKKOS_INVALID_INDEX , dynrank > 3 ? layout.stride[3] : (0) - , dynrank > 4 ? layout.dimension[4] : ~size_t(0) + , dynrank > 4 ? layout.dimension[4] :KOKKOS_INVALID_INDEX , dynrank > 4 ? layout.stride[4] : (0) - , dynrank > 5 ? layout.dimension[5] : ~size_t(0) + , dynrank > 5 ? layout.dimension[5] :KOKKOS_INVALID_INDEX , dynrank > 5 ? layout.stride[5] : (0) - , dynrank > 6 ? layout.dimension[6] : ~size_t(0) + , dynrank > 6 ? layout.dimension[6] :KOKKOS_INVALID_INDEX , dynrank > 6 ? layout.stride[6] : (0) - , dynrank > 7 ? layout.dimension[7] : ~size_t(0) + , dynrank > 7 ? layout.dimension[7] :KOKKOS_INVALID_INDEX , dynrank > 7 ? layout.stride[7] : (0) ); } @@ -501,6 +501,7 @@ public: * ISO/C++ vocabulary 'extent'. */ +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE template< typename iType > KOKKOS_INLINE_FUNCTION constexpr typename std::enable_if< std::is_integral::value , size_t >::type @@ -514,17 +515,18 @@ public: KOKKOS_INLINE_FUNCTION constexpr size_t dimension_5() const { return m_map.dimension_5(); } KOKKOS_INLINE_FUNCTION constexpr size_t dimension_6() const { return m_map.dimension_6(); } KOKKOS_INLINE_FUNCTION constexpr size_t dimension_7() const { return m_map.dimension_7(); } +#endif //---------------------------------------- - KOKKOS_INLINE_FUNCTION constexpr size_t size() const { return m_map.dimension_0() * - m_map.dimension_1() * - m_map.dimension_2() * - m_map.dimension_3() * - m_map.dimension_4() * - m_map.dimension_5() * - m_map.dimension_6() * - m_map.dimension_7(); } + KOKKOS_INLINE_FUNCTION constexpr size_t size() const { return m_map.extent(0) * + m_map.extent(1) * + m_map.extent(2) * + m_map.extent(3) * + m_map.extent(4) * + m_map.extent(5) * + m_map.extent(6) * + m_map.extent(7); } KOKKOS_INLINE_FUNCTION constexpr size_t stride_0() const { return m_map.stride_0(); } KOKKOS_INLINE_FUNCTION constexpr size_t stride_1() const { return m_map.stride_1(); } @@ -547,15 +549,19 @@ public: enum { reference_type_is_lvalue_reference = std::is_lvalue_reference< reference_type >::value }; KOKKOS_INLINE_FUNCTION constexpr size_t span() const { return m_map.span(); } +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE // Deprecated, use 'span()' instead KOKKOS_INLINE_FUNCTION constexpr size_t capacity() const { return m_map.span(); } +#endif KOKKOS_INLINE_FUNCTION constexpr bool span_is_contiguous() const { return m_map.span_is_contiguous(); } KOKKOS_INLINE_FUNCTION constexpr pointer_type data() const { return m_map.data(); } +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE // Deprecated, use 'span_is_contigous()' instead KOKKOS_INLINE_FUNCTION constexpr bool is_contiguous() const { return m_map.span_is_contiguous(); } // Deprecated, use 'data()' instead KOKKOS_INLINE_FUNCTION constexpr pointer_type ptr_on_device() const { return m_map.data(); } +#endif //---------------------------------------- // Allow specializations to query their specialized map @@ -998,7 +1004,7 @@ public: //---------------------------------------- // Allocation according to allocation properties and array layout - // unused arg_layout dimensions must be set to ~size_t(0) so that rank deduction can properly take place + // unused arg_layout dimensions must be set toKOKKOS_INVALID_INDEX so that rank deduction can properly take place template< class ... P > explicit inline DynRankView( const Kokkos::Impl::ViewCtorProp< P ... > & arg_prop @@ -1038,7 +1044,12 @@ public: , "View allocation constructor requires managed memory" ); if ( alloc_prop::initialize && - ! alloc_prop::execution_space::is_initialized() ) { +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE + ! alloc_prop::execution_space::is_initialized() +#else + ! alloc_prop::execution_space::impl_is_initialized() +#endif + ) { // If initializing view data then // the execution space must be initialized. Kokkos::Impl::throw_runtime_exception("Constructing DynRankView and initializing data with uninitialized execution space"); @@ -1104,14 +1115,14 @@ public: DynRankView( const Kokkos::Impl::ViewCtorProp< P ... > & arg_prop , typename std::enable_if< ! Kokkos::Impl::ViewCtorProp< P... >::has_pointer , size_t - >::type const arg_N0 = ~size_t(0) - , const size_t arg_N1 = ~size_t(0) - , const size_t arg_N2 = ~size_t(0) - , const size_t arg_N3 = ~size_t(0) - , const size_t arg_N4 = ~size_t(0) - , const size_t arg_N5 = ~size_t(0) - , const size_t arg_N6 = ~size_t(0) - , const size_t arg_N7 = ~size_t(0) + >::type const arg_N0 =KOKKOS_INVALID_INDEX + , const size_t arg_N1 =KOKKOS_INVALID_INDEX + , const size_t arg_N2 =KOKKOS_INVALID_INDEX + , const size_t arg_N3 =KOKKOS_INVALID_INDEX + , const size_t arg_N4 =KOKKOS_INVALID_INDEX + , const size_t arg_N5 =KOKKOS_INVALID_INDEX + , const size_t arg_N6 =KOKKOS_INVALID_INDEX + , const size_t arg_N7 =KOKKOS_INVALID_INDEX ) : DynRankView( arg_prop , typename traits::array_layout @@ -1124,14 +1135,14 @@ public: DynRankView( const Kokkos::Impl::ViewCtorProp< P ... > & arg_prop , typename std::enable_if< Kokkos::Impl::ViewCtorProp< P... >::has_pointer , size_t - >::type const arg_N0 = ~size_t(0) - , const size_t arg_N1 = ~size_t(0) - , const size_t arg_N2 = ~size_t(0) - , const size_t arg_N3 = ~size_t(0) - , const size_t arg_N4 = ~size_t(0) - , const size_t arg_N5 = ~size_t(0) - , const size_t arg_N6 = ~size_t(0) - , const size_t arg_N7 = ~size_t(0) + >::type const arg_N0 =KOKKOS_INVALID_INDEX + , const size_t arg_N1 =KOKKOS_INVALID_INDEX + , const size_t arg_N2 =KOKKOS_INVALID_INDEX + , const size_t arg_N3 =KOKKOS_INVALID_INDEX + , const size_t arg_N4 =KOKKOS_INVALID_INDEX + , const size_t arg_N5 =KOKKOS_INVALID_INDEX + , const size_t arg_N6 =KOKKOS_INVALID_INDEX + , const size_t arg_N7 =KOKKOS_INVALID_INDEX ) : DynRankView( arg_prop , typename traits::array_layout @@ -1156,14 +1167,14 @@ public: DynRankView( const Label & arg_label , typename std::enable_if< Kokkos::Impl::is_view_label