Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
b10b9bc
copy over all collision files from devel
rfbird Dec 23, 2019
c4a4714
update file names to avoid compiling of non ported collision code
rfbird Dec 23, 2019
d790c0a
copy over collision test
rfbird Dec 23, 2019
5e4cdb9
copy of collisions code fromcpu
rfbird Feb 8, 2020
16955e3
Merge remote-tracking branch 'remotes/gh/devel' into add_collisions
rfbird Feb 8, 2020
70fc705
merge changes from GH
rfbird Feb 8, 2020
6ef2629
fix multi line comment warnings
rfbird Feb 25, 2020
a808a32
reorder kokkos data init order to respect member order. Add TA files …
rfbird Feb 25, 2020
bd70659
tidy up collision deck to remove unsued vars
rfbird Feb 25, 2020
45b1a8a
collisions compiling but not ported
rfbird Feb 26, 2020
35767d2
Make python checking script more robust to inputs of exactly 0 and ex…
rfbird Feb 26, 2020
66f3757
update diags to use kokkos fields and add temporary copies so host pa…
rfbird Feb 26, 2020
7325ac4
update kokkos sort to track bin offsets and last sort, and have colli…
rfbird Feb 26, 2020
547a2ce
make collision use kokkos particle data and remove copies
rfbird Feb 26, 2020
1d66958
port loop to parallel kokkos loop and inline variables
rfbird Feb 26, 2020
5e61481
Add experimental 3d work policy and fixn abs error calc
rfbird Feb 26, 2020
834db39
add explicit call to create mirror view
rfbird Feb 26, 2020
82853dc
port over rng policy work and extend collisions to start using it
rfbird Feb 27, 2020
027059f
Add uint to rng policy
rfbird Feb 27, 2020
e8ff0e0
port collisions to manually use Kokkos RNG -- answer looks questionable
rfbird Feb 27, 2020
bc2f18f
merge
rfbird Feb 27, 2020
4fd986c
remove inbuild rng passing
rfbird Feb 27, 2020
5525fd9
refactor out collision pipeline to have a Ta specific pipeline to avo…
rfbird Mar 3, 2020
1cdbb49
improve bin caching from sort to be faster and more correct
rfbird Mar 3, 2020
31cbb53
improve kokkos rng and add significant documentation
rfbird Apr 21, 2020
a4426bb
add cmake option for selecting rng policy
rfbird Apr 21, 2020
6fbbfd7
remove false contsts from kokkos rng
rfbird Apr 21, 2020
3c376b1
port over cmake define changes from vpic
rfbird Apr 21, 2020
d7239d7
update bounds on uint rng to reflect kokkos actual behavior, not docu…
rfbird May 28, 2020
7bec40d
Implement various binary collision strategies
Jun 3, 2020
6788d8d
Merge branch 'add_collisions' of https://github.com/lanl/vpic-kokkos …
Jun 3, 2020
4665c8f
Add default rng seed for device.
Jun 17, 2020
0b8895b
Remove particle indirect and voxel direct pipelines
Jun 19, 2020
4631aed
Change particle direct to combined shuffle-sort
Jun 19, 2020
7023f42
add one liner to fix shuffle in empty cells
rfbird Jul 8, 2020
2d14515
Merge pull request #10 from jjaraalm/add_collisions
rfbird Sep 3, 2020
d155f55
update cmake to better support Kokkos 3
rfbird Sep 3, 2020
bc08468
Fixed illegal memory issue caused by invalid capture in the indirect …
emedwede Jul 10, 2020
19e0429
Added an underscore convention for class members in the collision pip…
emedwede Jul 14, 2020
97a853d
Allow non openmp compilers to work
rfbird Sep 3, 2020
a2eae2c
fix some simple compiler warnings
rfbird Sep 3, 2020
a60f192
Port over some Kokkos3 changes and add sample collision deck
rfbird Sep 3, 2020
d7b2d90
fix unit tests and losen boudns on collision test
rfbird Sep 11, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
148 changes: 108 additions & 40 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#------------------------------------------------------------------------------#

