Skip to content

Commit c4af3d1

Browse files
authored
Merge pull request #89 from koide3/cuda13
CUDA13
2 parents 585e781 + 4984382 commit c4af3d1

File tree

11 files changed

+99
-50
lines changed

11 files changed

+99
-50
lines changed

.github/workflows/build.yml

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@ jobs:
1717
strategy:
1818
matrix:
1919
DISTRO: [
20-
{ "ubuntu": "noble_gtsam4.3a0", "suffix": "gcc" },
21-
{ "ubuntu": "noble_gtsam4.3a0", "suffix": "llvm" },
22-
{ "ubuntu": "noble_cuda12.5_gtsam4.3a0", "suffix": "gcc.cuda" },
23-
{ "ubuntu": "noble_cuda12.5_gtsam4.3a0", "suffix": "llvm.cuda" },
24-
{ "ubuntu": "jammy_gtsam4.3a0", "suffix": "gcc" },
25-
{ "ubuntu": "jammy_cuda12.2_gtsam4.3a0", "suffix": "gcc.cuda" },
26-
{ "ubuntu": "jammy_cuda12.5_gtsam4.3a0", "suffix": "gcc.cuda" },
20+
{ "tag": "jammy_gtsam4.3a0", "base_image": "ubuntu:jammy", "suffix": "gcc" },
21+
{ "tag": "jammy_gtsam4.3a0", "base_image": "ubuntu:jammy", "suffix": "llvm" },
22+
{ "tag": "jammy_cuda12.2_gtsam4.3a0", "base_image": "nvidia/cuda:12.2.2-devel-ubuntu22.04", "suffix": "gcc.cuda" },
23+
{ "tag": "jammy_cuda12.5_gtsam4.3a0", "base_image": "nvidia/cuda:12.5.1-devel-ubuntu22.04", "suffix": "gcc.cuda" },
24+
{ "tag": "jammy_cuda13.1_gtsam4.3a0", "base_image": "nvidia/cuda:13.1.0-devel-ubuntu22.04", "suffix": "gcc.cuda" },
25+
{ "tag": "noble_gtsam4.3a0", "base_image": "ubuntu:noble", "suffix": "gcc" },
26+
{ "tag": "noble_gtsam4.3a0", "base_image": "ubuntu:noble", "suffix": "llvm" },
27+
{ "tag": "noble_cuda12.5_gtsam4.3a0", "base_image": "nvidia/cuda:12.5.1-devel-ubuntu24.04", "suffix": "gcc.cuda" },
28+
{ "tag": "noble_cuda13.1_gtsam4.3a0", "base_image": "nvidia/cuda:13.1.0-devel-ubuntu24.04", "suffix": "gcc.cuda" },
2729
]
2830
BUILD_WITH_TBB: [ "ON", "OFF" ]
2931

