Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 5 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ option(AV_BUILD_ALICEVISION "Enable building of AliceVision" ON)
option(AV_EIGEN_MEMORY_ALIGNMENT "Enable Eigen memory alignment" ON)
option(ALICEVISION_BUILD_TESTS "Build AliceVision tests" OFF)
option(AV_USE_CUDA "Enable CUDA" ON)
option(AV_USE_OPENMP "Enable OpenMP" $<$<CXX_COMPILER_ID:"AppleClang">,OFF,ON>) # disable by default for AppleClang
option(AV_USE_OPENMP "Enable OpenMP" ON) # disabled below for AppleClang
if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
set(AV_USE_OPENMP OFF CACHE BOOL "Enable OpenMP" FORCE)
endif()
Comment thread
pcastelovigo marked this conversation as resolved.

option(BUILD_SHARED_LIBS "Build shared libraries" ON)
option(ALICEVISION_INSTALL_MESHROOM_PLUGIN "Install AliceVision's plugin for Meshroom" ON)

Expand Down
6 changes: 4 additions & 2 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -692,7 +692,9 @@ if (ALICEVISION_HAVE_CUDA)

set(CUDA_NVCC_FLAGS_DEBUG "${CUDA_NVCC_FLAGS_DEBUG};-G;-g")
# set(CUDA_NVCC_FLAGS_RELEASE "${CUDA_NVCC_FLAGS_RELEASE};-O3")
if (CUDA_VERSION_MAJOR VERSION_GREATER_EQUAL 12)
if (CUDA_VERSION_MAJOR VERSION_GREATER_EQUAL 13)
set(ALICEVISION_CUDA_CC_LIST_BASIC 50 52 60 61 62 70 72 75 80 86 87 89 90 100 120)
elseif (CUDA_VERSION_MAJOR VERSION_GREATER_EQUAL 12)
Comment thread
pcastelovigo marked this conversation as resolved.
set(ALICEVISION_CUDA_CC_LIST_BASIC 50 52 60 61 62 70 72 75 80 86 87 89 90)
elseif (CUDA_VERSION VERSION_GREATER_EQUAL 11.8)
set(ALICEVISION_CUDA_CC_LIST_BASIC 35 50 52 60 61 62 70 72 75 80 86 87 89 90)
Expand All @@ -709,7 +711,7 @@ if (ALICEVISION_HAVE_CUDA)
CACHE STRING "CUDA CC versions to compile")