cmake_minimum_required(VERSION 3.9)
cmake_policy(SET CMP0074 NEW)

#~----------------------------------------------------------------------------~#
# VPIC project configuration
Expand Down Expand Up @@ -54,9 +55,6 @@ option(BUILD_INTERNAL_KOKKOS "Have VPIC build it's own Kokkos rather than look i

option(VPIC_DUMP_ENERGIES "If the code should dump energies diagnostic" OFF)

set(KOKKOS_ARCH "Power9;Volta70" CACHE STRING "Architecture to use with Kokkos")


add_definitions(-DUSE_KOKKOS)
set(VPIC_CPPFLAGS "${VPIC_CPPFLAGS} -DUSE_KOKKOS") # Set it here for ./deck/ files

Expand All @@ -74,6 +72,13 @@ if(MPI_CPPFLAGS)
set(VPIC_CPPFLAGS "${string_cppflags}")
endif(MPI_CPPFLAGS)

# Append extra implicit includes
string(REPLACE ";" " -I" string_cppflags "${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES}")
set(VPIC_CPPFLAGS "${VPIC_CPPFLAGS} -I${string_cppflags}")
message(${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES})
message(${VPIC_CPPFLAGS})


string(REPLACE ";" " -I" string_includes "${MPI_C_INCLUDE_PATH}")
if(NOT ${string_includes} STREQUAL "")
set(VPIC_CXX_FLAGS "-I${string_includes} ${MPI_C_LINK_FLAGS}")
Expand Down Expand Up @@ -115,34 +120,33 @@ include_directories(${PROJECT_SOURCE_DIR})
#------------------------------------------------------------------------------#
# Kokkos
#------------------------------------------------------------------------------#
set(KOKKOS_ENABLE_DEBUG OFF)
set(Kokkos_ENABLE_DEBUG OFF)

option(VPIC_KOKKOS_DEBUG "Enable Debug In Kokkos" OFF)

if (VPIC_KOKKOS_DEBUG)
set(KOKKOS_ENABLE_DEBUG ON)
set(Kokkos_ENABLE_DEBUG ON)
endif(VPIC_KOKKOS_DEBUG)

set(KOKKOS_ENABLE_EXPLICIT_INSTANTIATION OFF)
set(Kokkos_ENABLE_EXPLICIT_INSTANTIATION OFF)

set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "Default allow serial execution")

if(ENABLE_KOKKOS_OPENMP)
if (OPENMP_FOUND)
set(KOKKOS_ENABLE_OPENMP ON CACHE BOOL "Use OpenMP if found")
set(Kokkos_ENABLE_OPENMP ON CACHE BOOL "Use OpenMP if found")
endif()
else()
set(Kokkos_ENABLE_OPENMP OFF)
endif()

if(ENABLE_KOKKOS_CUDA)
find_package(CUDA)
if (CUDA_FOUND)
add_definitions(-DENABLE_KOKKOS_CUDA)
set(KOKKOS_ENABLE_CUDA ON CACHE BOOL "Use Cuda with Kokkos")
set(KOKKOS_ENABLE_CUDA_LAMBDA ON)
set(KOKKOS_ENABLE_CUDA_UVM OFF)

set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --expt-extended-lambda")

#set(KOKKOS_ARCH "Power9;Volta70")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch=sm_70")
set(Kokkos_ENABLE_CUDA ON CACHE BOOL "Use Cuda with Kokkos")
set(Kokkos_ENABLE_CUDA_LAMBDA ON CACHE BOOL "Enable cuda lambda support")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --expt-extended-lambda")

# turn off -std=gnu++ to avoid error: identifier "__float128" is undefined issue
# see https://github.com/UoB-HPC/BabelStream/issues/16
Expand All @@ -158,25 +162,57 @@ endif()