@@ -42,13 +44,13 @@ jobs:
4244
- name: Docker build
4345
uses: docker/build-push-action@v6
4446
with:
45-
tags: koide3/gtsam_points:${{ matrix.DISTRO.ubuntu }}
47+
tags: koide3/gtsam_points:${{ matrix.DISTRO.tag }}
4648
file: ${{github.workspace}}/docker/ubuntu/Dockerfile.${{ matrix.DISTRO.suffix }}
4749
build-args: |
48-
BASE_IMAGE=koide3/gtsam_docker:${{ matrix.DISTRO.ubuntu }}
50+
BASE_IMAGE=${{ matrix.DISTRO.base_image }}
4951
BUILD_WITH_TBB=${{ matrix.BUILD_WITH_TBB }}
5052
context: .
51-
push: ${{ (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && (matrix.BUILD_WITH_TBB == 'ON') && (contains(matrix.DISTRO.suffix, 'gcc') || contains(matrix.DISTRO.suffix, 'focal')) }}
53+
push: ${{ (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && (matrix.BUILD_WITH_TBB == 'OFF') && (contains(matrix.DISTRO.suffix, 'gcc') || contains(matrix.DISTRO.suffix, 'focal')) }}
5254

5355
dispatch:
5456
needs: build

CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ if(BUILD_WITH_CUDA)
6565
set(CMAKE_CUDA_ARCHITECTURES 75 80 87 89 90 CACHE STRING "CUDA architectures" FORCE)
6666
else()
6767
if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES OR CMAKE_CUDA_ARCHITECTURES STREQUAL "52")
68-
message(WARNING "CMAKE_CUDA_ARCHITECTURES is not defined. Set to 80 by default")
69-
set(CMAKE_CUDA_ARCHITECTURES 53 62 80 87 89 90 CACHE STRING "CUDA architectures" FORCE)
68+
message(WARNING "CMAKE_CUDA_ARCHITECTURES is not defined. Set to defaults")
69+
set(CMAKE_CUDA_ARCHITECTURES 75 80 87 89 90 CACHE STRING "CUDA architectures" FORCE)
7070
endif()
7171
endif()
7272
endif()

docker/ubuntu/Dockerfile.gcc

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,22 @@
1-
ARG BASE_IMAGE=koide3/gtsam_docker:jammy
2-
1+
ARG BASE_IMAGE=ubuntu:jammy
32
FROM ${BASE_IMAGE}
43

5-
ARG BUILD_WITH_TBB=ON
4+
ENV DEBIAN_FRONTEND=noninteractive
5+
ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
6+
7+
RUN apt-get update \
8+
&& apt-get install -y --no-install-recommends \
9+
cmake build-essential gpg-agent software-properties-common \
10+
libboost-system-dev libboost-timer-dev libboost-thread-dev libboost-filesystem-dev libboost-graph-dev libboost-program-options-dev \
11+
libeigen3-dev libomp-dev \
12+
clang lld ca-certificates \
13+
libtbb-dev libgtest-dev libmetis-dev \
14+
libglm-dev libglfw3-dev libpng-dev libjpeg-dev
15+
16+
RUN add-apt-repository ppa:koide3/iridescence -y && \
17+
add-apt-repository ppa:koide3/gtsam -y && \
18+
apt-get update && \
19+
apt-get install -y libiridescence-dev libgtsam-no-tbb-dev=4.3.0-1*
620

721
COPY . /root/gtsam_points
822
WORKDIR /root/gtsam_points/build
@@ -15,9 +29,8 @@ RUN cmake .. \
1529
-DBUILD_WITH_TBB=${BUILD_WITH_TBB} \
1630
-DBUILD_WITH_CUDA=OFF \
1731
-DCMAKE_BUILD_TYPE=Release && \
18-
make -j$(nproc) && \
19-
make test && \
20-
make install && \
21-
rm -rf /root/gtsam_points/build
32+
make -j$(nproc)
33+
RUN make test
34+
RUN make install
2235

2336
CMD ["bash"]

docker/ubuntu/Dockerfile.gcc.cuda

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,22 @@
1-
ARG BASE_IMAGE=koide3/gtsam_docker:jammy_cuda12.2
2-
1+
ARG BASE_IMAGE=nvidia/cuda:12.2.2-devel-ubuntu22.04
32
FROM ${BASE_IMAGE}
43

5-
ARG BUILD_WITH_TBB=ON
4+
ENV DEBIAN_FRONTEND=noninteractive
5+
ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
6+
7+
RUN apt-get update \
8+
&& apt-get install -y --no-install-recommends \
9+
cmake build-essential gpg-agent software-properties-common \
10+
libboost-system-dev libboost-timer-dev libboost-thread-dev libboost-filesystem-dev libboost-graph-dev libboost-program-options-dev \
11+
libeigen3-dev libomp-dev \
12+
clang lld ca-certificates \
13+
libtbb-dev libgtest-dev libmetis-dev \
14+
libglm-dev libglfw3-dev libpng-dev libjpeg-dev
15+
16+
RUN add-apt-repository ppa:koide3/iridescence -y && \
17+
add-apt-repository ppa:koide3/gtsam -y && \
18+
apt-get update && \
19+
apt-get install -y libiridescence-dev libgtsam-no-tbb-dev=4.3.0-1*
620

721
COPY . /root/gtsam_points
822
WORKDIR /root/gtsam_points/build
@@ -14,10 +28,8 @@ RUN cmake .. \
1428
-DBUILD_TOOLS=ON \
1529
-DBUILD_WITH_TBB=${BUILD_WITH_TBB} \
1630
-DBUILD_WITH_CUDA=ON \
17-
-DBUILD_WITH_CUDA_MULTIARCH=ON \
1831
-DCMAKE_BUILD_TYPE=Release && \
19-
make -j$(nproc) && \
20-
make install && \
21-
rm -rf /root/gtsam_points/build
32+
make -j$(nproc)
33+
RUN make install
2234

2335
CMD ["bash"]

docker/ubuntu/Dockerfile.llvm

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,22 @@
1-
ARG BASE_IMAGE=koide3/gtsam_docker:jammy
2-
1+
ARG BASE_IMAGE=ubuntu:jammy
32
FROM ${BASE_IMAGE}
43

5-
ARG BUILD_WITH_TBB=ON
4+
ENV DEBIAN_FRONTEND=noninteractive
5+
ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
6+
7+
RUN apt-get update \
8+
&& apt-get install -y --no-install-recommends \
9+
cmake build-essential gpg-agent software-properties-common \
10+
libboost-system-dev libboost-timer-dev libboost-thread-dev libboost-filesystem-dev libboost-graph-dev libboost-program-options-dev \
11+
libeigen3-dev libomp-dev \
12+
clang lld ca-certificates \
13+
libtbb-dev libgtest-dev libmetis-dev \
14+
libglm-dev libglfw3-dev libpng-dev libjpeg-dev
615

7-
RUN update-alternatives --install /usr/bin/ld ld /usr/bin/ld.lld 50
16+
RUN add-apt-repository ppa:koide3/iridescence -y && \
17+
add-apt-repository ppa:koide3/gtsam -y && \
18+
apt-get update && \
19+
apt-get install -y libiridescence-dev libgtsam-no-tbb-dev=4.3.0-1*
820

921
COPY . /root/gtsam_points
1022
WORKDIR /root/gtsam_points/build
@@ -18,9 +30,8 @@ RUN CC=clang CXX=clang++ \
1830
-DBUILD_WITH_TBB=${BUILD_WITH_TBB} \
1931
-DBUILD_WITH_CUDA=OFF \
2032
-DCMAKE_BUILD_TYPE=Release && \
21-
make -j$(nproc) && \
22-
make test && \
23-
make install && \
24-
rm -rf /root/gtsam_points/build
33+
make -j$(nproc)
34+
RUN make test
35+
RUN make install
2536

2637
CMD ["bash"]

docker/ubuntu/Dockerfile.llvm.cuda

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,22 @@
1-
ARG BASE_IMAGE=koide3/gtsam_docker:jammy_cuda12.2
2-
1+
ARG BASE_IMAGE=nvidia/cuda:12.2.2-devel-ubuntu22.04
32
FROM ${BASE_IMAGE}
43

5-
ARG BUILD_WITH_TBB=ON
4+
ENV DEBIAN_FRONTEND=noninteractive
5+
ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
6+
7+
RUN apt-get update \
8+
&& apt-get install -y --no-install-recommends \
9+
cmake build-essential gpg-agent software-properties-common \
10+
libboost-system-dev libboost-timer-dev libboost-thread-dev libboost-filesystem-dev libboost-graph-dev libboost-program-options-dev \
11+
libeigen3-dev libomp-dev \
12+
clang lld ca-certificates \
13+
libtbb-dev libgtest-dev libmetis-dev \
14+
libglm-dev libglfw3-dev libpng-dev libjpeg-dev
615

7-
RUN update-alternatives --install /usr/bin/ld ld /usr/bin/ld.lld 50
16+
RUN add-apt-repository ppa:koide3/iridescence -y && \
17+
add-apt-repository ppa:koide3/gtsam -y && \
18+
apt-get update && \
19+
apt-get install -y libiridescence-dev libgtsam-no-tbb-dev=4.3.0-1*
820

921
COPY . /root/gtsam_points
1022
WORKDIR /root/gtsam_points/build
@@ -17,10 +29,8 @@ RUN CC=clang CXX=clang++ \
1729
-DBUILD_TOOLS=ON \
1830
-DBUILD_WITH_TBB=${BUILD_WITH_TBB} \
1931
-DBUILD_WITH_CUDA=ON \
20-
-DBUILD_WITH_CUDA_MULTIARCH=ON \
2132
-DCMAKE_BUILD_TYPE=Release && \
22-
make -j$(nproc) && \
23-
make install && \
24-
rm -rf /root/gtsam_points/build
33+
make -j$(nproc)
34+
RUN make install
2535

2636
CMD ["bash"]

src/gtsam_points/cuda/cuda_graph.cu

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// SPDX-License-Identifier: MIT
22
// Copyright (c) 2021 Kenji Koide ([email protected])
33

4+
#include <cuda.h>
45
#include <gtsam_points/cuda/cuda_graph.cuh>
56

67
namespace gtsam_points {
@@ -14,7 +15,11 @@ CUDAGraph::~CUDAGraph() {
1415
}
1516

1617
void CUDAGraph::add_dependency(CUgraphNode_st* from, CUgraphNode_st* to) {
18+
#if CUDA_VERSION >= 13000
19+
check_error << cudaGraphAddDependencies(graph, &from, &to, nullptr, 1);
20+
#else
1721
check_error << cudaGraphAddDependencies(graph, &from, &to, 1);
22+
#endif
1823
}
1924

2025
std::shared_ptr<CUDAGraphExec> CUDAGraph::instantiate() {

src/gtsam_points/factors/integrated_vgicp_derivatives_compute.cu

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
#include <thrust/iterator/transform_iterator.h>
99

1010
#include <cub/device/device_reduce.cuh>
11-
#include <cub/iterator/transform_input_iterator.cuh>
1211

1312
#include <gtsam_points/cuda/kernels/pose.cuh>
1413
#include <gtsam_points/cuda/kernels/untie.cuh>
@@ -24,10 +23,10 @@ namespace gtsam_points {
2423
void IntegratedVGICPDerivatives::issue_compute_error(const Eigen::Isometry3f* d_xl, const Eigen::Isometry3f* d_xe, float* d_output) {
2524
//
2625
lookup_voxels_kernel corr_kernel(enable_surface_validation, *target, source->points_gpu, source->normals_gpu, d_xl);
27-
cub::TransformInputIterator<thrust::pair<int, int>, lookup_voxels_kernel, int*> corr_first(source_inliers, corr_kernel);
26+
auto corr_first = thrust::make_transform_iterator(source_inliers, corr_kernel);
2827

2928
vgicp_error_kernel error_kernel(d_xl, d_xe, *target, source->points_gpu, source->covs_gpu);
30-
cub::TransformInputIterator<float, vgicp_error_kernel, decltype(corr_first)> first(corr_first, error_kernel);
29+
auto first = thrust::make_transform_iterator(corr_first, error_kernel);
3130

3231
void* temp_storage = nullptr;
3332
size_t temp_storage_bytes = 0;

src/gtsam_points/factors/integrated_vgicp_derivatives_inliers.cu

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
#include <cub/device/device_reduce.cuh>
1313
#include <cub/device/device_select.cuh>
14-
#include <cub/iterator/transform_input_iterator.cuh>
1514

1615
#include <gtsam_points/cuda/check_error.cuh>
1716
#include <gtsam_points/cuda/kernels/pose.cuh>

src/gtsam_points/factors/integrated_vgicp_derivatives_linearize.cu

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
#include <thrust/iterator/transform_iterator.h>
99

1010
#include <cub/device/device_reduce.cuh>
11-
#include <cub/iterator/transform_input_iterator.cuh>
1211

1312
#include <gtsam_points/cuda/kernels/pose.cuh>
1413
#include <gtsam_points/cuda/kernels/untie.cuh>
@@ -24,10 +23,10 @@ namespace gtsam_points {
2423
void IntegratedVGICPDerivatives::issue_linearize(const Eigen::Isometry3f* d_x, LinearizedSystem6* d_output) {
2524
//
2625
lookup_voxels_kernel corr_kernel(enable_surface_validation, *target, source->points_gpu, source->normals_gpu, d_x);
27-
cub::TransformInputIterator<thrust::pair<int, int>, lookup_voxels_kernel, int*> corr_first(source_inliers, corr_kernel);
26+
auto corr_first = thrust::make_transform_iterator(source_inliers, corr_kernel);
2827

2928
vgicp_derivatives_kernel deriv_kernel(d_x, *target, source->points_gpu, source->covs_gpu);
30-
cub::TransformInputIterator<LinearizedSystem6, vgicp_derivatives_kernel, decltype(corr_first)> first(corr_first, deriv_kernel);
29+
auto first = thrust::make_transform_iterator(corr_first, deriv_kernel);
3130

3231
void* temp_storage = nullptr;
3332
size_t temp_storage_bytes = 0;

0 commit comments

Comments
 (0)