Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
de62bfa
add the pow_exp kernel and tested
Nov 23, 2023
b1c0165
all fixes
mahmoudElkarargyBS Jan 8, 2024
d8cefec
resolve threads plus some modifications
mahmoudElkarargyBS Jan 10, 2024
eea866b
Fix cuda
mahmoudElkarargyBS Jan 11, 2024
6884d5c
fix for linking cuda
mahmoudElkarargyBS Jan 11, 2024
cd7cda3
fix: hicma modifactions
mahmoudElkarargyBS Jan 11, 2024
f72d63c
try fixing Jenkines
mahmoudElkarargyBS Jan 16, 2024
210c06b
Adding R structure
mahmoudElkarargyBS Jan 16, 2024
5b604ba
fix:add doxygen in Jenkines
mahmoudElkarargyBS Jan 16, 2024
b1f0fbf
add test file for pow-exp kernel
Jan 16, 2024
b5d530e
test with -fpic
mahmoudElkarargyBS Jan 17, 2024
957dd0c
some modifications for HiCMA
mahmoudElkarargyBS Jan 17, 2024
fe1f893
updates
mahmoudElkarargyBS Jan 18, 2024
6a61410
try 2 gpu devices
mahmoudElkarargyBS Jan 20, 2024
346a0d8
back to starsh
mahmoudElkarargyBS Jan 22, 2024
2d3bc17
a potential fix to doxygen
mahmoudElkarargyBS Jan 22, 2024
5446c76
roll back
mahmoudElkarargyBS Jan 23, 2024
da8ad1f
test Rcpp
mahmoudElkarargyBS Feb 4, 2024
2ea149e
Fix Jenkines
mahmoudElkarargyBS Feb 4, 2024
6481324
fix errors
mahmoudElkarargyBS Feb 4, 2024
038e923
Updated in design
mahmoudElkarargyBS Feb 4, 2024
836ccbc
updates
mahmoudElkarargyBS Feb 11, 2024
21e826b
all release issue without src checks
mahmoudElkarargyBS Feb 11, 2024
f56153c
Merge pull request #1 from ecrc/FIX-release-issue-MK
mahmoudElkarargyBS Feb 11, 2024
18564f6
merge devel
mahmoudElkarargyBS Feb 11, 2024
c3fd36a
Merge pull request #2 from ecrc/kernel/pow-exp
mahmoudElkarargyBS Feb 11, 2024
ad24449
merge devel
mahmoudElkarargyBS Feb 11, 2024
b4c6e7d
adding MakeFile
mahmoudElkarargyBS Feb 11, 2024
f4e7e80
Updated MPI
mahmoudElkarargyBS Feb 12, 2024
96d6dde
Documentation
mahmoudElkarargyBS Feb 12, 2024
9f94224
fix examples tests
mahmoudElkarargyBS Feb 13, 2024
47f1c1b
modeling takes pointers
mahmoudElkarargyBS Feb 13, 2024
e308baf
example for read and write data
mahmoudElkarargyBS Feb 19, 2024
ae0d55c
fix: typpo in Initialize
mahmoudElkarargyBS Feb 26, 2024
0110a82
fix passing numbers of theta
mahmoudElkarargyBS Feb 26, 2024
9a4081f
fix: performance of gsl
mahmoudElkarargyBS Feb 27, 2024
2f65d19
fix: GPU support
mahmoudElkarargyBS Feb 27, 2024
d72800a
fix:mspe
mahmoudElkarargyBS Mar 3, 2024
96931cf
updated devel
mahmoudElkarargyBS Mar 3, 2024
7c6f095
R branch init
mahmoudElkarargyBS Mar 3, 2024
d77d5ab
merge devel
mahmoudElkarargyBS Mar 3, 2024
7b812bc
merge diffrence
mahmoudElkarargyBS Mar 3, 2024
ad9530d
tests:add r tests
mahmoudElkarargyBS Mar 3, 2024
e119bb2
fix tests
mahmoudElkarargyBS Mar 3, 2024
258785b
bug: in tlr
mahmoudElkarargyBS Mar 3, 2024
6486456
fix:tlr
mahmoudElkarargyBS Mar 3, 2024
9e9a28e
fix Jenkines
mahmoudElkarargyBS Mar 3, 2024
c61eaf1
fix: Jenkines in Documentation
mahmoudElkarargyBS Mar 4, 2024
06220cc
minior updates
mahmoudElkarargyBS Mar 4, 2024
ff4ce3e
huge refactoring
mahmoudElkarargyBS Mar 29, 2024
e7b412c
full R
mahmoudElkarargyBS Apr 2, 2024
93844aa
Merge pull request #3 from ecrc/FT-adding-Rcpp-MK
mahmoudElkarargyBS Apr 2, 2024
f8a670b
potential for tlr issue
Apr 5, 2024
3e47fb1
updates in heavy tests
mahmoudElkarargyBS Apr 14, 2024
8480f4f
a fix for gpu in gaussian kernels
mahmoudElkarargyBS Apr 14, 2024
ccacbf9
smalling tlr size
mahmoudElkarargyBS Apr 15, 2024
d268ca3
update sizes of heavy_tests
mahmoudElkarargyBS Apr 15, 2024
115c0a4
smalling size for gpu
mahmoudElkarargyBS Apr 15, 2024
128af20
minior changes
mahmoudElkarargyBS Apr 15, 2024
a629ef3
Huge refactoring in docs
mahmoudElkarargyBS Apr 21, 2024
00fafed
resolve threads
mahmoudElkarargyBS Apr 21, 2024
23c4c5f
fix MPI
mahmoudElkarargyBS Apr 21, 2024
6488a8a
resolve thread
mahmoudElkarargyBS Apr 21, 2024
746d875
updated R documentation
mahmoudElkarargyBS Apr 22, 2024
dec9d1a
documentation and hardware changes
mahmoudElkarargyBS Apr 28, 2024
2aaf398
finalized documentations
mahmoudElkarargyBS Apr 28, 2024
6daad10
minior change in Hardware
mahmoudElkarargyBS Apr 28, 2024
1864818
Ft test mpi mk (#6)
mahmoudElkarargyBS May 10, 2024
fd721cd
minior cleanings (#7)
mahmoudElkarargyBS May 12, 2024
aa56c1c
v1.1.0 (#4) (#8)
mahmoudElkarargyBS Jun 2, 2024
3fce527
Fix P & Q
mahmoudElkarargyBS Jun 2, 2024
e459c18
updates in R (#9)
mahmoudElkarargyBS Jul 3, 2024
58197b0
resolve conflicts
mahmoudElkarargyBS Jul 3, 2024
733723d
Fix error in R
mahmoudElkarargyBS Dec 31, 2024
f995a5f
Fix using of openblas (#16)
mahmoudElkarargyBS Jan 12, 2025
bd6fd82
resolve conflicts
mahmoudElkarargyBS Jan 12, 2025
0cdb463
Update main (#19)
mahmoudElkarargyBS Feb 18, 2025
a4df6cf
Fix for zero values in locations (#20)
mahmoudElkarargyBS Feb 18, 2025
a090ab2
update devel (#21)
mahmoudElkarargyBS Feb 18, 2025
eba9f5e
Fix tlr in R (#24)
mahmoudElkarargyBS Feb 24, 2025
8c655ab
Ft add accuracy tlr (#26)
mahmoudElkarargyBS Feb 25, 2025
e2af57e
change value of acc
mahmoudElkarargyBS Feb 25, 2025
97690fe
update params values
mahmoudElkarargyBS Feb 25, 2025
1f2c3b4
integrate netcdf
mahmoudElkarargyBS Mar 18, 2025
b566d3b
stage zero working
alihakam830 Aug 12, 2025
76080f6
update root cmake
alihakam830 Aug 12, 2025
a2c280f
add netcdf reading prints and update readme with example
alihakam830 Aug 13, 2025
83d7938
improve csv file writing
alihakam830 Aug 14, 2025
0f9ae89
add forcing data
alihakam830 Aug 14, 2025
67b9246
added parsec support
alihakam830 Sep 7, 2025
00f1963
fixed mpi processes not terminating
alihakam830 Sep 30, 2025
a4bad7f
Merge pull request #43 from ecrc/fix-mpi-stage-zero
alihakam830 Oct 6, 2025
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
26 changes: 26 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
stages:
- compile

variables:
GIT_STRATEGY: clone
GIT_SUBMODULE_STRATEGY: normal
ARTIFACTS_NAME: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
ARTIFACTS_PATH: bin.tar

.compile-job: &compile-job
stage: compile
artifacts:
when: on_success
name: $ARTIFACTS_NAME
expire_in: 1h
paths:
- bin.tar
script:
- echo -e "Script Arguments:\t $CONFIG_ARGS"

compile:cpp:
<<: *compile-job
image: acai-oneapi
tags:
- acai-cpu

108 changes: 79 additions & 29 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,24 +18,41 @@ cmake_minimum_required(VERSION 3.20 FATAL_ERROR)
cmake_policy(SET CMP0048 NEW)

# Set project options
option(USE_CUDA "Use Cuda, if available" false)
option(USE_MPI "Use MPI, if available" false)
option(USE_CUDA "Use CUDA, if available" OFF)
option(USE_MPI "Use MPI, if available" OFF)
option(BUILD_TESTS "Option to enable building tests" OFF)
option(BUILD_HEAVY_TESTS "Option to enable building heavy tests, This may take a lot of time" OFF)
option(BUILD_EXAMPLES "Option to enable building examples" ON)
option(BUILD_DOCS "Build documentation in docs directory" ON)
option(USE_R "Enable the use of R and Rcpp in the project" OFF)
option(CREATE_PACKAGE "Enable a packaging system for distribution" OFF)

# Declare the RUNTIME_TYPE variable with a default value
set(RUNTIME_TYPE "starpu" CACHE STRING "Specify the runtime type (e.g., starpu or parsec)")
# Cmake Module Paths
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake;${CMAKE_MODULE_PATH}")

if (${BUILD_SHARED_LIBS})
set(BLA_STATIC OFF)
else ()
set(BLA_STATIC ON)
endif ()

# Project Name and Version
project(ExaGeoStatCPP VERSION 2.0.0 DESCRIPTION "ExaGeoStatCPP is a parallel high performance unified framework for geostatistics on manycore systems.")
set(CMAKE_CXX_EXTENSIONS OFF)
string(TOUPPER ${RUNTIME_TYPE} RUNTIME_TYPE)

# Default path for default configuration json file
add_definitions(
-DDEFAULT_CONFIGURATION_PATH="${PROJECT_SOURCE_DIR}/configurations/config.json"
)

if(RUNTIME_TYPE STREQUAL "PARSEC")
message(STATUS "MPI is required to be enabled in order to use PaRSEC")
set(USE_MPI ON)
set(USE_HICMA OFF)
endif()

# Select toolchain based on whether CUDA is enabled or not
if (USE_CUDA)
message("")
Expand All @@ -53,9 +70,6 @@ else ()
include(toolchains/GccToolchain)
endif ()

# Project Name and Version
project(ExaGeoStatCPP VERSION 1.0.0 DESCRIPTION "ExaGeoStatCPP is a parallel high performance unified framework for geostatistics on manycore systems.")

# Show the current version of CMake.
message(STATUS "CMAKE VERSION: ${CMAKE_VERSION}")
# Enable C++ language
Expand Down Expand Up @@ -98,6 +112,11 @@ list(APPEND LIBS ${LAPACKE_LIBRARIES})
link_directories(${LAPACKE_LIBRARY_DIRS_DEP})
include_directories(${LAPACKE_INCLUDE_DIRS})

if (${BLA_VENDOR} MATCHES "Intel10_64lp" OR ${BLA_VENDOR} MATCHES "Intel" OR ${BLA_VENDOR} MATCHES "Intel10_64lp_seq")
message(STATUS "Linked to MKL")
add_compile_definitions(USE_MKL)
endif()

# Add all dependencies for ExaGeoStatCPP
#-----------------------------

Expand All @@ -110,30 +129,48 @@ include(ImportHwloc)
list(APPEND STARPU_COMPONENT_LIST "HWLOC")
string(REPLACE ";" " " STARPU_COMPONENT_STRING "${STARPU_COMPONENT_LIST}")

# ExaGeoStatCPP depends on StarPU runtime
# ExaGeoStatCPP depends on NLOHMANN
# -------------------------------
include(ImportStarPu)

# ExaGeoStatCPP depends on GSL
# -------------------------------
include(ImportGSL)
include(ImportNlohmannJSON)

# ExaGeoStatCPP depends on NLOPT
# -------------------------------
include(ImportNLOPT)

# ExaGeoStatCPP depends on HiCMA
# ExaGeoStatCPP depends on GSL
# -------------------------------
if (USE_HICMA)
add_definitions(-DUSE_HICMA=TRUE)
include(ImportHCore)
include(ImportStarsH)
include(ImportHiCMA)
endif ()
include(ImportGSL)

# ExaGeoStatCPP depends on Chameleon
# -------------------------------
include(ImportChameleon)
message("---------------------------------------- ${RUNTIME_TYPE}")
if(RUNTIME_TYPE STREQUAL "STARPU")
message(STATUS "Using StarPU as the runtime")
# ExaGeoStatCPP depends on StarPU runtime
# -------------------------------
include(ImportStarPu)
include(ImportNetCDF)
# ExaGeoStatCPP depends on HiCMA
# -------------------------------
if (USE_HICMA)
add_definitions(-DUSE_HICMA=TRUE)
include(ImportHCore)
include(ImportStarsH)
include(ImportHiCMA)
endif ()
# ExaGeoStatCPP depends on Chameleon
# -------------------------------
include(ImportChameleon)

elseif(RUNTIME_TYPE STREQUAL "PARSEC")
message(STATUS "Using PaRSEC as the runtime")
include(ImportNetCDF)
# ExaGeoStatCPP depends on StarPU runtime
# -------------------------------
include(ImportStarsH)
include(ImportHCore)
include(ImportHiCMAX)
else()
message(FATAL_ERROR "Unknown RUNTIME_TYPE: ${RUNTIME_TYPE}. Supported values are 'STARPU' or 'PARSEC'.")
endif()

# ExaGeoStatCPP depends on LAPACK/BLASPP
# -------------------------------
Expand Down Expand Up @@ -164,14 +201,20 @@ if (USE_R)
if (${R_FOUND})
message(STATUS "Using R technology")
list(APPEND LIBS R)
add_definitions(-DUSING_R)
add_definitions(-DUSE_R)
endif ()
endif ()


# Add src Directory to expose added libraries
add_subdirectory(src)

# Define USE_STARPU or USE_RUNTIME based on the selected runtime
if(RUNTIME_TYPE STREQUAL "STARPU")
target_compile_definitions(${PROJECT_NAME} PUBLIC DEFAULT_RUNTIME=1)
elseif(RUNTIME_TYPE STREQUAL "PARSEC")
target_compile_definitions(${PROJECT_NAME} PUBLIC DEFAULT_RUNTIME=0)
endif()

# Creates a new INTERFACE library target named ${PROJECT_NAME}_INTERFACE.
# The INTERFACE keyword specifies that this library will not be built, but instead will only be used for its properties.
add_library(${PROJECT_NAME}_INTERFACE INTERFACE)
Expand Down Expand Up @@ -213,15 +256,22 @@ endif ()
message(" \n \t ** Configurations of ExaGeoStatCPP and installation of dependence is done successfully ** ")
message("\t - Export the following line to avoid re-install dependencies each time. -")
message("\t ----------------------------------------------------------------------------------------------------------------------------------- ")
message("\t export PKG_CONFIG_PATH=${CMAKE_INSTALL_PREFIX}/CHAMELEON/lib/pkgconfig:$PKG_CONFIG_PATH")
message("\t export PKG_CONFIG_PATH=${CMAKE_INSTALL_PREFIX}/STARPU/lib/pkgconfig:$PKG_CONFIG_PATH")
message("\t export PKG_CONFIG_PATH=${CMAKE_INSTALL_PREFIX}/NLOHMANN_JSON/share/pkgconfig:$PKG_CONFIG_PATH")
message("\t export PKG_CONFIG_PATH=${CMAKE_INSTALL_PREFIX}/HWLOC/lib/pkgconfig:$PKG_CONFIG_PATH")
message("\t export PKG_CONFIG_PATH=${CMAKE_INSTALL_PREFIX}/GSL/lib/pkgconfig:$PKG_CONFIG_PATH")
message("\t export PKG_CONFIG_PATH=${CMAKE_INSTALL_PREFIX}/NLOPT/lib/pkgconfig:${CMAKE_INSTALL_PREFIX}/NLOPT/lib64/pkgconfig:$PKG_CONFIG_PATH")
if(USE_HICMA)
message("\t export PKG_CONFIG_PATH=${CMAKE_INSTALL_PREFIX}/GSL/lib/pkgconfig:$PKG_CONFIG_PATH")
if(RUNTIME_TYPE STREQUAL "STARPU")
message("\t export PKG_CONFIG_PATH=${CMAKE_INSTALL_PREFIX}/STARPU/lib/pkgconfig:$PKG_CONFIG_PATH")
message("\t export PKG_CONFIG_PATH=${CMAKE_INSTALL_PREFIX}/CHAMELEON/lib/pkgconfig:$PKG_CONFIG_PATH")
if(USE_HICMA)
message("\t export PKG_CONFIG_PATH=${CMAKE_INSTALL_PREFIX}/STARSH/lib/pkgconfig:$PKG_CONFIG_PATH")
message("\t export PKG_CONFIG_PATH=${CMAKE_INSTALL_PREFIX}/HCORE/lib/pkgconfig:$PKG_CONFIG_PATH")
message("\t export PKG_CONFIG_PATH=${CMAKE_INSTALL_PREFIX}/HICMA/lib/pkgconfig:$PKG_CONFIG_PATH")
endif()
elseif(RUNTIME_TYPE STREQUAL "PARSEC")
message("\t export PKG_CONFIG_PATH=${CMAKE_INSTALL_PREFIX}/STARSH/lib/pkgconfig:$PKG_CONFIG_PATH")
message("\t export PKG_CONFIG_PATH=${CMAKE_INSTALL_PREFIX}/HCORE/lib/pkgconfig:$PKG_CONFIG_PATH")
message("\t export PKG_CONFIG_PATH=${CMAKE_INSTALL_PREFIX}/HICMA/lib/pkgconfig:$PKG_CONFIG_PATH")
message("\t export PKG_CONFIG_PATH=${CMAKE_INSTALL_PREFIX}/HICMA-X/lib/pkgconfig:${CMAKE_INSTALL_PREFIX}/HICMA-X/lib64/pkgconfig:${CMAKE_INSTALL_PREFIX}/HICMA-X/lib64:$PKG_CONFIG_PATH")
endif()
message("\t ----------------------------------------------------------------------------------------------------------------------------------- \n")

Expand Down
Loading