# Disable platform specific options
if (APPLE)
set(KOKKOS_ENABLE_LIBRT OFF CACHE BOOL "librt is not available on macOS")
set(Kokkos_ENABLE_LIBRT OFF CACHE BOOL "librt is not available on macOS")
endif()



# TODO: This is only need for non-linux platforms
set(Kokkos_ENABLE_LIBDL OFF)
set(Kokkos_ENABLE_PROFILING OFF) # NO libDL => no profiling


if (BUILD_INTERNAL_KOKKOS)
message("Building our own kokkos..")
add_subdirectory(kokkos)
set(Kokkos_ENABLE_LIBDL OFF)
set(Kokkos_ENABLE_PROFILING OFF) # NO libDL => no profiling
#include_directories(${Kokkos_INCLUDE_DIRS_RET})
set(KOKKOS_INCLUDE_DIRS ${Kokkos_INCLUDE_DIRS_RET})
#set(KOKKOS_INCLUDE_DIRS ${Kokkos_INCLUDE_DIRS_RET})
else()
# CONSIDER ADDING --expt-extended-lambda
find_package(KOKKOS REQUIRED)
# TODO: I doubt this is the cmakey way to add this to includes
get_target_property(KOKKOS_INCLUDE_DIRS Kokkos::kokkos INTERFACE_INCLUDE_DIRECTORIES)
# CONSIDER ADDING --expt-extended-lambda
# find_package(KOKKOS REQUIRED)
find_package(Kokkos REQUIRED)

#get_target_property(KOKKOS_INCLUDE_DIRS Kokkos::kokkos INTERFACE_INCLUDE_DIRECTORIES)
#get_target_property(KOKKOS_LIB_DIR Kokkos::kokkos INTERFACE_LINK_LIBRARIES)
#message(${KOKKOS_INCLUDE_DIRS})
link_directories(${KOKKOS_INCLUDE_DIRS}/../lib) # TODO: bad idea..
#link_directories(${KOKKOS_INCLUDE_DIRS}/../lib) # TODO: bad idea..
endif(BUILD_INTERNAL_KOKKOS)

include_directories(${KOKKOS_INCLUDE_DIRS})

get_target_property(KOKKOS_INCLUDE_DIRS Kokkos::kokkoscore INTERFACE_INCLUDE_DIRECTORIES)
get_target_property(KOKKOS_INCLUDE_CONTAINERS Kokkos::kokkoscontainers INTERFACE_INCLUDE_DIRECTORIES)

# TODO: this gives the external include path
#get_target_property(KOKKOS_LIB_DIRS Kokkos::kokkos INTERFACE_LINK_DEPENDS)

#get_target_property(KOKKOS_LIB_DIRS Kokkos::kokkos INTERFACE_LINK_DEPENDS)
#get_target_property(KOKKOS_LIB_CONTAINERS Kokkos::kokkoscontainers INTERFACE_LINK_DEPENDS)

set(KOKKOS_CORE_INCLUDES_FILE ${PROJECT_BINARY_DIR}/kokkos_core_includes)
set(KOKKOS_CONTAINER_INCLUDES_FILE ${PROJECT_BINARY_DIR}/kokkos_container_includes)
#set(KOKKOS_CORE_LIB_FILE ${PROJECT_BINARY_DIR}/kokkos_core_lib)
#set(KOKKOS_CONTAINER_LIB_FILE ${PROJECT_BINARY_DIR}/kokkos_container_lib)

# For an "external" build these will be the same, but for an internal we need to gather both
file(GENERATE OUTPUT ${KOKKOS_CORE_INCLUDES_FILE} CONTENT "${KOKKOS_INCLUDE_DIRS}")
file(GENERATE OUTPUT ${KOKKOS_CONTAINER_INCLUDES_FILE} CONTENT "${KOKKOS_INCLUDE_CONTAINERS}")