# Add all requested CUDA CCs to the command line for offline compilation
list(SORT ALICEVISION_CUDA_CC_LIST)
list(SORT ALICEVISION_CUDA_CC_LIST COMPARE NATURAL ORDER ASCENDING)
foreach (ALICEVISION_CC_VERSION ${ALICEVISION_CUDA_CC_LIST})
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS};-gencode;arch=compute_${ALICEVISION_CC_VERSION},code=sm_${ALICEVISION_CC_VERSION}")
endforeach()
Expand Down
2 changes: 2 additions & 0 deletions src/aliceVision/gpu/gpu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,9 @@ std::string gpuInformationCUDA()
<< "\t- id: " << i << std::endl
<< "\t- name: " << deviceProperties.name << std::endl
<< "\t- compute capability: " << deviceProperties.major << "." << deviceProperties.minor << std::endl
#if CUDART_VERSION < 13000 //clockRate removed in CUDA 13
<< "\t- clock frequency (kHz): " << deviceProperties.clockRate << std::endl
#endif
<< "\t- total device memory: " << deviceProperties.totalGlobalMem / (1024 * 1024) << " MB " << std::endl
<< "\t- device memory available: " << avail / (1024 * 1024) << " MB " << std::endl
<< "\t- per-block shared memory: " << deviceProperties.sharedMemPerBlock << std::endl
Expand Down
47 changes: 33 additions & 14 deletions src/cmake/Dependencies.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -97,15 +97,22 @@ message(STATUS "AV_BUILD_DEPENDENCIES_PARALLEL: ${AV_BUILD_DEPENDENCIES_PARALLEL

set(BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/external")

set(CMAKE_CORE_BUILD_FLAGS
-DCMAKE_BUILD_TYPE=${DEPS_CMAKE_BUILD_TYPE}
-DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS}
-DCMAKE_INSTALL_DO_STRIP:BOOL=${CMAKE_INSTALL_DO_STRIP}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
set(AV_CUDA_ARCHITECTURES "" CACHE STRING "CUDA architectures for all sub-dependencies (CMake CUDA_ARCHITECTURES syntax). E.g. '120-real' for Blackwell, '86-real;89-real' for Ampere/Ada, 'native' to auto-detect.")
set(AV_ALICEVISION_CUDA_CC_LIST "" CACHE STRING "CUDA compute capability list for AliceVision itself (integers, e.g. '120')")

set(CMAKE_CORE_BUILD_FLAGS
-DCMAKE_BUILD_TYPE=${DEPS_CMAKE_BUILD_TYPE}
-DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS}
-DCMAKE_INSTALL_DO_STRIP:BOOL=${CMAKE_INSTALL_DO_STRIP}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_CXX_STANDARD=20
)

if(AV_CUDA_ARCHITECTURES)
string(REPLACE ";" "\;" AV_CUDA_ARCHITECTURES_ESCAPED "${AV_CUDA_ARCHITECTURES}")
list(APPEND CMAKE_CORE_BUILD_FLAGS "-DCMAKE_CUDA_ARCHITECTURES:STRING=${AV_CUDA_ARCHITECTURES_ESCAPED}")
endif()

#### START EXTERNAL ####
if(AV_BUILD_ZLIB)
Expand Down Expand Up @@ -239,15 +246,24 @@ endif()

if(AV_BUILD_ASSIMP)
set(ASSIMP_TARGET assimp)

set(ASSIMP_BUILD_OPTIONS
-DASSIMP_BUILD_ASSIMP_TOOLS:BOOL=OFF
-DASSIMP_BUILD_TESTS:BOOL=OFF
set(ASSIMP_BUILD_OPTIONS
-DASSIMP_BUILD_ASSIMP_TOOLS:BOOL=OFF
-DASSIMP_BUILD_TESTS:BOOL=OFF
-DASSIMP_BUILD_DRACO:BOOL=ON
)

set(ASSIMP_AV_VERSION 5.2.5)

# GCC 13 requires explicit <cstdint> include in draco (bundled with assimp 5.2.5)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "13")
set(ASSIMP_PATCH_COMMAND
PATCH_COMMAND ${CMAKE_COMMAND}
-DINPUT_FILE=<SOURCE_DIR>/contrib/draco/src/draco/io/file_utils.h
-P ${CMAKE_SOURCE_DIR}/src/cmake/PatchAssimpDracoForGCC13.cmake
)
Comment thread
pcastelovigo marked this conversation as resolved.
else()
set(ASSIMP_PATCH_COMMAND "")
endif()

ExternalProject_Add(${ASSIMP_TARGET}
URL https://github.com/assimp/assimp/archive/refs/tags/v5.2.5.tar.gz
URL_HASH MD5=0b5a5a2714f1126b9931cdb95f512c91
Expand All @@ -258,6 +274,7 @@ if(AV_BUILD_ASSIMP)
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/assimp
BINARY_DIR ${BUILD_DIR}/assimp_build
INSTALL_DIR ${CMAKE_INSTALL_PREFIX}
${ASSIMP_PATCH_COMMAND}
CONFIGURE_COMMAND ${CMAKE_COMMAND} ${CMAKE_CORE_BUILD_FLAGS}
${ASSIMP_BUILD_OPTIONS}
${ZLIB_CMAKE_FLAGS}
Expand All @@ -268,8 +285,7 @@ if(AV_BUILD_ASSIMP)
BUILD_COMMAND $(MAKE) -j${AV_BUILD_DEPENDENCIES_PARALLEL}
DEPENDS ${ZLIB_TARGET}
)

set(ASSIMP_CMAKE_FLAGS
set(ASSIMP_CMAKE_FLAGS
-DAssimp_DIR:PATH=${CMAKE_INSTALL_PREFIX}/lib/cmake/assimp-${ASSIMP_AV_VERSION}
)
endif()
Expand Down Expand Up @@ -1464,8 +1480,11 @@ if(AV_BUILD_ALICEVISION)
BINARY_DIR ${BUILD_DIR}/aliceVision_build
INSTALL_DIR ${CMAKE_INSTALL_PREFIX}
CONFIGURE_COMMAND ${CMAKE_COMMAND}
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DBUILD_SHARED_LIBS:BOOL=ON -DTARGET_ARCHITECTURE=core
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DBUILD_SHARED_LIBS:BOOL=ON -DTARGET_ARCHITECTURE=generic
-DALICEVISION_ROOT=${ALICEVISION_ROOT}
if(AV_ALICEVISION_CUDA_CC_LIST)
list(APPEND cmake_args "-DALICEVISION_CUDA_CC_LIST:STRING=${AV_ALICEVISION_CUDA_CC_LIST}")
endif()
-DALICEVISION_USE_ALEMBIC=ON
Comment thread
pcastelovigo marked this conversation as resolved.
-DMINIGLOG=ON
-DALICEVISION_USE_CCTAG=${AV_BUILD_CCTAG}
Expand Down
33 changes: 33 additions & 0 deletions src/cmake/PatchAssimpDracoForGCC13.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
if(NOT DEFINED INPUT_FILE)
message(FATAL_ERROR "INPUT_FILE is required")
endif()

if(NOT EXISTS "${INPUT_FILE}")
message(FATAL_ERROR "Patch target file not found: ${INPUT_FILE}")
endif()

file(READ "${INPUT_FILE}" FILE_CONTENT)

if(FILE_CONTENT MATCHES "#include <cstdint>")
message(STATUS "Assimp draco patch already applied: ${INPUT_FILE}")
return()
endif()

set(NEEDLE "#include <vector>")
if(NOT FILE_CONTENT MATCHES "${NEEDLE}")
message(FATAL_ERROR "Expected include not found in ${INPUT_FILE}: ${NEEDLE}")
endif()

string(REPLACE
"#include <vector>"
"#include <vector>\n#include <cstdint>"
PATCHED_CONTENT
"${FILE_CONTENT}"
)

if(PATCHED_CONTENT STREQUAL FILE_CONTENT)
message(FATAL_ERROR "Failed to patch ${INPUT_FILE}")
endif()

file(WRITE "${INPUT_FILE}" "${PATCHED_CONTENT}")
message(STATUS "Applied GCC 13 draco cstdint patch: ${INPUT_FILE}")
Loading