Skip to content
Snippets Groups Projects
Select Git revision
  • 49041a7f5059255b87ecc09d49873bd034e3c32a
  • master default protected
  • ujwal_05_08_2025
  • cyrielle
  • vinayak
  • dev_mm_pf
  • complexpetsc
  • ujwal_21_08_2024
  • dev_mm_torchSCRU
  • debug_mm_pf
  • newStructureNonLocal
  • Mohamed_stochasticDMN
  • dev_mm_bench
  • stochdmn
  • revert-351ff7aa
  • ujwal_29April2024
  • dev_mm_ann
  • mohamed_vevp
  • ujwal_debug
  • ujwal_2ndApril2024
  • ujwal_October_2023
  • v4.0
  • v3.2.3_multiplePhase
  • v3.5
  • v3.3.2
  • v3.4
  • v3.3
  • ver3.2
  • verJulienWork
  • ver3.1
  • ver2
  • ver1.1.2
  • ver1.1.1
  • ver1.1
34 results

twoHole.py

Blame
  • CMakeLists.txt 8.14 KiB
    cmake_minimum_required(VERSION 3.18)
    project(gmsh_gpu_dg)
    include(CheckLanguage)
    
    
    set(CMAKE_CXX_STANDARD 20)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    set(CMAKE_CUDA_ARCHITECTURES 35)
    set(CMAKE_CUDA_HOST_COMPILER "/usr/bin/g++-6")
    
    # Additional modules path for cmake
    set (CMAKE_MODULE_PATH
         ${CMAKE_MODULE_PATH}
         ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
    
    
    if(NOT DEFINED HIP_PATH)
        if(NOT DEFINED ENV{HIP_PATH})
            set(HIP_PATH "/opt/rocm/hip" CACHE PATH "Path to which HIP has been installed")
        else()
            set(HIP_PATH $ENV{HIP_PATH} CACHE PATH "Path to which HIP has been installed")
        endif()
    endif()
    set(CMAKE_MODULE_PATH "${HIP_PATH}/cmake" ${CMAKE_MODULE_PATH})
    
    ######################################################################
    ## Find required libraries
    
    find_package(Eigen3 REQUIRED)
    set(LINK_LIBS ${LINK_LIBS} Eigen3::Eigen)
    
    set(GMSH_DIR "/opt/uliege/gmsh" CACHE PATH "GMSH install path")
    if (DEFINED ENV{GMSH_DIR})
        set (GMSH_DIR $ENV{GMSH_DIR})
    endif()
    
    find_package(SILO)
    if (SILO_FOUND)
        add_definitions(-DHAVE_SILO)
        include_directories("${SILO_INCLUDE_DIRS}")
        set(LINK_LIBS ${LINK_LIBS} ${SILO_LIBRARIES})
    endif()
    
    find_package(Lua REQUIRED)
    include_directories("${LUA_INCLUDE_DIR}")
    set(LINK_LIBS ${LINK_LIBS} ${LUA_LIBRARIES})
    set(SOL2_BUILD_LUA OFF CACHE BOOL "Override sol2 build lua option")
    add_subdirectory(contrib/sol2)
    include_directories(contrib/sol2/include)
    
    ######################################################################
    ## Set GMSH paths
    
    if (GMSH_DIR STREQUAL "" OR NOT EXISTS ${GMSH_DIR})
        message(FATAL_ERROR "GMSH not found")
    else()
        set(GMSH_INCLUDE ${GMSH_DIR}/include)
        set(GMSH_LIB ${GMSH_DIR}/lib)
        set(LINK_LIBS ${LINK_LIBS} gmsh)
    endif()
    
    include_directories(${GMSH_INCLUDE})
    link_directories(${GMSH_LIB})
    
    
    
    
    ######################################################################
    ## Use or not use GPU solvers
    
    option(OPT_ENABLE_GPU_SOLVER "Enable GPU solvers" OFF)
    if (OPT_ENABLE_GPU_SOLVER)
        add_definitions(-DENABLE_GPU_SOLVER)
    
        ######################################################################
        ## CUDA stuff, find toolkit, compiler & NVML
        find_package(CUDAToolkit)
        if (CUDAToolkit_FOUND)
            set(CMAKE_CUDA_COMPILER ${CUDAToolkit_NVCC_EXECUTABLE})
            enable_language(CUDA)
            set(CMAKE_CUDA_STANDARD 14)
            set(CMAKE_CUDA_STANDARD_REQUIRED TRUE)
            #set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -lineinfo --resource-usage -Xptxas -dlcm=ca")
            set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -lineinfo --resource-usage -prec-div=true")
    
            if (TARGET CUDA::cudart)
                set(HAVE_CUDA TRUE)
                set(LINK_LIBS ${LINK_LIBS} CUDA::cudart)
                add_definitions(-DHAVE_CUDA)
            endif()
    
            if (TARGET CUDA::nvml)
                set(HAVE_CUDA_NVML TRUE)
                set(LINK_LIBS ${LINK_LIBS} CUDA::nvml)
                add_definitions(-DHAVE_CUDA_NVML)
            endif()
    	link_directories("/usr/local/cuda/lib64")
        endif()
    
        ######################################################################
        ## Find HIP stuff
        find_package(HIP QUIET MODULE)
        if (HIP_FOUND)
            add_definitions(-DHAVE_HIP)
            include_directories("/opt/rocm/include")
            set(CMAKE_HIP_LINK_EXECUTABLE "${HIP_HIPCC_CMAKE_LINKER_HELPER} ${HCC_HOME} <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
            if (DEFINED ENV{HIP_PLATFORM}) 
                if ($ENV{HIP_PLATFORM} STREQUAL "nvcc")
                    #set(HIP_NVCC_FLAGS "-ccbin g++-7" ${HIP_NVCC_FLAGS})
                    set(CMAKE_HIP_LINK_EXECUTABLE "${CUDAToolkit_NVCC_EXECUTABLE} <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
                endif()
            endif()
    
            set(HIP_NVCC_FLAGS "-ccbin g++-8" ${HIP_NVCC_FLAGS})
            option(OPT_USE_HIP "Use HIP GPU code path" OFF)
            if (OPT_USE_HIP)
                add_definitions(-DGPU_USE_HIP)
                add_definitions(-D__HIP_PLATFORM_HCC__)
            endif()
        endif()
    
    endif()
    
    
    ######################################################################
    ## Compiler identification stuff
    if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
        set(COMPILER_IS_CLANG TRUE)
    elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
        set(COMPILER_IS_GNU TRUE)
    elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
        set(COMPILER_IS_INTEL TRUE)
    endif ()
    
    ######################################################################
    ## Compiler optimization options
    
    if (COMPILER_IS_CLANG)
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Weverything -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-zero-as-null-pointer-constant -Wno-global-constructors -Wno-padded -Wno-shorten-64-to-32 -Wno-sign-conversion -Wno-old-style-cast -Wno-sign-compare -Wno-c99-extensions -Wno-extra-semi-stmt")
    else()
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
    endif()
    set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -fpermissive")
    set(CMAKE_CXX_FLAGS_RELEASE "-O3 -g -DNDEBUG -fpermissive")
    set(CMAKE_CXX_FLAGS_RELEASEASSERT "-O3 -g -fpermissive")
    
    option(OPT_ENABLE_OPENMP "Enable OpenMP parallelization" OFF)
    if (OPT_ENABLE_OPENMP)
        find_package(OpenMP)
        if (OpenMP_FOUND)
            set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
            set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
        endif()
    endif()
    
    if (COMPILER_IS_CLANG OR COMPILER_IS_GNU OR COMPILER_IS_INTEL)
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
    endif()
    
    ######################################################################
    ## Optimization stuff
    
    option(OPT_PREFER_512bit "Prefer 512 bit vectors with AVX512 (only Clang > 10 & GCC)" OFF)
    if (OPT_PREFER_512bit)
        # https://reviews.llvm.org/D67259
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mprefer-vector-width=512")
    endif()
    
    option(OPT_AGGRESSIVE_FP "Enable DAZ, FTZ and -ffast-math" ON)
    if (OPT_AGGRESSIVE_FP)
        add_definitions(-DDISALLOW_DENORMALS)
        if (COMPILER_IS_CLANG OR COMPILER_IS_GNU)
            set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffast-math")
        endif()
    endif()
    
    option(OPT_VECTORIZER_REMARKS "Enable vectorizer remarks" OFF)
    if (OPT_VECTORIZER_REMARKS)
        if (COMPILER_IS_CLANG)
            set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Rpass=loop-vectorize -Rpass-missed=loop-vectorize -Rpass-analysis=loop-vectorize")
        endif()
    
        if (COMPILER_IS_INTEL)
            set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -qopt-report-phase=vec -qopt-report=2")
        endif()
    
        if (COMPILER_IS_GNU)
            set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopt-info-vec-optimized")
        endif()
    endif()
    
    option(OPT_MEASURE_PERFORMANCE "Enable performance measurement (produces a ton of output)" OFF)
    if (OPT_MEASURE_PERFORMANCE)
        add_definitions(-DMEASURE_PERFORMANCE)
    endif()
    
    option(OPT_CRASH_ON_NAN "Crash code if NaNs are generated" OFF)
    if (OPT_CRASH_ON_NAN)
        add_definitions(-DCRASH_ON_NAN)
    endif()
    
    ######################################################################
    ## Development & debug stuff
    
    if (COMPILER_IS_CLANG OR COMPILER_IS_GNU)
        option(OPT_ASAN "Enable Address Sanitizer" OFF)
        if (OPT_ASAN)
            set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
        endif()
    endif()
    
    option(OPT_ENABLE_CUDA_DEBUG_GUARDS "Enable CUDA debug guards")
    if (OPT_ENABLE_CUDA_DEBUG_GUARDS AND HAVE_CUDA)
        add_definitions(-DCUDA_DEBUG)
    endif()
    
    ######################################################################
    ## Enable/disable solver modules
    
    option(OPT_ENABLE_CPU_SOLVER "Enable CPU DG solver")
    if (OPT_ENABLE_CPU_SOLVER)
        add_definitions(-DENABLE_CPU_SOLVER)
    endif()
    
    option(OPT_DEBUG_PRINT "Print debug information")
    if (OPT_DEBUG_PRINT)
        add_definitions(-DENABLE_DEBUG_PRINT)
    endif()
    
    ######################################################################
    ## Configure targets 
    
    include_directories(contrib/sgr)
    include_directories(${CMAKE_CURRENT_SOURCE_DIR})
    
    add_executable(gmsh_gpu_dg main.cpp gmsh_io.cpp reference_element.cpp physical_element.cpp entity.cpp kernels_cpu.cpp)
    target_link_libraries(gmsh_gpu_dg ${LINK_LIBS})
    
    add_executable(test test.cpp test_basics.cpp test_mass.cpp test_differentiation.cpp gmsh_io.cpp reference_element.cpp physical_element.cpp entity.cpp kernels_cpu.cpp)
    target_link_libraries(test ${LINK_LIBS})
    
    add_executable(dump_orient dump_orient.cpp)
    target_link_libraries(dump_orient ${LINK_LIBS})