#file(GENERATE OUTPUT ${KOKKOS_CORE_LIB_FILE} CONTENT "${KOKKOS_LIB_DIRS}")
#file(GENERATE OUTPUT ${KOKKOS_CONTAINER_LIB_FILE} CONTENT "${KOKKOS_LIB_CONTAINERS}")

#include_directories(${KOKKOS_INCLUDE_DIRS})
#string(REPLACE ";" " " KOKKOS_INCLUDE_DIRS "${KOKKOS_INCLUDE_DIRS}")
#message(dirs: ${KOKKOS_INCLUDE_DIRS})

Expand All @@ -188,20 +224,19 @@ include_directories(${KOKKOS_INCLUDE_DIRS})

# TODO: bad idea.. at best, this is just going to add it to the last one in the
# array
link_directories(${KOKKOS_INCLUDE_DIRS}/../lib)
link_directories(${KOKKOS_INCLUDE_DIRS}/lib)
#link_directories(${KOKKOS_INCLUDE_DIRS}/../lib)
#link_directories(${KOKKOS_INCLUDE_DIRS}/lib)

# Libs
message(${string_libraries})
string(REPLACE ";" " " string_libraries "${KOKKOS_LIBS} ${KOKKOS_LDFLAGS}")
set(VPIC_CXX_LIBRARIES "${VPIC_CXX_LIBRARIES} ${string_libraries}")

# Includes (TODO: this is definitely abuse of the CXX variable..)
string(REPLACE ";" " -I" string_libraries "-I${KOKKOS_INCLUDE_DIRS}")
set(VPIC_CXX_LIBRARIES "${VPIC_CXX_LIBRARIES} ${string_libraries}")
#string(REPLACE ";" " -I" string_libraries "-I${KOKKOS_INCLUDE_DIRS}")
#set(VPIC_CXX_LIBRARIES "${VPIC_CXX_LIBRARIES} ${string_libraries}")

string(REPLACE ";" " -L" string_libraries "-L${KOKKOS_INCLUDE_DIRS}")
set(VPIC_CXX_LIBRARIES "${VPIC_CXX_LIBRARIES} ${string_libraries}")
#string(REPLACE ";" " -L" string_libraries "-L${KOKKOS_INCLUDE_DIRS}")
#set(VPIC_CXX_LIBRARIES "${VPIC_CXX_LIBRARIES} ${string_libraries}")


#------------------------------------------------------------------------------#
Expand Down Expand Up @@ -246,6 +281,31 @@ if(ENABLE_OPENSSL)
add_definitions(-DENABLE_OPENSSL)
endif(ENABLE_OPENSSL)

#------------------------------------------------------------------------------#
# Output log variables
#------------------------------------------------------------------------------#
FIND_PACKAGE(Git)
IF(GIT_FOUND AND IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/.git)
EXECUTE_PROCESS(
COMMAND ${GIT_EXECUTABLE} log --pretty=format:%H -n 1
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE VPIC_GIT_COMMIT_HASH
)
ELSE()
SET(VPIC_GIT_COMMIT_HASH "Not a git repository")
ENDIF()
string(TIMESTAMP _build_time_stamp)

MESSAGE(STATUS "VPIC Revision = '${VPIC_GIT_COMMIT_HASH}'")
#add_definitions("-DVPIC_GIT_HASH=${VPIC_GIT_COMMIT_HASH}")

configure_file (
"${PROJECT_SOURCE_DIR}/cmake/git_version.h.in"
"${PROJECT_BINARY_DIR}/include/git_version.h"
)

include_directories(${PROJECT_BINARY_DIR}/include) # for generated git_version.h

#------------------------------------------------------------------------------#
# Handle vpic compile script last
#------------------------------------------------------------------------------#
Expand All @@ -263,12 +323,18 @@ endif(ENABLE_COVERAGE_BUILD)

