Skip to content
Merged
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
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
DEBIAN_FRONTEND: noninteractive
run: |
apt-get update
apt-get install -y software-properties-common gdal-bin libgdal-dev cmake git build-essential patchelf libomp-dev libssl-dev libcurl4-openssl-dev
apt-get install -y software-properties-common gdal-bin libgdal-dev cmake git build-essential patchelf libomp-dev libssl-dev libcurl4-openssl-dev libzstd-dev zlib1g-dev

add-apt-repository ppa:deadsnakes/ppa -y
apt-get update
Expand Down Expand Up @@ -151,4 +151,4 @@ jobs:
- name: Publish package to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: dist/
packages-dir: dist/
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,7 @@
*.tif
*.tiff

*.json
.DS_Store

build/
94 changes: 66 additions & 28 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
cmake_minimum_required(VERSION 3.18...3.28)
project(curaster_project LANGUAGES CXX CUDA)

find_package(Python COMPONENTS Interpreter Development.Module REQUIRED)
find_package(pybind11 CONFIG REQUIRED)
find_package(GDAL REQUIRED)
find_package(OpenMP COMPONENTS CXX REQUIRED)
find_package(CURL REQUIRED)
find_package(OpenSSL REQUIRED)
find_package(ZLIB REQUIRED)

find_library(ZSTD_LIBRARY NAMES zstd REQUIRED)
find_path (ZSTD_INCLUDE NAMES zstd.h REQUIRED)
find_package(Python COMPONENTS Interpreter Development.Module REQUIRED)
find_package(pybind11 CONFIG REQUIRED)

find_package(GDAL REQUIRED)
find_package(OpenMP COMPONENTS CXX REQUIRED)
find_package(CURL REQUIRED)
find_package(OpenSSL REQUIRED)
find_package(ZLIB REQUIRED)

find_library(ZSTD_LIBRARY NAMES zstd REQUIRED)
find_path(ZSTD_INCLUDE NAMES zstd.h REQUIRED)

if(NOT TARGET ZSTD::ZSTD)
add_library(ZSTD::ZSTD UNKNOWN IMPORTED)
set_target_properties(ZSTD::ZSTD PROPERTIES
Expand All @@ -19,38 +21,74 @@ if(NOT TARGET ZSTD::ZSTD)
endif()

set(CMAKE_CUDA_RUNTIME_LIBRARY Static)
set(CMAKE_CUDA_ARCHITECTURES "75;80;86;89;90")
set(CMAKE_CUDA_ARCHITECTURES "75;80;86;89;90")

add_library(gpu_kernels STATIC
src/gpu/gpu.cu
src/gpu/gpu_warp.cu)

set_target_properties(gpu_kernels PROPERTIES
POSITION_INDEPENDENT_CODE ON)

target_include_directories(gpu_kernels PRIVATE
include
${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES})

target_compile_options(gpu_kernels PRIVATE
$<$<COMPILE_LANGUAGE:CUDA>:
-O3
--use_fast_math
-Xptxas=-O3
>)

pybind11_add_module(curaster
src/s3/s3_auth.cpp
src/s3/s3_fetch.cpp

src/tiff/tiff_metadata.cpp
src/tiff/decompression.cpp

src/tile_io/tile_io.cpp

src/algebra/algebra_compiler.cpp

src/clip/clip.cpp

src/reproject/reproject.cpp

src/engine/engine.cpp
src/engine/engine_reproject.cpp

add_library(gpu_math STATIC src/gpu.cu)
set_target_properties(gpu_math PROPERTIES POSITION_INDEPENDENT_CODE ON)
src/chain/chain.cpp

target_compile_options(gpu_math PRIVATE
$<$<COMPILE_LANGUAGE:CUDA>: -O3 --use_fast_math -Xptxas=-O3 >
)
src/bindings/bindings.cpp)

pybind11_add_module(curaster src/cpu.cpp)
target_include_directories(curaster PRIVATE ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES})
target_include_directories(curaster PRIVATE
include
${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}
${GDAL_INCLUDE_DIRS})

target_compile_options(curaster PRIVATE
# If Windows MSVC: use /O2 and AVX2
$<$<COMPILE_LANGUAGE:CXX>:$<$<CXX_COMPILER_ID:MSVC>:/O2;/arch:AVX2>>

# If Linux GCC/Clang: use -O3 and Haswell
$<$<COMPILE_LANGUAGE:CXX>:$<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-O3;-march=haswell>>
)
$<$<COMPILE_LANGUAGE:CXX>:$<$<CXX_COMPILER_ID:MSVC>:
/O2
/arch:AVX2
>>
$<$<COMPILE_LANGUAGE:CXX>:$<$<NOT:$<CXX_COMPILER_ID:MSVC>>:
-O3
-march=haswell
>>)

target_link_libraries(curaster PRIVATE
gpu_math
gpu_kernels
GDAL::GDAL
CURL::libcurl
OpenSSL::SSL
OpenSSL::Crypto
ZSTD::ZSTD
ZLIB::ZLIB
)
ZLIB::ZLIB)

if(TARGET OpenMP::OpenMP_CXX)
target_link_libraries(curaster PRIVATE OpenMP::OpenMP_CXX)
endif()

install(TARGETS curaster DESTINATION .)
install(TARGETS curaster DESTINATION .)
Loading
Loading