-
Notifications
You must be signed in to change notification settings - Fork 65
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
19 changed files
with
314 additions
and
564 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
name: Sparselizard Compilation | ||
|
||
on: [push] | ||
|
||
jobs: | ||
Compilation-Actions: | ||
runs-on: ubuntu-22.04 | ||
|
||
env: | ||
CCACHE_COMPRESS: "true" | ||
CCACHE_MAXSIZE: 500M | ||
CC: gcc-12 | ||
CXX: g++-12 | ||
OMPI_CC: gcc-12 | ||
OMPI_CXX: g++-12 | ||
|
||
steps: | ||
- name: Check out repository code | ||
uses: actions/checkout@v2 | ||
- run: echo "The ${{ github.repository }} repository has been cloned to the runner." | ||
- run: echo "The workflow is now ready to test the code on the runner." | ||
|
||
- name: install ccache | ||
run: sudo apt-get install ccache | ||
|
||
- name: identify machine architecture | ||
run: | | ||
gcc -### -E -march=native - &> machine-type.txt | ||
cat machine-type.txt | ||
- name: restore cache | ||
uses: actions/cache@v2 | ||
with: | ||
path: ~/.ccache | ||
key: ccache-${{ hashFiles('machine-type.txt') }}-${{ github.sha }} | ||
restore-keys: ccache-${{ hashFiles('machine-type.txt') }}- | ||
|
||
- name: Install mandatory packages | ||
run: sudo apt-get install -y libomp-dev ninja-build cmake libopenblas-dev libmetis-dev libopenmpi-dev libmumps-dev petsc-dev slepc-dev libgmsh-dev | ||
|
||
- name: build | ||
run: | | ||
export PATH="/usr/lib/ccache:$PATH" | ||
mkdir build | ||
cmake -G Ninja -S . -B build | ||
cmake --build build -- -j $(getconf _NPROCESSORS_ONLN) | ||
- name: show ccache stats | ||
run: | | ||
ccache --show-stats | ||
ccache --zero-stats | ||
- run: echo "🍏 This job's status is ${{ job.status }}." |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,43 +1,105 @@ | ||
# Thanks to S. Matsievskiy for bringing cmake to the project. | ||
|
||
cmake_minimum_required(VERSION 3.0 FATAL_ERROR) | ||
cmake_minimum_required(VERSION 3.23 FATAL_ERROR) | ||
|
||
project(Sparselizard LANGUAGES CXX) | ||
|
||
set(DEFAULT_BUILD_TYPE "Release") | ||
set(CMAKE_BUILD_TYPE "${DEFAULT_BUILD_TYPE}" CACHE STRING "Choose the type of build" FORCE) | ||
|
||
set(PETSC_PATH "~/SLlibs/petsc" CACHE STRING "Provide the path to the petsc folder") | ||
set(GMSH_PATH "~/SLlibs/gmsh" CACHE STRING "Provide the path to the gmsh folder") | ||
set(MPI_PATH "" CACHE STRING "Provide the path to the mpi folder") | ||
|
||
# Place library in build folder: | ||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) | ||
SET(CMAKE_CXX_STANDARD 17) | ||
SET(CMAKE_CXX_FLAGS_DEBUG "-g -Og -Wall -Wextra -Wpedantic") | ||
SET(CMAKE_CXX_FLAGS_RELEASE "-O3") | ||
|
||
if(NOT BLA_VENDOR) | ||
set(BLA_VENDOR CACHE STRING OpenBLAS) | ||
endif() | ||
|
||
if(NOT PETSC_DIR AND NOT(APPLE)) | ||
set(PETSC_DIR CACHE STRING /usr/lib/petscdir) | ||
endif() | ||
|
||
# Default flags: | ||
set(BLAS_FOUND NO) | ||
set(GMSH_FOUND NO) | ||
set(METIS_FOUND NO) | ||
set(MPI_FOUND NO) | ||
set(MUMPS_FOUND NO) | ||
set(PETSC_FOUND NO) | ||
set(SLEPC_FOUND NO) | ||
# Add cmake packages | ||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") | ||
list(APPEND CMAKE_PREFIX_PATH $<$<BOOL:${APPLE}>:/opt/homebrew/opt/openblas> ${PETSC_DIR}) | ||
|
||
# Installation definitions | ||
include(GNUInstallDirs) | ||
# Aux functions | ||
include(cMake/functions.cmake) | ||
include(cMake/SetupBLAS.cmake) | ||
include(cMake/SetupGMSH.cmake) | ||
include(cMake/SetupMETIS.cmake) | ||
include(cMake/SetupMPI.cmake) | ||
include(cMake/SetupMUMPS.cmake) | ||
include(cMake/SetupPETSC.cmake) | ||
include(cMake/SetupSLEPC.cmake) | ||
|
||
# Add libsparselizard target | ||
add_subdirectory(src) | ||
|
||
# Add simulations targets | ||
add_subdirectory(simulations) | ||
|
||
# this is not the cmake-official way but it's a lot easier | ||
set(INCLUDE_DIRS | ||
src | ||
src/mesh | ||
src/gausspoint | ||
src/io | ||
src/io/paraview | ||
src/io/nastran | ||
src/io/gmsh | ||
src/field | ||
src/resolution | ||
src/geometry | ||
src/expression | ||
src/expression/operation | ||
src/shapefunction | ||
src/shapefunction/hierarchical | ||
src/shapefunction/hierarchical/h1 | ||
src/shapefunction/hierarchical/hcurl | ||
src/shapefunction/lagrange | ||
src/formulation | ||
) | ||
file(GLOB_RECURSE SRC_FILES "src/*.cpp") | ||
file(GLOB_RECURSE SRC_HEADERS "src/*.h") | ||
add_library(sparselizard SHARED ${SRC_FILES}) | ||
target_sources(sparselizard PUBLIC FILE_SET HEADERS FILES ${SRC_HEADERS}) | ||
|
||
target_include_directories(sparselizard PUBLIC ${INCLUDE_DIRS}) | ||
|
||
target_compile_options(sparselizard PUBLIC -fPIC -O3) | ||
|
||
find_package(OpenMP REQUIRED) | ||
target_link_libraries(sparselizard PUBLIC OpenMP::OpenMP_CXX) | ||
|
||
find_package(MPI REQUIRED) | ||
target_link_libraries(sparselizard PUBLIC MPI::MPI_CXX) | ||
|
||
find_package(BLAS REQUIRED) | ||
target_link_libraries(sparselizard PUBLIC BLAS::BLAS) | ||
|
||
find_package(PETSC REQUIRED) | ||
target_link_libraries(sparselizard PUBLIC PETSC::PETSC) | ||
|
||
find_package(SLEPC) | ||
target_link_libraries(sparselizard PUBLIC SLEPC::SLEPC) | ||
|
||
find_package(GMSH) | ||
if(GMSH_FOUND) | ||
target_link_libraries(sparselizard PUBLIC GMSH::GMSH) | ||
target_compile_definitions(sparselizard PRIVATE -DHAVE_GMSH) | ||
endif() | ||
|
||
find_package(METIS) | ||
|
||
if(METIS_FOUND) | ||
target_link_libraries(sparselizard PUBLIC METIS::METIS) | ||
target_compile_definitions(sparselizard PRIVATE -DHAVE_METIS) | ||
endif() | ||
|
||
target_link_libraries(sparselizard PUBLIC cmumps) | ||
target_compile_definitions(sparselizard PRIVATE | ||
-DHAVE_BLAS | ||
-DHAVE_MPI | ||
-DHAVE_MUMPS | ||
-DHAVE_PETSC | ||
-DHAVE_SLEPC | ||
) | ||
|
||
install(TARGETS sparselizard LIBRARY PUBLIC_HEADER) | ||
|
||
set(BUILD_SIMULATIONS YES) | ||
|
||
if(BUILD_SIMULATIONS) | ||
add_subdirectory(simulations) | ||
message(STATUS "Building simulations") | ||
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
FROM debian:testing-slim as build | ||
|
||
LABEL maintainer="[email protected]" | ||
LABEL version="0.2" | ||
LABEL description="Sparselizard on docker. See https://github.com/pthibaud/dockerlizard" | ||
|
||
# Disable prompt during packages installation | ||
ARG DEBIAN_FRONTEND=noninteractive | ||
|
||
# Update ubuntu software repository | ||
# Install additional repository | ||
RUN apt-get update && \ | ||
apt-get -y upgrade && \ | ||
apt-get -y dist-upgrade && \ | ||
apt-get install -y apt-utils build-essential cmake \ | ||
libopenblas-dev \ | ||
libopenmpi-dev \ | ||
libmumps-dev \ | ||
libmetis-dev \ | ||
petsc-dev \ | ||
slepc-dev \ | ||
libgmsh-dev \ | ||
libomp-dev \ | ||
ninja-build | ||
|
||
# Clean the installation | ||
RUN apt-get clean | ||
|
||
|
||
WORKDIR /sparselizard | ||
COPY CMakeLists.txt . | ||
COPY src src | ||
COPY cmake cmake | ||
COPY simulations simulations | ||
RUN mkdir build | ||
# Prepare compilation environment | ||
RUN cmake -G Ninja -S . -B build | ||
RUN cmake --build build -- -j 8 | ||
|
||
RUN mkdir -p /usr/local | ||
RUN cmake --install build -v --prefix /usr/local | ||
|
||
# Install the library and headers; Put the env variables | ||
# RUN make install | ||
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib |
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.