# process Makefile.run.in to get a simple Makefile.run for a run. Points to
# local built exe wrapper, and has example deck/platform.
configure_file(${CMAKE_SOURCE_DIR}/sample/Makefile.run.in
${CMAKE_BINARY_DIR}/bin/Makefile.run)
configure_file(
${CMAKE_SOURCE_DIR}/sample/Makefile.run.in
${CMAKE_BINARY_DIR}/bin/Makefile.run
)

# install script
configure_file(${CMAKE_SOURCE_DIR}/bin/vpic.in
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/vpic-install)
configure_file(
${CMAKE_SOURCE_DIR}/bin/vpic.in
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/vpic-install
@ONLY
)

install(FILES ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/vpic-install
DESTINATION bin
RENAME vpic
Expand All @@ -284,8 +350,11 @@ install(FILES ${CMAKE_SOURCE_DIR}/deck/wrapper.cc
DESTINATION share/vpic)

# local script
configure_file(${CMAKE_SOURCE_DIR}/bin/vpic-local.in
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/vpic)
configure_file(
${CMAKE_SOURCE_DIR}/bin/vpic-local.in
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/vpic
@ONLY
)

file(COPY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/vpic
DESTINATION ${CMAKE_BINARY_DIR}/bin
Expand Down Expand Up @@ -315,15 +384,15 @@ else()
install(TARGETS vpic LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
endif()
target_include_directories(vpic INTERFACE ${CMAKE_SOURCE_DIR}/src)
target_link_libraries(vpic ${VPIC_EXPOSE} ${MPI_CXX_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${OPENSSL_LIBRARIES} ${CMAKE_DL_LIBS} kokkos)
target_link_libraries(vpic ${VPIC_EXPOSE} ${MPI_CXX_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${OPENSSL_LIBRARIES} ${CMAKE_DL_LIBS} Kokkos::kokkos)
target_compile_options(vpic ${VPIC_EXPOSE} ${MPI_C_COMPILE_FLAGS})

macro(build_a_vpic name deck)
if(NOT EXISTS ${deck})
message(FATAL_ERROR "Could not find deck '${deck}'")
endif()
add_executable(${name} ${CMAKE_SOURCE_DIR}/deck/main.cc ${CMAKE_SOURCE_DIR}/deck/wrapper.cc ${VPIC_SRC})
target_link_libraries(${name} vpic)
target_link_libraries(${name} vpic Kokkos::kokkos)
target_compile_definitions(${name} PRIVATE INPUT_DECK=${deck})
endmacro(build_a_vpic)

Expand Down Expand Up @@ -365,9 +434,8 @@ if(ENABLE_UNIT_TESTS)

# RNG tests
add_executable(rng src/util/rng/test/rng.cc)
target_link_libraries(rng vpic)
target_link_libraries(rng vpic Kokkos::kokkos)
get_target_property(OUT rng LINK_LIBRARIES)
message(STATUS OUT ${OUT})

add_test(NAME rng COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 1 ${MPIEXEC_PREFLAGS} ./rng)

Expand Down
41 changes: 39 additions & 2 deletions bin/vpic-local.in
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,43 @@

deck=`echo $1 | sed 's,\.cxx,,g;s,\.cc,,g;s,\.cpp,,g;s,.*\/,,g'`

echo "${CMAKE_CXX_COMPILER} ${VPIC_CPPFLAGS} ${CMAKE_CXX_FLAGS} -I. -I${CMAKE_SOURCE_DIR}/src ${VPIC_CXX_FLAGS} -DINPUT_DECK=$1 ${CMAKE_SOURCE_DIR}/deck/main.cc ${CMAKE_SOURCE_DIR}/deck/wrapper.cc -o $deck.${CMAKE_SYSTEM_NAME} -Wl,-rpath,${CMAKE_BINARY_DIR} -L${CMAKE_BINARY_DIR} -lvpic ${VPIC_CXX_LIBRARIES} -lpthread -ldl"
clean_kokkos_path()
{
# $1 = path
# $2 = swap ; for $2
if grep -q ";" <<< "$1"; then
echo $(echo $1 | sed "s/;/ $2/g")
else
echo ${2}${1}
fi
}

${CMAKE_CXX_COMPILER} ${VPIC_CPPFLAGS} ${CMAKE_CXX_FLAGS} -I. -I${CMAKE_SOURCE_DIR}/src ${VPIC_CXX_FLAGS} -DINPUT_DECK=$1 ${CMAKE_SOURCE_DIR}/deck/main.cc ${CMAKE_SOURCE_DIR}/deck/wrapper.cc -o $deck.${CMAKE_SYSTEM_NAME} -Wl,-rpath,${CMAKE_BINARY_DIR} -L${CMAKE_BINARY_DIR} -lvpic ${VPIC_CXX_LIBRARIES} -lpthread -ldl

KOKKOS_CORE_INCLUDES=$( cat @KOKKOS_CORE_INCLUDES_FILE@ )
KOKKOS_CONTAINER_INCLUDES=$( cat @KOKKOS_CONTAINER_INCLUDES_FILE@ )

KOKKOS_CORE_LIBS=$KOKKOS_CORE_INCLUDES
KOKKOS_CONTAINER_LIBS=$KOKKOS_CONTAINER_INCLUDES

echo $KOKKOS_CORE_LIBS

# Add hack to include ../lib and ../lib64, only required for "external" builds
# If only a single path was passed append the paths
if ! grep -q ";" <<< "$KOKKOS_CORE_LIBS"; then
# We pre append ";" to make the above subsition work when cleaning the path
KOKKOS_CORE_LIBS=";${KOKKOS_CORE_LIBS};${KOKKOS_CORE_LIBS}/../lib/"
KOKKOS_CORE_LIBS=";${KOKKOS_CORE_LIBS};${KOKKOS_CORE_LIBS}/../lib64/"
fi

KOKKOS_CORE_INCLUDES=$(clean_kokkos_path $KOKKOS_CORE_INCLUDES -I)
KOKKOS_CONTAINER_INCLUDES=$(clean_kokkos_path $KOKKOS_CONTAINER_INCLUDES -I)

KOKKOS_CORE_LIBS=$(clean_kokkos_path $KOKKOS_CORE_LIBS -L)
KOKKOS_CONTAINER_LIBS=$(clean_kokkos_path $KOKKOS_CONTAINER_LIBS -L)

#KOKKOS_LIBS="-l:libkokkoscore.a -l:libkokkoscontainers.a"
KOKKOS_LIBS="-lkokkoscore -lkokkoscontainers"

echo @CMAKE_CXX_COMPILER@ @VPIC_CPPFLAGS@ @CMAKE_CXX_FLAGS@ -I. -I@CMAKE_SOURCE_DIR@/src @VPIC_CXX_FLAGS@ -DINPUT_DECK=$1 @CMAKE_SOURCE_DIR@/deck/main.cc @CMAKE_SOURCE_DIR@/deck/wrapper.cc -o $deck.@CMAKE_SYSTEM_NAME@ -Wl,-rpath,@CMAKE_BINARY_DIR@ -L@CMAKE_BINARY_DIR@ -lvpic @VPIC_CXX_LIBRARIES@ -lpthread -ldl $KOKKOS_CORE_LIBS $KOKKOS_CONTAINER_LIBS $KOKKOS_CORE_INCLUDES $KOKKOS_CONTAINER_INCLUDES $KOKKOS_LIBS

@CMAKE_CXX_COMPILER@ @VPIC_CPPFLAGS@ @CMAKE_CXX_FLAGS@ -I. -I@CMAKE_SOURCE_DIR@/src @VPIC_CXX_FLAGS@ -DINPUT_DECK=$1 @CMAKE_SOURCE_DIR@/deck/main.cc @CMAKE_SOURCE_DIR@/deck/wrapper.cc -o $deck.@CMAKE_SYSTEM_NAME@ -Wl,-rpath,@CMAKE_BINARY_DIR@ -L@CMAKE_BINARY_DIR@ -lvpic @VPIC_CXX_LIBRARIES@ -lpthread -ldl $KOKKOS_CORE_LIBS $KOKKOS_CONTAINER_LIBS $KOKKOS_CORE_INCLUDES $KOKKOS_CONTAINER_INCLUDES $KOKKOS_LIBS
46 changes: 44 additions & 2 deletions bin/vpic.in
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,48 @@

deck=`echo $1 | sed 's,\.cxx,,g;s,\.cc,,g;s,\.cpp,,g;s,.*\/,,g'`

echo "${CMAKE_CXX_COMPILER} ${VPIC_CPPFLAGS} ${CMAKE_CXX_FLAGS} -I. -I${CMAKE_INSTALL_PREFIX}/include/vpic ${VPIC_CXX_FLAGS} -DINPUT_DECK=$1 ${CMAKE_INSTALL_PREFIX}/share/vpic/main.cc ${CMAKE_INSTALL_PREFIX}/share/vpic/wrapper.cc -o $deck.${CMAKE_SYSTEM_NAME} -Wl,-rpath,${CMAKE_INSTALL_PREFIX}/lib -L${CMAKE_INSTALL_PREFIX}/lib -lvpic ${VPIC_CXX_LIBRARIES} -lpthread -ldl"
# Old code
#echo "${CMAKE_CXX_COMPILER} ${VPIC_CPPFLAGS} ${CMAKE_CXX_FLAGS} -I. -I${CMAKE_INSTALL_PREFIX}/include/vpic ${VPIC_CXX_FLAGS} -DINPUT_DECK=$1 ${CMAKE_INSTALL_PREFIX}/share/vpic/main.cc ${CMAKE_INSTALL_PREFIX}/share/vpic/wrapper.cc -o $deck.${CMAKE_SYSTEM_NAME} -Wl,-rpath,${CMAKE_INSTALL_PREFIX}/lib -L${CMAKE_INSTALL_PREFIX}/lib -lvpic ${VPIC_CXX_LIBRARIES} -lpthread -ldl"

${CMAKE_CXX_COMPILER} ${VPIC_CPPFLAGS} ${CMAKE_CXX_FLAGS} -I. -I${CMAKE_INSTALL_PREFIX}/include/vpic ${VPIC_CXX_FLAGS} -DINPUT_DECK=$1 ${CMAKE_INSTALL_PREFIX}/share/vpic/main.cc ${CMAKE_INSTALL_PREFIX}/share/vpic/wrapper.cc -o $deck.${CMAKE_SYSTEM_NAME} -Wl,-rpath,${CMAKE_INSTALL_PREFIX}/lib -L${CMAKE_INSTALL_PREFIX}/lib -lvpic ${VPIC_CXX_LIBRARIES} -lpthread -ldl
#${CMAKE_CXX_COMPILER} ${VPIC_CPPFLAGS} ${CMAKE_CXX_FLAGS} -I. -I${CMAKE_INSTALL_PREFIX}/include/vpic ${VPIC_CXX_FLAGS} -DINPUT_DECK=$1 ${CMAKE_INSTALL_PREFIX}/share/vpic/main.cc ${CMAKE_INSTALL_PREFIX}/share/vpic/wrapper.cc -o $deck.${CMAKE_SYSTEM_NAME} -Wl,-rpath,${CMAKE_INSTALL_PREFIX}/lib -L${CMAKE_INSTALL_PREFIX}/lib -lvpic ${VPIC_CXX_LIBRARIES} -lpthread -ldl

clean_kokkos_path()
{
# $1 = path
# $2 = swap ; for $2
if grep -q ";" <<< "$1"; then
echo $(echo $1 | sed "s/;/ $2/g")
else
echo ${2}${1}
fi
}


KOKKOS_CORE_INCLUDES=$( cat @KOKKOS_CORE_INCLUDES_FILE@ )
KOKKOS_CONTAINER_INCLUDES=$( cat @KOKKOS_CONTAINER_INCLUDES_FILE@ )

KOKKOS_CORE_LIBS=$KOKKOS_CORE_INCLUDES
KOKKOS_CONTAINER_LIBS=$KOKKOS_CONTAINER_INCLUDES

echo $KOKKOS_CORE_LIBS

# Add hack to include ../lib and ../lib64, only required for "external" builds
# If only a single path was passed append the paths
if ! grep -q ";" <<< "$KOKKOS_CORE_LIBS"; then
# We pre append ";" to make the above subsition work when cleaning the path
KOKKOS_CORE_LIBS=";${KOKKOS_CORE_LIBS};${KOKKOS_CORE_LIBS}/../lib/"
KOKKOS_CORE_LIBS=";${KOKKOS_CORE_LIBS};${KOKKOS_CORE_LIBS}/../lib64/"
fi

KOKKOS_CORE_INCLUDES=$(clean_kokkos_path $KOKKOS_CORE_INCLUDES -I)
KOKKOS_CONTAINER_INCLUDES=$(clean_kokkos_path $KOKKOS_CONTAINER_INCLUDES -I)

KOKKOS_CORE_LIBS=$(clean_kokkos_path $KOKKOS_CORE_LIBS -L)
KOKKOS_CONTAINER_LIBS=$(clean_kokkos_path $KOKKOS_CONTAINER_LIBS -L)

#KOKKOS_LIBS="-l:libkokkoscore.a -l:libkokkoscontainers.a"
KOKKOS_LIBS="-lkokkoscore -lkokkoscontainers"

echo @CMAKE_CXX_COMPILER@ @VPIC_CPPFLAGS@ @CMAKE_CXX_FLAGS@ -I. -I@CMAKE_SOURCE_DIR@/src @VPIC_CXX_FLAGS@ -DINPUT_DECK=$1 @CMAKE_SOURCE_DIR@/deck/main.cc @CMAKE_SOURCE_DIR@/deck/wrapper.cc -o $deck.@CMAKE_SYSTEM_NAME@ -Wl,-rpath,@CMAKE_BINARY_DIR@ -L@CMAKE_BINARY_DIR@ -lvpic @VPIC_CXX_LIBRARIES@ -lpthread -ldl $KOKKOS_CORE_LIBS $KOKKOS_CONTAINER_LIBS $KOKKOS_CORE_INCLUDES $KOKKOS_CONTAINER_INCLUDES $KOKKOS_LIBS

@CMAKE_CXX_COMPILER@ @VPIC_CPPFLAGS@ @CMAKE_CXX_FLAGS@ -I. -I@CMAKE_INSTALL_PREFIX@/src @VPIC_CXX_FLAGS@ -DINPUT_DECK=$1 @CMAKE_INSTALL_PREFIX@/deck/main.cc @CMAKE_INSTALL_PREFIX@/deck/wrapper.cc -o $deck.@CMAKE_SYSTEM_NAME@ -Wl,-rpath,@CMAKE_INSTALL_PREFIX@ -L@CMAKE_INSTALL_PREFIX@ -lvpic @VPIC_CXX_LIBRARIES@ -lpthread -ldl $KOKKOS_CORE_LIBS $KOKKOS_CONTAINER_LIBS $KOKKOS_CORE_INCLUDES $KOKKOS_CONTAINER_INCLUDES $KOKKOS_LIBS
8 changes: 8 additions & 0 deletions cmake/git_version.h.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#pragma once
#ifndef VPIC_GIT_VERSION
#define VPIC_GIT_VERSION

#define GIT_REVISION "@VPIC_GIT_COMMIT_HASH@"
#define BUILD_TIMESTAMP "@_build_time_stamp@"

#endif
2 changes: 1 addition & 1 deletion kokkos
Submodule kokkos updated 2384 files
Loading