Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • mosaic/software/parallel-computing/openfpm/openfpm_devices
  • argupta/openfpm_devices
2 results
Show changes
Commits on Source (190)
......@@ -41,25 +41,11 @@ Thumbs.db
*.vtk
*.swp
install-sh
AUTHORS
COPYING
ChangeLog
INSTALL
NEWS
README
Makefile
Makefile.in
config.status
config.guess
config.sub
configure
numerics
**/.deps
**/src/config
aclocal.m4
**/autom4te.cache
compile
depcomp
missing
src/mem
......@@ -4,9 +4,9 @@ centos_build:
- centos
artifacts:
paths:
- ./src/mem
- ./build/src/mem
script:
- ./build.sh $CI_PROJECT_DIR $CI_SERVER_NAME
- ./build.sh $CI_PROJECT_DIR $CI_SERVER_NAME $CI_COMMIT_REF_NAME
centos_run:
stage: test
......@@ -15,8 +15,7 @@ centos_run:
dependencies:
- centos_build
script:
- ./src/mem
- ./success.sh 2 centos openfpm_devices
- ./build/src/mem
mac_build:
stage: build
......@@ -24,9 +23,9 @@ mac_build:
- mac
artifacts:
paths:
- ./src/mem
- ./build/src/mem
script:
- ./build.sh $CI_PROJECT_DIR $CI_SERVER_NAME
- ./build.sh $CI_PROJECT_DIR $CI_SERVER_NAME $CI_COMMIT_REF_NAME
mac_run:
stage: test
......@@ -35,8 +34,7 @@ mac_run:
dependencies:
- mac_build
script:
- ./src/mem
- ./success.sh 2 mac openfpm_devices
- ./build/src/mem
ubuntu_build:
stage: build
......@@ -44,9 +42,9 @@ ubuntu_build:
- ubuntu
artifacts:
paths:
- ./src/mem
- ./build/src/mem
script:
- ./build.sh $CI_PROJECT_DIR $CI_SERVER_NAME
- ./build.sh $CI_PROJECT_DIR $CI_SERVER_NAME $CI_COMMIT_REF_NAME
ubuntu_run:
stage: test
......@@ -55,6 +53,5 @@ ubuntu_run:
dependencies:
- ubuntu_build
script:
- ./src/mem
- ./success.sh 2 ubuntu openfpm_devices
- ./build/src/mem
cmake_minimum_required(VERSION 3.8 FATAL_ERROR)
project(openfpm_devices LANGUAGES CXX)
project(openfpm_devices LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CUDA_STANDARD 14)
set(BOOST_INCLUDE ${Boost_INCLUDE_DIR} CACHE PATH "Include directory for BOOST")
set (CMAKE_CXX_STANDARD 11)
set (CMAKE_CUDA_STANDARD 11)
if (ENABLE_GARBAGE_INJECTOR)
set(DEFINE_GARBAGE_INJECTOR "#define GARBAGE_INJECTOR")
endif()
find_package(Boost 1.66.0 REQUIRED COMPONENTS unit_test_framework iostreams program_options)
if (OPENMP_FOUND)
set(DEFINE_HAVE_OPENMP "#define HAVE_OPENMP")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
endif()
if(CUDA_ON_CPU)
set(DEFINE_CUDA_GPU "#define CUDA_GPU")
endif()
if(ENABLE_GPU)
enable_language(CUDA)
find_package(CUDA)
if (CUDA_ON_BACKEND STREQUAL "HIP")
if(NOT HIP_FOUND)
message( FATAL_ERROR "HIP has not been found" )
else()
message("HIP has been found")
endif()
if (CUDA_ON_BACKEND="HIP")
set(CMAKE_CXX_EXTENSIONS OFF)
endif()
set(DEFINE_CUDA_GPU "#define CUDA_GPU")
endif()
###### CONFIG.h FILE ######
if(HIP_FOUND)
set(DEFINE_CUDA_GPU "#define CUDA_GPU")
set(DEFINE_CUDIFY_USE_HIP "#define CUDIFY_USE_HIP")
endif()
if(CUDA_FOUND)
if (CUDA_ON_BACKEND STREQUAL "CUDA")
include(CheckLanguage)
if (CMAKE_CUDA_COMPILER)
set(CUDA_FOUND ON)
endif()
string(REPLACE "." ";" CUDA_VERSION_LIST ${CMAKE_CUDA_COMPILER_VERSION})
list(GET CUDA_VERSION_LIST 0 CUDA_VERSION_MAJOR)
list(GET CUDA_VERSION_LIST 1 CUDA_VERSION_MINOR)
list(GET CUDA_VERSION_LIST 2 CUDA_VERSION_PATCH)
if (CUDA_VERSION_MAJOR EQUAL 9 AND CUDA_VERSION_MINOR EQUAL 2)
message("CUDA is compatible 9.2")
set(WARNING_SUPPRESSION_AND_OPTION_NVCC -Xcudafe "--display_error_number --diag_suppress=611 --diag_suppress=2885 --diag_suppress=2886 --diag_suppress=2887 --diag_suppress=2888 --diag_suppress=186 --diag_suppress=111" --expt-extended-lambda)
set(WARNING_SUPPRESSION_AND_OPTION_NVCC_TEXT "-Xcudafe \"--display_error_number --diag_suppress=611 --diag_suppress=2885 --diag_suppress=2886 --diag_suppress=2887 --diag_suppress=2888 --diag_suppress=186 --diag_suppress=111\" --expt-extended-lambda ")
elseif ( CUDA_VERSION_MAJOR EQUAL 10 AND CUDA_VERSION_MINOR EQUAL 1 )
message("CUDA is compatible 10.1")
set(WARNING_SUPPRESSION_AND_OPTION_NVCC -Xcudafe "--display_error_number --diag_suppress=2931 --diag_suppress=2930 --diag_suppress=2929 --diag_suppress=2928 --diag_suppress=2915 --diag_suppress=2912 --diag_suppress=2913 --diag_suppress=111 --diag_suppress=186 --diag_suppress=611 --diag_suppress=128" --expt-extended-lambda)
set(WARNING_SUPPRESSION_AND_OPTION_NVCC_TEXT "-Xcudafe \"--display_error_number --display_error_number --diag_suppress=2931 --diag_suppress=2930 --diag_suppress=2929 --diag_suppress=2928 --diag_suppress=2915 --diag_suppress=2912 --diag_suppress=2913 --diag_suppress=111 --diag_suppress=186 --diag_suppress=611 --diag_suppress=128 \" --expt-extended-lambda")
elseif ( CUDA_VERSION_MAJOR EQUAL 10 AND CUDA_VERSION_MINOR EQUAL 2 )
message("CUDA is compatible 10.2")
set(WARNING_SUPPRESSION_AND_OPTION_NVCC -Xcudafe "--display_error_number --diag_suppress=2976 --diag_suppress=2977 --diag_suppress=2978 --diag_suppress=2979 --diag_suppress=1835 --diag_suppress=611 --diag_suppress=186 --diag_suppress=128" --expt-extended-lambda)
set(WARNING_SUPPRESSION_AND_OPTION_NVCC_TEXT "-Xcudafe \"--display_error_number --diag_suppress=2976 --diag_suppress=2977 --diag_suppress=2978 --diag_suppress=2979 --diag_suppress=1835 --diag_suppress=611 --diag_suppress=186 --diag_suppress=128\" --expt-extended-lambda")
elseif ( CUDA_VERSION_MAJOR EQUAL 11 AND CUDA_VERSION_MINOR EQUAL 0 )
message("CUDA is compatible 11.0")
set(WARNING_SUPPRESSION_AND_OPTION_NVCC -Xcudafe "--display_error_number --diag_suppress=3056 --diag_suppress=3057 --diag_suppress=3058 --diag_suppress=3059 --diag_suppress=611 --diag_suppress=186 --diag_suppress=128" --expt-extended-lambda)
set(WARNING_SUPPRESSION_AND_OPTION_NVCC_TEXT "-Xcudafe \"--display_error_number --diag_suppress=3056 --diag_suppress=3057 --diag_suppress=3058 --diag_suppress=3059 --diag_suppress=611 --diag_suppress=186 --diag_suppress=128\" --expt-extended-lambda")
elseif ( CUDA_VERSION_MAJOR EQUAL 11 AND CUDA_VERSION_MINOR EQUAL 1 )
message("CUDA is compatible 11.1")
set(WARNING_SUPPRESSION_AND_OPTION_NVCC -Xcudafe "--display_error_number --diag_suppress=3124 --diag_suppress=3126 --diag_suppress=3125 --diag_suppress=3123 --diag_suppress=611 --diag_suppress=186 --diag_suppress=128" --expt-extended-lambda)
set(WARNING_SUPPRESSION_AND_OPTION_NVCC_TEXT "-Xcudafe \"--display_error_number --diag_suppress=3124 --diag_suppress=3126 --diag_suppress=3125 --diag_suppress=3123 --diag_suppress=611 --diag_suppress=186 --diag_suppress=128\" --expt-extended-lambda")
elseif ( CUDA_VERSION_MAJOR EQUAL 11 AND (CUDA_VERSION_MINOR EQUAL 2 OR CUDA_VERSION_MINOR EQUAL 3 OR CUDA_VERSION_MINOR EQUAL 4 OR CUDA_VERSION_MINOR EQUAL 5 OR CUDA_VERSION_MINOR EQUAL 6 OR CUDA_VERSION_MINOR EQUAL 7 OR CUDA_VERSION_MINOR EQUAL 8))
message("CUDA is compatible 11.2/3/4/5")
set(WARNING_SUPPRESSION_AND_OPTION_NVCC -Xcudafe "--display_error_number --diag_suppress=20014 --diag_suppress=20013 --diag_suppress=20012 --diag_suppress=20011 --diag_suppress=611 --diag_suppress=550 --diag_suppress=186 --diag_suppress=128" --expt-extended-lambda)
set(WARNING_SUPPRESSION_AND_OPTION_NVCC_TEXT "-Xcudafe \"--display_error_number --diag_suppress=20014 --diag_suppress=20013 --diag_suppress=20012 --diag_suppress=20011 --diag_suppress=611 --diag_suppress=550 --diag_suppress=186 --diag_suppress=128\" --expt-extended-lambda")
elseif ( CUDA_VERSION_MAJOR EQUAL 12 AND (CUDA_VERSION_MINOR EQUAL 0 OR CUDA_VERSION_MINOR EQUAL 1 OR CUDA_VERSION_MINOR EQUAL 2 OR CUDA_VERSION_MINOR EQUAL 3 OR CUDA_VERSION_MINOR EQUAL 4 ))
message("CUDA is compatible 12")
set(WARNING_SUPPRESSION_AND_OPTION_NVCC -Xcudafe "--display_error_number --diag_suppress=20014 --diag_suppress=20013 --diag_suppress=20012 --diag_suppress=20011 --diag_suppress=611 --diag_suppress=550 --diag_suppress=186 --diag_suppress=128" --expt-extended-lambda)
set(WARNING_SUPPRESSION_AND_OPTION_NVCC_TEXT "-Xcudafe \"--display_error_number --diag_suppress=20014 --diag_suppress=20013 --diag_suppress=20012 --diag_suppress=20011 --diag_suppress=611 --diag_suppress=550 --diag_suppress=186 --diag_suppress=128\" --expt-extended-lambda")
else()
message(FATAL_ERROR "CUDA is incompatible, version 9.2 10.1 10.2 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 12.0 12.1 12.2 12.3 12.4 is only supported")
endif()
set(DEFINE_CUDIFY_BACKEND "#define CUDIFY_USE_CUDA")
set(DEFINE_CUDA_GPU "#define CUDA_GPU")
elseif (CUDA_ON_BACKEND STREQUAL "OpenMP")
set(DEFINE_CUDIFY_BACKEND "#define CUDIFY_USE_OPENMP")
set(DEFINE_CUDA_GPU "#define CUDA_GPU")
elseif (CUDA_ON_BACKEND STREQUAL "SEQUENTIAL")
set(DEFINE_CUDIFY_BACKEND "#define CUDIFY_USE_SEQUENTIAL")
set(DEFINE_CUDA_GPU "#define CUDA_GPU")
set(CUDA_SOURCES memory/CudaMemory.cu)
endif()
if (BOOST_FOUND)
set(DEFINE_HAVE_BOOST "#define HAVE_BOOST")
set(DEFINE_HAVE_BOOST_IOSTREAMS "#define HAVE_BOOST_IOSTREAMS")
set(DEFINE_HAVE_BOOST_PROGRAM_OPTIONS "#define HAVE_BOOST_PROGRAM_OPTIONS")
set(DEFINE_HAVE_BOOST_UNIT_TEST_FRAMEWORK "#define HAVE_BOOST_UNIT_TEST_FRAMEWORK")
if (ALPAKA_ROOT)
set(DEFINE_HAVE_ALPAKA "#define HAVE_ALPAKA")
endif()
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/config/config_cmake.h.in ${CMAKE_CURRENT_SOURCE_DIR}/src/config/config.h)
if (CUDA_ON_BACKEND STREQUAL "SEQUENTIAL")
## We need BOOST_CONTEXT
if (NOT Boost_CONTEXT_FOUND)
message(FATAL_ERROR "Error to run CUDA on CPU (SEQUENTIAL backend) we need Boost::context installed, it seems is not available in your boost installation")
endif()
endif()
if (CUDA_ON_BACKEND STREQUAL "OpenMP")
## We need OpenMP
if (NOT OPENMP_FOUND OR NOT Boost_CONTEXT_FOUND)
message(FATAL_ERROR "Error to run CUDA on CPU (OpenMP backend) we need Boost::context and OpenMP installed, it seems is not available in your system")
endif()
endif()
if (CUDA_ON_BACKEND STREQUAL "HIP")
## We need HIP
if (NOT HIP_FOUND)
message(FATAL_ERROR "Error to run CUDA on HIP (HIP backend) RocM/HIP, it seems is not available in your system")
endif()
endif()
if (CUDA_ON_BACKEND STREQUAL "CUDA")
## We need CUDA
if (NOT CUDA_FOUND)
message(FATAL_ERROR "Error to run on CUDA you need a CUDA compatible compiler, it seems is not available in your system")
endif()
endif()
add_subdirectory (src)
get_directory_property(hasParent PARENT_DIRECTORY)
if(hasParent)
set(DEFINE_GARBAGE_INJECTOR ${DEFINE_GARBAGE_INJECTOR} CACHE INTERNAL "")
set(CMAKE_CXX_EXTENSIONS ${CMAKE_CXX_EXTENSIONS} CACHE INTERNAL "")
set(CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS} CACHE INTERNAL "")
set(WARNING_SUPPRESSION_AND_OPTION_NVCC ${WARNING_SUPPRESSION_AND_OPTION_NVCC} CACHE INTERNAL "")
set(WARNING_SUPPRESSION_AND_OPTION_NVCC_TEXT ${WARNING_SUPPRESSION_AND_OPTION_NVCC_TEXT} CACHE INTERNAL "")
set(DEFINE_CUDIFY_USE_HIP ${DEFINE_CUDIFY_USE_HIP} CACHE INTERNAL "")
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} CACHE INTERNAL "")
set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} CACHE INTERNAL "")
set(DEFINE_HAVE_OPENMP ${DEFINE_HAVE_OPENMP} CACHE INTERNAL "")
set(DEFINE_CUDIFY_USE_HIP ${DEFINE_CUDIFY_USE_HIP} CACHE INTERNAL "")
set(DEFINE_CUDIFY_BACKEND ${DEFINE_CUDIFY_BACKEND} CACHE INTERNAL "")
set(DEFINE_CUDA_GPU ${DEFINE_CUDA_GPU} CACHE INTERNAL "")
set(DEFINE_HAVE_OPENMP ${DEFINE_HAVE_OPENMP} CACHE INTERNAL "")
set(DEFINE_HAVE_ALPAKA ${DEFINE_HAVE_ALPAKA} CACHE INTERNAL "")
set(CUDA_FOUND ${CUDA_FOUND} CACHE INTERNAL "")
set(CUDA_VERSION_MAJOR ${CUDA_VERSION_MAJOR} CACHE INTERNAL "")
set(CUDA_VERSION_MINOR ${CUDA_VERSION_MINOR} CACHE INTERNAL "")
set(CUDA_VERSION_PATCH ${CUDA_VERSION_PATCH} CACHE INTERNAL "")
endif()
#!groovy
parallel (
"gin" : {node ('gin')
{
stage ('gin_build')
{
deleteDir()
int ntry = 5
while (ntry != 0)
{
try {
checkout scm
ntry = 0
}
catch (IOException e)
{
ntry--
sleep(50)
}
}
sh "./build.sh $WORKSPACE $NODE_NAME"
}
stage ('gin_run')
{
sh "./src/mem"
sh "./success.sh 2 gin openfpm_devices"
}
}},
"nyu" : {node ('nyu')
{
stage ('nyu_build')
{
deleteDir()
int ntry = 5
while (ntry != 0)
{
try {
checkout scm
ntry = 0
}
catch (IOException e)
{
ntry--
sleep(50)
}
}
sh "./build.sh $WORKSPACE $NODE_NAME"
}
stage ('nyu_run')
{
sh "./src/mem"
sh "./success.sh 2 nyu openfpm_devices"
}
}},
"sb15" : {node ('sbalzarini-mac-15')
{
env.PATH = "/usr/local/bin:${env.PATH}"
stage ('sb15_build')
{
deleteDir()
int ntry = 5
while (ntry != 0)
{
try {
checkout scm
ntry = 0
}
catch (IOException e)
{
ntry--
sleep(50)
}
}
sh "./build.sh $WORKSPACE $NODE_NAME"
}
stage ('sb15_run')
{
sh "./src/mem"
sh "./success.sh 2 sbalzarini-mac-15 openfpm_devices"
}
}}
)
#!groovy
parallel (
"centos" : {node ('cifarm-centos-node')
{
stage ('centos_build')
{
deleteDir()
int ntry = 5
while (ntry != 0)
{
try {
checkout scm
ntry = 0
}
catch (IOException e)
{
ntry--
sleep(50)
}
}
sh "./build.sh $WORKSPACE $NODE_NAME"
}
stage ('centos_run')
{
sh "./build/src/mem"
sh "./success.sh 2 centos openfpm_devices"
}
}},
"ubuntu" : {node ('cifarm-ubuntu-node')
{
stage ('ubuntu_build')
{
deleteDir()
int ntry = 5
while (ntry != 0)
{
try {
checkout scm
ntry = 0
}
catch (IOException e)
{
ntry--
sleep(50)
}
}
sh "./build.sh $WORKSPACE $NODE_NAME"
}
stage ('ubuntu_run')
{
sh "./build/src/mem"
sh "./success.sh 2 ubuntu openfpm_devices"
}
}},
"macos" : {node ('cifarm-mac-node')
{
env.PATH = "/usr/local/bin:${env.PATH}"
stage ('mac_build')
{
deleteDir()
int ntry = 5
while (ntry != 0)
{
try {
checkout scm
ntry = 0
}
catch (IOException e)
{
ntry--
sleep(50)
}
}
sh "./build.sh $WORKSPACE $NODE_NAME"
}
stage ('mac_run')
{
sh "./build/src/mem"
sh "./success.sh 2 macos openfpm_devices"
}
}}
)
SUBDIRS = src
bin_PROGRAMS =
test:
cd src && make test
#!/bin/sh
# a u t o g e n . s h
#
#
# Nothing to do we converted autotools to cmake but because many installation and build scripts call
#! /bin/bash
hostname=$(hostname)
echo "Machine: $hostname"
mkdir src/config
if [ ! -d $HOME/openfpm_dependencies/openfpm_devices/BOOST ]; then
if [ x"$hostname" == x"cifarm-mac-node" ]; then
echo "Compiling for OSX"
./install_BOOST.sh $HOME/openfpm_dependencies/openfpm_devices/ 4 darwin
else
echo "Compiling for Linux"
./install_BOOST.sh $HOME/openfpm_dependencies/openfpm_devices 4 gcc
fi
fi
sh ./autogen.sh
sh ./configure --with-boost=$HOME/openfpm_dependencies/openfpm_devices/BOOST
make
#! /bin/bash
mkdir src/config
sh ./autogen.sh
if [ "$2" == "master" ]
then
sh ./configure --disable-gpu
elif [ "$2" == "gin" ]
then
module load gcc/4.9.2
module load boost/1.54.0
sh ./configure --with-boost=/sw/apps/boost/1.54.0/
else
sh ./configure
fi
make
./src/mem
#!/bin/sh
# configure script
#
#
# Because we moved to cmake this script emulate the configure script from autotools
conf_options=
# Avoid depending upon Character Ranges.
as_cr_letters='abcdefghijklmnopqrstuvwxyz'
as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits
# as_fn_error STATUS ERROR [LINENO LOG_FD]
# ----------------------------------------
# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
# script with STATUS, using 1 if that was 0.
as_fn_error ()
{
as_status=$1; test $as_status -eq 0 && as_status=1
if test "$4"; then
as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
$as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
$as_echo "$as_me: error: $2" >&2
as_fn_exit $as_status
} # as_fn_error
# as_fn_exit STATUS
# -----------------
# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
as_fn_exit ()
{
set +e
as_fn_set_status $1
exit $1
} # as_fn_exit
# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
as_fn_set_status ()
{
return $1
} # as_fn_set_status
# Printing a long string crashes Solaris 7 /usr/bin/printf.
as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
# Prefer a ksh shell builtin over an external printf program on Solaris,
# but without wasting forks for bash or zsh.
if test -z "$BASH_VERSION$ZSH_VERSION" \
&& (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
as_echo='print -r --'
as_echo_n='print -rn --'
elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
as_echo='printf %s\n'
as_echo_n='printf %s'
else
if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
as_echo_n='/usr/ucb/echo -n'
else
as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
as_echo_n_body='eval
arg=$1;
case $arg in #(
*"$as_nl"*)
expr "X$arg" : "X\\(.*\\)$as_nl";
arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
esac;
expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
'
export as_echo_n_body
as_echo_n='sh -c $as_echo_n_body as_echo'
fi
export as_echo_body
as_echo='sh -c $as_echo_body as_echo'
fi
ac_user_opts='
enable_option_checking
enable_silent_rules
enable_shared
enable_static
with_pic
enable_fast_install
with_aix_soname
enable_dependency_tracking
with_gnu_ld
with_sysroot
enable_libtool_lock
enable_debug
with_metis
with_hdf5
with_libhilbert
enable_scan_coverty
enable_test_performance
enable_test_coverage
with_parmetis
enable_se_class1
enable_se_class2
enable_se_class3
with_action_on_error
with_boost
with_boost_libdir
with_boost_unit_test_framework
with_boost_program_options
with_boost_iostreams
with_blas
with_lapack
with_suitesparse
with_petsc
with_eigen
enable_gpu
'
rm -rf build
if [ ! -d "build" ]; then
mkdir build
fi
##### Go over all options
for ac_option
do
# If the previous option needs an argument, assign it.
if test -n "$ac_prev"; then
eval $ac_prev=\$ac_option
ac_prev=
continue
fi
case $ac_option in
*=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
*=) ac_optarg= ;;
*) ac_optarg=yes ;;
esac
# Accept the important Cygnus configure options, so we can diagnose typos.
case $ac_dashdash$ac_option in
--)
ac_dashdash=yes ;;
-bindir | --bindir | --bindi | --bind | --bin | --bi)
ac_prev=bindir ;;
-bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
bindir=$ac_optarg ;;
-build | --build | --buil | --bui | --bu)
ac_prev=build_alias ;;
-build=* | --build=* | --buil=* | --bui=* | --bu=*)
build_alias=$ac_optarg ;;
-cache-file | --cache-file | --cache-fil | --cache-fi \
| --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
ac_prev=cache_file ;;
-cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
| --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
cache_file=$ac_optarg ;;
--config-cache | -C)
cache_file=config.cache ;;
-datadir | --datadir | --datadi | --datad)
ac_prev=datadir ;;
-datadir=* | --datadir=* | --datadi=* | --datad=*)
datadir=$ac_optarg ;;
-datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
| --dataroo | --dataro | --datar)
ac_prev=datarootdir ;;
-datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
| --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
datarootdir=$ac_optarg ;;
-disable-* | --disable-*)
ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
as_fn_error $? "invalid feature name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_useropt in
gpu)
conf_options="$conf_options -DENABLE_GPU=OFF"
;;
*) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
ac_unrecognized_sep=', ';;
esac
eval enable_$ac_useropt=no ;;
-docdir | --docdir | --docdi | --doc | --do)
ac_prev=docdir ;;
-docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
docdir=$ac_optarg ;;
-dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
ac_prev=dvidir ;;
-dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
dvidir=$ac_optarg ;;
-enable-* | --enable-*)
ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
as_fn_error $? "invalid feature name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_useropt in
debug)
conf_options="$conf_options -DCMAKE_BUILD_TYPE=Debug"
debug_mode=1
;;
se_class1)
conf_options="$conf_options -DSE_CLASS1=ON"
;;
se_class2)
conf_options="$conf_options -DSE_CLASS2=ON"
;;
se_class3)
conf_options="$conf_options -DSE_CLASS3=ON"
;;
gpu)
if [ x"$CXX" == x"" ]; then
conf_options="$conf_options"
else
conf_options="$conf_options -DCMAKE_CUDA_HOST_COMPILER=$(which $CXX)"
fi
conf_options="$conf_options -DENABLE_GPU=ON"
;;
*) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
ac_unrecognized_sep=', '
;;
esac
eval enable_$ac_useropt=\$ac_optarg ;;
-exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
| --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
| --exec | --exe | --ex)
ac_prev=exec_prefix ;;
-exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
| --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
| --exec=* | --exe=* | --ex=*)
exec_prefix=$ac_optarg ;;
-gas | --gas | --ga | --g)
# Obsolete; use --with-gas.
with_gas=yes ;;
-help | --help | --hel | --he | -h)
ac_init_help=long ;;
-help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
ac_init_help=recursive ;;
-help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
ac_init_help=short ;;
-host | --host | --hos | --ho)
ac_prev=host_alias ;;
-host=* | --host=* | --hos=* | --ho=*)
host_alias=$ac_optarg ;;
-htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
ac_prev=htmldir ;;
-htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
| --ht=*)
htmldir=$ac_optarg ;;
-includedir | --includedir | --includedi | --included | --include \
| --includ | --inclu | --incl | --inc)
ac_prev=includedir ;;
-includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
| --includ=* | --inclu=* | --incl=* | --inc=*)
includedir=$ac_optarg ;;
-infodir | --infodir | --infodi | --infod | --info | --inf)
ac_prev=infodir ;;
-infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
infodir=$ac_optarg ;;
-libdir | --libdir | --libdi | --libd)
ac_prev=libdir ;;
-libdir=* | --libdir=* | --libdi=* | --libd=*)
libdir=$ac_optarg ;;
-libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
| --libexe | --libex | --libe)
ac_prev=libexecdir ;;
-libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
| --libexe=* | --libex=* | --libe=*)
libexecdir=$ac_optarg ;;
-localedir | --localedir | --localedi | --localed | --locale)
ac_prev=localedir ;;
-localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
localedir=$ac_optarg ;;
-localstatedir | --localstatedir | --localstatedi | --localstated \
| --localstate | --localstat | --localsta | --localst | --locals)
ac_prev=localstatedir ;;
-localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
| --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
localstatedir=$ac_optarg ;;
-mandir | --mandir | --mandi | --mand | --man | --ma | --m)
ac_prev=mandir ;;
-mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
mandir=$ac_optarg ;;
-nfp | --nfp | --nf)
# Obsolete; use --without-fp.
with_fp=no ;;
-no-create | --no-create | --no-creat | --no-crea | --no-cre \
| --no-cr | --no-c | -n)
no_create=yes ;;
-no-recursion | --no-recursion | --no-recursio | --no-recursi \
| --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
no_recursion=yes ;;
-oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
| --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
| --oldin | --oldi | --old | --ol | --o)
ac_prev=oldincludedir ;;
-oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
| --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
| --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
oldincludedir=$ac_optarg ;;
-prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
ac_prev=prefix ;;
-prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
prefix=$ac_optarg
conf_options="$conf_options -DCMAKE_INSTALL_PREFIX=$ac_optarg"
echo "$prefix" > install_dir
;;
-program-prefix | --program-prefix | --program-prefi | --program-pref \
| --program-pre | --program-pr | --program-p)
ac_prev=program_prefix ;;
-program-prefix=* | --program-prefix=* | --program-prefi=* \
| --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
program_prefix=$ac_optarg ;;
-program-suffix | --program-suffix | --program-suffi | --program-suff \
| --program-suf | --program-su | --program-s)
ac_prev=program_suffix ;;
-program-suffix=* | --program-suffix=* | --program-suffi=* \
| --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
program_suffix=$ac_optarg ;;
-program-transform-name | --program-transform-name \
| --program-transform-nam | --program-transform-na \
| --program-transform-n | --program-transform- \
| --program-transform | --program-transfor \
| --program-transfo | --program-transf \
| --program-trans | --program-tran \
| --progr-tra | --program-tr | --program-t)
ac_prev=program_transform_name ;;
-program-transform-name=* | --program-transform-name=* \
| --program-transform-nam=* | --program-transform-na=* \
| --program-transform-n=* | --program-transform-=* \
| --program-transform=* | --program-transfor=* \
| --program-transfo=* | --program-transf=* \
| --program-trans=* | --program-tran=* \
| --progr-tra=* | --program-tr=* | --program-t=*)
program_transform_name=$ac_optarg ;;
-pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
ac_prev=pdfdir ;;
-pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
pdfdir=$ac_optarg ;;
-psdir | --psdir | --psdi | --psd | --ps)
ac_prev=psdir ;;
-psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
psdir=$ac_optarg ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
| --sbi=* | --sb=*)
sbindir=$ac_optarg ;;
-sharedstatedir | --sharedstatedir | --sharedstatedi \
| --sharedstated | --sharedstate | --sharedstat | --sharedsta \
| --sharedst | --shareds | --shared | --share | --shar \
| --sha | --sh)
ac_prev=sharedstatedir ;;
-sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
| --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
| --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
| --sha=* | --sh=*)
sharedstatedir=$ac_optarg ;;
-site | --site | --sit)
ac_prev=site ;;
-site=* | --site=* | --sit=*)
site=$ac_optarg ;;
-srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
ac_prev=srcdir ;;
-srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
srcdir=$ac_optarg ;;
-sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
| --syscon | --sysco | --sysc | --sys | --sy)
ac_prev=sysconfdir ;;
-sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
| --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
sysconfdir=$ac_optarg ;;
-target | --target | --targe | --targ | --tar | --ta | --t)
ac_prev=target_alias ;;
-target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
target_alias=$ac_optarg ;;
-v | -verbose | --verbose | --verbos | --verbo | --verb)
verbose=yes ;;
-version | --version | --versio | --versi | --vers | -V)
ac_init_version=: ;;
-with-* | --with-*)
ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
as_fn_error $? "invalid package name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_useropt in
libhilbert)
conf_options="$conf_options -DLIBHILBERT_ROOT=$ac_optarg"
;;
metis)
conf_options="$conf_options -DMETIS_ROOT=$ac_optarg"
;;
parmetis)
conf_options="$conf_options -DPARMETIS_ROOT=$ac_optarg"
;;
hdf5)
conf_options="$conf_options -DHDF5_ROOT=$ac_optarg"
;;
petsc)
conf_options="$conf_options -DPETSC_ROOT=$ac_optarg"
;;
blas)
conf_options="$conf_options -DOPENBLAS_ROOT=$ac_optarg"
;;
suitesparse)
conf_options="$conf_options -DSUITESPARSE_ROOT=$ac_optarg"
;;
eigen)
conf_options="$conf_options -DEIGEN3_ROOT=$ac_optarg"
;;
boost)
conf_options="$conf_options -DBOOST_ROOT=$ac_optarg"
;;
mpivendor)
conf_options="$conf_options -DMPI_VENDOR=$ac_optarg"
;;
*) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
ac_unrecognized_sep=', ';;
esac
eval with_$ac_useropt=\$ac_optarg ;;
-without-* | --without-*)
ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
as_fn_error $? "invalid package name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"with_$ac_useropt"
"*) ;;
*) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
ac_unrecognized_sep=', ';;
esac
eval with_$ac_useropt=no ;;
--x)
# Obsolete; use --with-x.
with_x=yes ;;
-x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
| --x-incl | --x-inc | --x-in | --x-i)
ac_prev=x_includes ;;
-x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
| --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
x_includes=$ac_optarg ;;
-x-libraries | --x-libraries | --x-librarie | --x-librari \
| --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
ac_prev=x_libraries ;;
-x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
| --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
x_libraries=$ac_optarg ;;
-*) as_fn_error $? "unrecognized option: \`$ac_option'
Try \`$0 --help' for more information"
;;
*=*)
ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
# Reject names that are not valid shell variable names.
case $ac_envvar in #(
'' | [0-9]* | *[!_$as_cr_alnum]* )
as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
esac
eval $ac_envvar=\$ac_optarg
export $ac_envvar ;;
*)
# FIXME: should be removed in autoconf 3.0.
$as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
$as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
: "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
;;
esac
done
if [ x"$debug_mode" != x"1" ]; then
conf_options="$conf_options -DCMAKE_BUILD_TYPE=Release"
fi
cd build
## remove enerything
echo "Calling cmake ../. $conf_options"
rm ../error_code
cmake ../. $conf_options
if [ $? != 0 ]; then
#ok something went wrong the install script analyze the return code to potentially fix the problem automatically
# Read the error code and exit with that
if [ -f ../error_code ]; then
ecod=$(cat ../error_code)
if [ x"$ecod" == x"0" ]; then
exit 1
else
echo "Analyze error $ecod"
exit $ecod
fi
else
exit 1
fi
fi
cd ..
echo "all:
\$(MAKE) -C build \$@
clean:
\$(MAKE) -C build \$@
install:
\$(MAKE) -C build \$@
pdata:
\$(MAKE) -C build \$@
numerics:
\$(MAKE) -C build \$@
.PHONY: all clean install" > Makefile
echo "$0 $@" > config.log
/*
* cuda_macro.h
*
* Created on: Aug 17, 2014
* Author: Pietro Incardona
*/
#include <iostream>
#define CUDA_SAFE_CALL(call) {\
cudaError_t err = call;\
if (cudaSuccess != err) {\
std::cerr << "Cuda error in file "<< __FILE__ << " in line " << __LINE__ << ": " << cudaGetErrorString(err);\
}\
}
#!/bin/bash
# check if the directory $1/BOOST exist
if [ -d "$1/BOOST" ]; then
echo "BOOST already installed"
exit 0
fi
wget http://ppmcore.mpi-cbg.de/upload/boost_1_68_0.tar.bz2
tar -xvf boost_1_68_0.tar.bz2
cd boost_1_68_0
if [ x"$4" != x"" ]; then
if [ -f $HOME/user-config.jam ]; then
mv $HOME/user-config.jam $HOME/user-config.jam_bck
fi
if [ x"$5" != x"" ]; then
echo "using gcc : $5.$6 : $4 ; " > $HOME/user-config.jam
else
echo "using gcc : : $4 ; " > $HOME/user-config.jam
fi
fi
./bootstrap.sh --with-toolset=$3
mkdir $1/BOOST
./b2 -j $2 install --prefix=$1/BOOST
rm -rf boost_1_68_0
if [ -f $HOME/user-config.jam_bck ]; then
mv $HOME/user-config.jam_bck $HOME/user-config.jam
fi
rm -rf boost_1_68_0.tar.bz2
if(CUDA_FOUND)
set(CUDA_SOURCES memory/CudaMemory.cu)
if(NOT CUDA_ON_BACKEND STREQUAL "None")
set(CUDA_SOURCES memory/CudaMemory.cu )
set(CUDA_SOURCES_TEST util/cudify/cudify_unit_test.cu)
if (CUDA_ON_BACKEND STREQUAL "SEQUENTIAL" OR CUDA_ON_BACKEND STREQUAL "OpenMP" OR CUDA_ON_BACKEND STREQUAL "HIP")
set_source_files_properties(${CUDA_SOURCES} PROPERTIES LANGUAGE CXX)
set_source_files_properties(${CUDA_SOURCES_TEST} PROPERTIES LANGUAGE CXX)
endif()
if (CUDA_ON_BACKEND STREQUAL "SEQUENTIAL" OR CUDA_ON_BACKEND STREQUAL "OpenMP" )
set_source_files_properties(${CUDA_SOURCES} PROPERTIES COMPILE_FLAGS "-D__NVCC__ -DCUDART_VERSION=11000")
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
add_definitions("-x c++")
endif()
endif()
else()
set(CUDA_SOURCES )
set(CUDA_SOURCES )
set(CUDA_SOURCES_TEST )
endif()
if ( CUDA_ON_BACKEND STREQUAL "HIP" AND HIP_FOUND )
add_executable(mem main.cpp memory/HeapMemory.cpp ${CUDA_SOURCES} Memleak_check.cpp)
hip_add_library(ofpmmemory STATIC memory/HeapMemory.cpp util/cudify/cudify_vars.cpp memory/PtrMemory.cpp memory/mem_conf.cpp ${CUDA_SOURCES})
hip_add_library(ofpmmemory_dl SHARED memory/HeapMemory.cpp util/cudify/cudify_vars.cpp memory/PtrMemory.cpp memory/mem_conf.cpp ${CUDA_SOURCES})
add_library(ofpmmemory STATIC memory/HeapMemory.cpp memory/PtrMemory.cpp Memleak_check.cpp ${CUDA_SOURCES})
add_library(ofpmmemory_se2 STATIC memory/HeapMemory.cpp memory/PtrMemory.cpp Memleak_check.cpp ${CUDA_SOURCES})
set(CMAKE_CXX_COMPILER ${HIP_HIPCC_EXECUTABLE})
target_compile_definitions(ofpmmemory_se2 PUBLIC SE_CLASS2)
hip_add_executable(mem main.cpp memory/HeapMemory.cpp util/cudify/cudify_vars.cpp memory/mem_conf.cpp ${CUDA_SOURCES} ${CUDA_SOURCES_TEST})
if (CUDA_FOUND)
target_compile_options(mem PUBLIC $<$<COMPILE_LANGUAGE:CUDA>:-Xcudafe "--display_error_number --diag_suppress=2885 --diag_suppress=2887 --diag_suppress=2888 --diag_suppress=186 --diag_suppress=111" --expt-extended-lambda>)
endif()
target_include_directories (mem PUBLIC ${CUDA_INCLUDE_DIRS})
target_include_directories (mem PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories (mem PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/config)
target_include_directories (mem PUBLIC ${Boost_INCLUDE_DIRS})
list(APPEND HIP_HIPCC_FLAGS -D__NVCC__ -D__HIP__ -DCUDART_VERSION=11000 -D__CUDACC__ -D__CUDACC_VER_MAJOR__=11 -D__CUDACC_VER_MINOR__=0 -D__CUDACC_VER_BUILD__=0 --std=c++17)
target_include_directories (ofpmmemory PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories (ofpmmemory PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/config)
set(CMAKE_SHARED_LIBRARY_CXX_FLAGS "-fPIC")
set_property(TARGET ofpmmemory PROPERTY NO_SONAME ON)
set_property(TARGET ofpmmemory_dl PROPERTY NO_SONAME ON)
else()
target_include_directories (ofpmmemory_se2 PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories (ofpmmemory_se2 PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/config)
add_executable(mem main.cpp memory/HeapMemory.cpp util/cudify/cudify_vars.cpp util/cudify/cudify_unit_test.cu memory/mem_conf.cpp ${CUDA_SOURCES} ${CUDA_SOURCES_TEST})
set_property(TARGET mem PROPERTY CUDA_ARCHITECTURES OFF)
add_library(ofpmmemory STATIC memory/HeapMemory.cpp util/cudify/cudify_vars.cpp memory/PtrMemory.cpp memory/mem_conf.cpp ${CUDA_SOURCES})
set_property(TARGET ofpmmemory PROPERTY CUDA_ARCHITECTURES OFF)
add_library(ofpmmemory_dl SHARED memory/HeapMemory.cpp util/cudify/cudify_vars.cpp memory/PtrMemory.cpp memory/mem_conf.cpp ${CUDA_SOURCES})
set_property(TARGET ofpmmemory_dl PROPERTY CUDA_ARCHITECTURES OFF)
endif()
target_link_libraries(mem ${Boost_LIBRARIES})
set_property(TARGET mem PROPERTY CUDA_ARCHITECTURES OFF)
set_property(TARGET mem PROPERTY POSITION_INDEPENDENT_CODE ON)
set_property(TARGET ofpmmemory PROPERTY POSITION_INDEPENDENT_CODE ON)
set_property(TARGET ofpmmemory_dl PROPERTY POSITION_INDEPENDENT_CODE ON)
install(TARGETS ofpmmemory ofpmmemory_se2
DESTINATION openfpm_devices/lib )
if (HIP_FOUND)
SET(CMAKE_EXE_LINKER_FLAGS "--amdgpu-target=${AMD_ARCH_COMPILE}")
SET(CMAKE_SHARED_LINKER_FLAGS "--amdgpu-target=${AMD_ARCH_COMPILE}")
endif()
install(FILES memory/ExtPreAlloc.hpp
memory/BHeapMemory.hpp
memory/HeapMemory.hpp
memory/memory.hpp
memory/PtrMemory.hpp
memory/CudaMemory.cuh
DESTINATION openfpm_devices/include/memory)
install(FILES util/print_stack.hpp
DESTINATION openfpm_devices/include/util)
if ( CMAKE_COMPILER_IS_GNUCC )
target_compile_options(mem PRIVATE "-Wno-deprecated-declarations")
if (TEST_COVERAGE)
target_compile_options(mem PRIVATE $<$<COMPILE_LANGUAGE:CXX>: -fprofile-arcs -ftest-coverage>)
endif()
endif()
install(FILES Memleak_check.hpp
DESTINATION openfpm_devices/include/ )
install(FILES util/se_util.hpp
util/cuda_util.hpp
DESTINATION openfpm_devices/include/util)
if (CMAKE_CUDA_COMPILER_ID STREQUAL "Clang")
add_definitions(-D__STRICT_ANSI__)
endif()
install(FILES ptr_info.hpp
DESTINATION openfpm_devices/include)
if (CUDA_FOUND)
target_include_directories(mem PUBLIC ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES})
if (CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
target_compile_options(mem PUBLIC $<$<COMPILE_LANGUAGE:CUDA>:-Xcudafe "--display_error_number --diag_suppress=2885 --diag_suppress=2887 --diag_suppress=2888 --diag_suppress=186 --diag_suppress=111" --expt-extended-lambda>)
endif()
if (TEST_COVERAGE)
target_compile_options(mem PRIVATE $<$<COMPILE_LANGUAGE:CUDA>: -Xcompiler "-fprofile-arcs -ftest-coverage" >)
endif()
if (CUDA_ON_BACKEND STREQUAL "CUDA")
set_source_files_properties(memory/mem_conf.cpp PROPERTIES LANGUAGE CUDA)
endif()
endif()
# Request that particles be built with -std=c++11
# As this is a public compile feature anything that links to particles
# will also build with -std=c++11
target_compile_features(mem PUBLIC cxx_std_11)
target_include_directories (mem PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories (mem PUBLIC ${CMAKE_BINARY_DIR}/config)
target_include_directories (mem PUBLIC ${Boost_INCLUDE_DIRS})
if (ALPAKA_ROOT)
target_include_directories (mem PUBLIC ${ALPAKA_ROOT}/include)
endif()
target_include_directories (ofpmmemory PRIVATE ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES})
target_include_directories (ofpmmemory PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories (ofpmmemory PRIVATE ${CMAKE_BINARY_DIR}/config)
target_include_directories (ofpmmemory PUBLIC ${ALPAKA_ROOT}/include)
target_include_directories (ofpmmemory PUBLIC ${Boost_INCLUDE_DIRS})
#if(BUILD_TESTING)
target_include_directories (ofpmmemory_dl PRIVATE ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES})
target_include_directories (ofpmmemory_dl PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories (ofpmmemory_dl PRIVATE ${CMAKE_BINARY_DIR}/config)
target_include_directories (ofpmmemory_dl PUBLIC ${ALPAKA_ROOT}/include)
target_include_directories (ofpmmemory_dl PUBLIC ${Boost_INCLUDE_DIRS})
# add_executable(particle_test test.cu)
target_link_libraries(mem ${Boost_LIBRARIES})
if (OPENMP_FOUND)
target_link_libraries(mem OpenMP::OpenMP_CXX)
target_link_libraries(ofpmmemory OpenMP::OpenMP_CXX)
target_link_libraries(ofpmmemory_dl OpenMP::OpenMP_CXX)
endif()
# set_target_properties(particle_test PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
# target_link_libraries(particle_test PRIVATE particles)
target_link_libraries(ofpmmemory ${Boost_LIBRARIES})
target_link_libraries(ofpmmemory_dl ${Boost_LIBRARIES})
# add_test(NAME particles_10k COMMAND particle_test 10000 )
# add_test(NAME particles_256k COMMAND particle_test 256000 )
if (TEST_COVERAGE)
target_link_libraries(mem -lgcov)
endif()
# if(APPLE)
# We need to add the default path to the driver (libcuda.dylib) as an rpath,
# so that the static cuda runtime can find it at runtime.
# set_property(TARGET particle_test PROPERTY BUILD_RPATH ${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES})
# endif()
#endif()
install(TARGETS ofpmmemory ofpmmemory_dl
DESTINATION openfpm_devices/lib
COMPONENT OpenFPM)
install(FILES memory/ExtPreAlloc.hpp
memory/BHeapMemory.hpp
memory/HeapMemory.hpp
memory/memory.hpp
memory/PtrMemory.hpp
memory/CudaMemory.cuh
util/util_unit_tests.hpp
DESTINATION openfpm_devices/include/memory
COMPONENT OpenFPM)
install(FILES memory/ExtPreAlloc.hpp
memory/BHeapMemory.hpp
memory/HeapMemory.hpp
memory/memory.hpp
memory/PtrMemory.hpp
memory/CudaMemory.cuh
memory/mem_conf.hpp
DESTINATION openfpm_devices/include/memory
COMPONENT OpenFPM)
install(FILES util/ofp_context.hpp
util/gpu_context.hpp
util/gpu_types.hpp
util/print_stack.hpp
util/se_util.hpp
util/cuda_util.hpp
util/cuda_kernel_error_checker.hpp
DESTINATION openfpm_devices/include/util
COMPONENT OpenFPM)
install(FILES util/cudify/alpaka/cudify_alpaka.hpp
util/cudify/alpaka/cudify_hardware_alpaka.hpp
DESTINATION openfpm_devices/include/util/cudify/alpaka
COMPONENT OpenFPM)
install(FILES util/cudify/sequential/cudify_sequential.hpp
DESTINATION openfpm_devices/include/util/cudify/sequential
COMPONENT OpenFPM)
install(FILES util/cudify/openmp/cudify_openmp.hpp
DESTINATION openfpm_devices/include/util/cudify/openmp
COMPONENT OpenFPM)
install(FILES util/cudify/hip/cudify_hip.hpp
DESTINATION openfpm_devices/include/util/cudify/hip
COMPONENT OpenFPM)
install(FILES util/cudify/cuda/cudify_cuda.hpp
util/cudify/cuda/operators.hpp
DESTINATION openfpm_devices/include/util/cudify/cuda
COMPONENT OpenFPM)
install(FILES util/cudify/cudify_hardware_cpu.hpp
DESTINATION openfpm_devices/include/util/cudify
COMPONENT OpenFPM)
#include "config.h"
#include "Memleak_check.hpp"
#include "ptr_info.hpp"
// counter for allocation of new memory
long int new_data;
// counter to delete memory
size_t delete_data;
// structure that store all the active pointer
std::map<byte_ptr, ptr_info> active_ptr;
// Running process id
long int process_v_cl;
// Process to print
long int process_to_print = 0;
// A way to stop the color
std::string col_stop("\e[0m");
// Print a message when allocation with id==msg_on_alloc is performed
long int msg_on_alloc = -1;
long int msg_on_dealloc = -1;
// throw when allocation with id==throw_on_alloc is performed
long int thr_on_alloc = -1;
#include "config.h"
#include <iostream>
#include <map>
#include <iomanip>
#ifndef MEMLEAK_CHECK_HPP
#define MEMLEAK_CHECK_HPP
typedef unsigned char * byte_ptr;
#ifdef SE_CLASS2
/////// POSSIBLE EVENTS /////////
#define VCLUSTER_EVENT 0x2001
#define VECTOR_EVENT 0x1102
#define VECTOR_STD_EVENT 0x1101
#define GRID_EVENT 0x1100
#define VECTOR_DIST_EVENT 0x4002
#define GRID_DIST_EVENT 0x4001
#define HEAPMEMORY_EVENT 0x0100
#define CUDAMEMORY_EVENT 0x0101
/////////////////////////////////
#include "util/se_util.hpp"
#include "ptr_info.hpp"
#include <string>
#define MEM_ERROR_OBJECT std::runtime_error("Runtime memory error")
extern long int msg_on_alloc;
extern long int msg_on_dealloc;
extern long int thr_on_alloc;
extern std::string col_stop;
extern long int new_data;
extern size_t delete_data;
extern std::map<byte_ptr,ptr_info> active_ptr;
extern long int process_v_cl;
extern long int process_to_print;
/*! \brief Check and remove the active pointer
*
* Check and remove the pointer from the active list
*
* \param pointer to check and remove
*
* \return true if the operation succeded, false if the pointer does not exist
*
*/
static bool remove_ptr(const void * ptr)
{
// Check if the pointer exist
std::map<byte_ptr, ptr_info>::iterator it = active_ptr.find((byte_ptr)ptr);
// if the element does not exist, print that something wrong happened and return
if ( it == active_ptr.end() )
{
std::cout << "Error " << __FILE__ << ":" << __LINE__ << " pointer not found " << ptr << "\n";
ACTION_ON_ERROR(MEM_ERROR_OBJECT);
return false;
}
it->second.ref_id--;
// erase the pointer
if (it->second.ref_id == 0)
active_ptr.erase((byte_ptr)ptr);
return true;
}
#define PRJ_DEVICES 0
#define PRJ_DATA 1
#define PRJ_VCLUSTER 2
#define PRJ_IO 3
#define PRJ_PDATA 4
/*! \brief Get the color for printing unalloc pointers
*
* \param project_id id of the project
* \param size size of the allocation
* \param col color
*
*/
inline static void get_color(size_t project_id, size_t size, std::string & col)
{
if (size == 8)
{
switch (project_id)
{
case PRJ_DEVICES:
col = std::string("\e[97m");
break;
case PRJ_DATA:
col = std::string("\e[95m");
break;
case PRJ_VCLUSTER:
col = std::string("\e[96m");
break;
case PRJ_IO:
col = std::string("\e[97m");
break;
case PRJ_PDATA:
col = std::string("\e[93m");
break;
}
}
else
{
switch (project_id)
{
case PRJ_DEVICES:
col = std::string("\e[7;92m");
break;
case PRJ_DATA:
col = std::string("\e[7;95m");
break;
case PRJ_VCLUSTER:
col = std::string("\e[7;96m");
break;
case PRJ_IO:
col = std::string("\e[7;97m");
break;
case PRJ_PDATA:
col = std::string("\e[7;93m");
break;
}
}
}
/*! \brief Given the structure id it convert to a human readable structure string
*
* \param project_id id of the project
* \param prj string that identify the project
*
*/
inline static void get_structure(size_t struct_id, std::string & str)
{
switch (struct_id)
{
case VCLUSTER_EVENT:
str = std::string("Vcluster");
break;
case VECTOR_STD_EVENT:
str = std::string("Vector_std");
break;
case VECTOR_EVENT:
str = std::string("Vector_native");
break;
case GRID_EVENT:
str = std::string("Grid");
break;
case VECTOR_DIST_EVENT:
str = std::string("Vector distributed");
break;
case GRID_DIST_EVENT:
str = std::string("Grid distributed");
break;
case HEAPMEMORY_EVENT:
str = std::string("HeapMemory");
break;
case CUDAMEMORY_EVENT:
str = std::string("CudaMemory");
break;
default:
str = std::to_string(struct_id);
}
}
/*! \brief Given the project id it convert to a human readable project string
*
* \param project_id id of the project
* \param prj string that identify the project
*
*/
inline static void get_project(size_t project_id, std::string & prj)
{
switch (project_id)
{
case PRJ_DEVICES:
prj = std::string("devices");
break;
case PRJ_DATA:
prj = std::string("data");
break;
case PRJ_VCLUSTER:
prj = std::string("vcluster");
break;
case PRJ_IO:
prj = std::string("io");
break;
case PRJ_PDATA:
prj = std::string("pdata");
break;
}
}
/*! \brief Print all active structures
*
* Print all active structures
*
*/
inline static void print_alloc()
{
std::string col;
std::string sid;
std::string prj;
for (std::map<byte_ptr,ptr_info>::iterator it = active_ptr.begin(); it != active_ptr.end(); ++it)
{
get_color(it->second.project_id,it->second.size,col);
get_structure(it->second.struct_id,sid);
get_project(it->second.project_id,prj);
std::cout << col << "Allocated memory " << (void *)it->first << " size=" << it->second.size << " id=" << it->second.id << " structure id=" << std::hex << sid << std::dec << " project id=" << prj << col_stop << "\n";
}
}
/* \brief When the allocation id==break_id is performed, print a message
*
* \param break_id
*
*/
inline static void message_on_alloc(long int break_id)
{
msg_on_alloc = break_id;
}
/* \brief When the de-allocation id==break_id is performed, print a message
*
* \param break_id
*
*/
inline static void message_on_dealloc(long int break_id)
{
msg_on_dealloc = break_id;
}
/* \brief When the allocation id==break_id is performed, throw
*
* \param throw_id
*
*/
inline static void throw_on_alloc(long int throw_id)
{
thr_on_alloc = throw_id;
}
/*! \brief Add the new allocated active pointer
*
* Add the new allocated active pointer
*
* \param new data active pointer
* \param sz size of the new allocated memory
*
*/
inline static bool check_new(const void * data, size_t sz, size_t struct_id, size_t project_id)
{
// Add a new pointer
new_data++;
ptr_info & ptr = active_ptr[(byte_ptr)data];
if (ptr.ref_id >= 1)
{
if (sz > ptr.size) ptr.size = sz;
}
else
ptr.size = sz;
ptr.id = new_data;
ptr.struct_id = struct_id;
ptr.project_id = project_id;
ptr.ref_id++;
#ifdef SE_CLASS2_VERBOSE
if (process_to_print < 0 || process_to_print == process_v_cl)
std::cout << "New data: " << new_data << " " << data << " " << ptr.size << "\n";
#endif
if (msg_on_alloc == new_data)
std::cout << "Detected allocation: " << __FILE__ << ":" << __LINE__ << " id=" << msg_on_alloc << "\n";
if (thr_on_alloc == new_data)
throw MEM_ERROR_OBJECT;
return true;
}
/*! \brief check and delete a pointer
*
* check and delete a pointer from the list of active pointers
*
* \param pointer data
* \return true if the operation to delete succeed
*
*/
inline static bool check_delete(const void * data)
{
if (data == NULL) return true;
// Delete the pointer
delete_data++;
if (msg_on_dealloc == (long int)delete_data)
std::cout << "Detected destruction: " << __FILE__ << ":" << __LINE__ << " id=" << msg_on_alloc << "\n";
bool result = remove_ptr(data);
#ifdef SE_CLASS2_VERBOSE
if (process_to_print < 0 || process_to_print == process_v_cl)
std::cout << "Delete data: " << delete_data << " " << data << "\n";
#endif
return result;
}
/*! \brief check if the access is valid
*
* check if the access is valid
*
* \param ptr pointer we are going to access
* \param size_access is the size in byte of the data we are fetching
*
* \return true if the pointer is valid
*
*/
inline static bool check_valid(const void * ptr, size_t size_access)
{
if (active_ptr.size() == 0)
{
std::cerr << "Error invalid pointer: " << __FILE__ << ":" << __LINE__ << " " << ptr << "\n";
ACTION_ON_ERROR(MEM_ERROR_OBJECT);
return false;
}
// get the upper bound
std::map<byte_ptr, ptr_info>::iterator l_b = active_ptr.upper_bound((byte_ptr)ptr);
// if there is no memory that satisfy the request
if (l_b == active_ptr.begin())
{
if (process_to_print < 0 || process_to_print == process_v_cl)
{
std::cerr << "Error invalid pointer: " << __FILE__ << ":" << __LINE__ << " " << ptr << " base allocation id=" << l_b->second.id << "\n";
ACTION_ON_ERROR(MEM_ERROR_OBJECT);
}
return false;
}
//! subtract one
l_b--;
// if there is no memory that satisfy the request
if (l_b == active_ptr.end())
{
if (process_to_print < 0 || process_to_print == process_v_cl)
{
std::cerr << "Error invalid pointer: " << __FILE__ << ":" << __LINE__ << " " << ptr << " base allocation id=" << l_b->second.id << "\n";
ACTION_ON_ERROR(MEM_ERROR_OBJECT);
}
return false;
}
// check if ptr is in the range
size_t sz = l_b->second.size;
if (((unsigned char *)l_b->first) + sz < ((unsigned char *)ptr) + size_access)
{
bool found = false;
// Here we do a full search across all the registered pointers
std::map<byte_ptr, ptr_info>::iterator fit = active_ptr.begin();
for(; fit != active_ptr.end(); fit++)
{
if (ptr >= fit->first && (((unsigned char *)ptr) + size_access) <= (((unsigned char *)fit->first) + fit->second.size) )
{
found = true;
break;
}
}
if (found == false)
{
if (process_to_print < 0 || process_to_print == process_v_cl)
{
std::cerr << "Error invalid pointer: " << __FILE__ << ":" << __LINE__ << " " << ptr << " base allocation id=" << l_b->second.id << "\n";
ACTION_ON_ERROR(MEM_ERROR_OBJECT);
}
}
}
return true;
}
/*! \brief check if the access is valid
*
* check if the access is valid
*
* \param ptr pointer we are going to access
* \param size_access is the size in byte of the data we are fetching
*
* \return true if the pointer is valid
*
*/
inline static long int check_whoami(const void * ptr, size_t size_access)
{
if (active_ptr.size() == 0)
return -1;
// get the upper bound
std::map<byte_ptr, ptr_info>::iterator l_b = active_ptr.upper_bound((byte_ptr)ptr);
// if there is no memory that satisfy the request
if (l_b == active_ptr.begin())
return -1;
//! subtract one
l_b--;
// if there is no memory that satisfy the request
if (l_b == active_ptr.end())
return -1;
// check if ptr is in the range
size_t sz = l_b->second.size;
if (((unsigned char *)l_b->first) + sz < ((unsigned char *)ptr) + size_access)
return -1;
return l_b->second.id;
}
/*! \brief In case of Parallel application it set the process that print the
*
* \param p_to_print is < 0 (Mean all)
*
*/
inline static void set_process_to_print(long int p_to_print)
{
process_to_print = p_to_print;
}
#else
#endif
#endif
/* Coverty scan */
${DEFINE_COVERTY_SCAN}
/* GPU support */
${DEFINE_CUDA_GPU}
/* Debug */
${DEFINE_DEBUG} /**/
/* Debug */
${DEFINE_DEBUG_MODE} /**/
/* Define to dummy `main' function (if any) required to link to the Fortran
libraries. */
${DEFINE_F77_DUMMY_MAIN}
/* Define if F77 and FC dummy `main' functions are identical. */
${DEFINE_FC_DUMMY_MAIN_EQ_F77}
/* Define if you have a BLAS library. */
${DEFINE_HAVE_BLAS}
/* define if the Boost library is available */
${DEFINE_HAVE_BOOST}
/* define if the Boost::IOStreams library is available */
${DEFINE_HAVE_BOOST_IOSTREAMS} /**/
/* define if the Boost::PROGRAM_OPTIONS library is available */
${DEFINE_HAVE_BOOST_PROGRAM_OPTIONS} /**/
/* define if the Boost::Unit_Test_Framework library is available */
${DEFINE_HAVE_BOOST_UNIT_TEST_FRAMEWORK} /**/
/* Have clock time */
${DEFINE_HAVE_CLOCK_GETTIME} /**/
/* Define to 1 if you have the <dlfcn.h> header file. */
${DEFINE_HAVE_DLFCN_H}
/* Define if you have EIGEN library. */
${DEFINE_HAVE_EIGEN}
/* Define to 1 if you have the <Eigen/Dense> header file. */
${DEFINE_HAVE_EIGEN_DENSE}
/* Define to 1 if you have the <Eigen/LU> header file. */
${DEFINE_HAVE_EIGEN_LU}
/* Defined if you have HDF5 support */
${DEFINE_HAVE_HDF5}
/* Define to 1 if you have the <inttypes.h> header file. */
${DEFINE_HAVE_INTTYPES_H}
/* Define if you have LAPACK library */
${DEFINE_HAVE_LAPACK}
/* Define if you have LIBHILBERT library */
${DEFINE_HAVE_LIBHILBERT}
/* Have quad math lib */
${DEFINE_HAVE_LIBQUADMATH}
/* Define to 1 if you have the <memory.h> header file. */
${DEFINE_HAVE_MEMORY_H}
/* Define if you have METIS library */
${DEFINE_HAVE_METIS}
/* MPI Enabled */
${DEFINE_HAVE_MPI}
/* We have OSX */
${DEFINE_HAVE_OSX}
/* Define if you have PARMETIS library */
${DEFINE_HAVE_PARMETIS}
/* Define if you have PETSC library */
${DEFINE_HAVE_PETSC}
/* Define to 1 if you have the <stdint.h> header file. */
${DEFINE_HAVE_STDINT_H}
/* Define to 1 if you have the <stdlib.h> header file. */
${DEFINE_HAVE_STDLIB_H}
/* Define to 1 if you have the <strings.h> header file. */
${DEFINE_HAVE_STRINGS_H}
/* Define to 1 if you have the <string.h> header file. */
${DEFINE_HAVE_STRING_H}
/* Define if you have SUITESPARSE library. */
${DEFINE_HAVE_SUITESPARSE}
/* Define to 1 if you have the <sys/stat.h> header file. */
${DEFINE_HAVE_SYS_STAT_H}
/* Define to 1 if you have the <sys/types.h> header file. */
${DEFINE_HAVE_SYS_TYPES_H}
/* Define to 1 if you have the <unistd.h> header file. */
${DEFINE_HAVE_UNISTD_H}
/* Test TinyObjLoader */
${DEFINE_HAVE_TINYOBJLOADER}
/* Define to the sub-directory where libtool stores uninstalled libraries. */
#define LT_OBJDIR ".libs/"
/* NVCC compiling */
${DEFINE_NVCC} /**/
/* Name of package */
#define PACKAGE "openfpm_pdata"
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "BUG-REPORT-ADDRESS"
/* Define to the full name of this package. */
#define PACKAGE_NAME "OpenFPM_pdata"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "OpenFPM_pdata 1.0.0"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "openfpm_pdata"
/* Define to the home page for this package. */
#define PACKAGE_URL ""
/* Define to the version of this package. */
#define PACKAGE_VERSION "1.0.0"
/* Test performance mode */
${DEFINE_PERFORMANCE_TEST}
/* Security enhancement class 1 */
${DEFINE_SE_CLASS1}
/* Security enhancement class 2 */
${DEFINE_SE_CLASS2}
/* Security enhancement class 3 */
${DEFINE_SE_CLASS3}
/* Define to 1 if you have the ANSI C header files. */
${DEFINE_STDC_HEADERS}
/* If an error occur stop the program */
${DEFINE_STOP_ON_ERROR}
/* Test coverage mode */
${DEFINE_TEST_COVERAGE_MODE}
/* when an error accur continue but avoid unsafe operation */
/* #undef THROW_ON_ERROR */
/* Version number of package */
#define VERSION "1.0.0"