From 9bdcc1ed5497f151436d69f8fc0fa5aa90c7c772 Mon Sep 17 00:00:00 2001 From: Kenzo Lobos Tsunekawa Date: Fri, 21 Feb 2025 13:50:14 +0900 Subject: [PATCH] chore(ansible): added the spconv installation to ansible (#5794) Signed-off-by: Kenzo Lobos-Tsunekawa --- amd64.env | 2 ++ ansible/playbooks/install_spconv.yaml | 4 ++++ ansible/playbooks/universe.yaml | 2 ++ ansible/roles/cuda/tasks/main.yaml | 1 + ansible/roles/spconv/README.md | 18 ++++++++++++++++ ansible/roles/spconv/defaults/main.yaml | 0 ansible/roles/spconv/meta/main.yaml | 0 ansible/roles/spconv/tasks/main.yaml | 28 +++++++++++++++++++++++++ 8 files changed, 55 insertions(+) create mode 100644 ansible/playbooks/install_spconv.yaml create mode 100644 ansible/roles/spconv/README.md create mode 100644 ansible/roles/spconv/defaults/main.yaml create mode 100644 ansible/roles/spconv/meta/main.yaml create mode 100644 ansible/roles/spconv/tasks/main.yaml diff --git a/amd64.env b/amd64.env index e09ab063d15..69f0c0209bd 100644 --- a/amd64.env +++ b/amd64.env @@ -7,3 +7,5 @@ cuda_version=12.4 cudnn_version=8.9.7.29-1+cuda12.2 tensorrt_version=10.8.0.43-1+cuda12.8 pre_commit_clang_format_version=17.0.5 +cumm_version=0.5.3 +spconv_version=2.3.8 diff --git a/ansible/playbooks/install_spconv.yaml b/ansible/playbooks/install_spconv.yaml new file mode 100644 index 00000000000..e159c7d6864 --- /dev/null +++ b/ansible/playbooks/install_spconv.yaml @@ -0,0 +1,4 @@ +- name: Download and install the cumm and spconv packages + hosts: localhost + roles: + - autoware.dev_env.spconv diff --git a/ansible/playbooks/universe.yaml b/ansible/playbooks/universe.yaml index ce32248d98b..307c7649283 100644 --- a/ansible/playbooks/universe.yaml +++ b/ansible/playbooks/universe.yaml @@ -54,6 +54,8 @@ when: rosdistro != 'rolling' - role: autoware.dev_env.tensorrt when: prompt_install_nvidia == 'y' + - role: autoware.dev_env.spconv + when: prompt_install_nvidia == 'y' # Autoware devel dependencies - role: autoware.dev_env.dev_tools diff --git a/ansible/roles/cuda/tasks/main.yaml b/ansible/roles/cuda/tasks/main.yaml index 796b105d2f5..433abf004e5 100644 --- a/ansible/roles/cuda/tasks/main.yaml +++ b/ansible/roles/cuda/tasks/main.yaml @@ -35,6 +35,7 @@ - libcublas-dev-{{ cuda__dash_case_cuda_version.stdout }} - libcurand-dev-{{ cuda__dash_case_cuda_version.stdout }} - cuda-nvml-dev-{{ cuda__dash_case_cuda_version.stdout }} + - cuda-nvrtc-dev-{{ cuda__dash_case_cuda_version.stdout }} update_cache: true when: install_devel == 'y' diff --git a/ansible/roles/spconv/README.md b/ansible/roles/spconv/README.md new file mode 100644 index 00000000000..ff3c968f0b7 --- /dev/null +++ b/ansible/roles/spconv/README.md @@ -0,0 +1,18 @@ +# spconv + +This role install the `cumm` and `spconv` libraries needed to perform sparse convolutions. +The [original implementation](https://github.com/traveller59/spconv) did not provide a shared library, which is pre-generated c++ code and pre-compiled libraries were prepared [separatedly](https://github.com/knzo25/spconv_cpp). + +## Manual Installation + +For manual installation, please follow the instructions in [this](https://github.com/knzo25/spconv_cpp) repository. + +## Run the playbook + +The following command will install a particular version of the packages using ansible. + +```bash +export CUMM_VERSION=0.5.3 +export SPCONV_VERSION=2.3.8 +ansible-playbook autoware.dev_env.install_spconv.yaml -e cumm_version=${CUMM_VERSION} -e spconv_version=${SPCONV_VERSION} --ask-become-pass +``` diff --git a/ansible/roles/spconv/defaults/main.yaml b/ansible/roles/spconv/defaults/main.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/ansible/roles/spconv/meta/main.yaml b/ansible/roles/spconv/meta/main.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/ansible/roles/spconv/tasks/main.yaml b/ansible/roles/spconv/tasks/main.yaml new file mode 100644 index 00000000000..806dfa550e6 --- /dev/null +++ b/ansible/roles/spconv/tasks/main.yaml @@ -0,0 +1,28 @@ +# cspell:ignore Bcumm +- name: Normalize dpkg architecture + ansible.builtin.set_fact: + normalized_arch: "{{ ansible_architecture | regex_replace('aarch64', 'arm64') | regex_replace('x86_64', 'amd64') }}" + +- name: Download the cumm package + ansible.builtin.get_url: + mode: "0644" + url: https://github.com/knzo25/spconv_cpp/releases/download/spconv_v{{ spconv_version }}%2Bcumm_v{{ cumm_version }}/cumm_{{ cumm_version }}_{{ normalized_arch }}.deb + dest: /tmp/cumm.deb + +- name: Install the cumm package + become: true + ansible.builtin.apt: + deb: /tmp/cumm.deb + state: present + +- name: Download the spconv package + ansible.builtin.get_url: + mode: "0644" + url: https://github.com/knzo25/spconv_cpp/releases/download/spconv_v{{ spconv_version }}%2Bcumm_v{{ cumm_version }}/spconv_{{ spconv_version }}_{{ normalized_arch }}.deb + dest: /tmp/spconv.deb + +- name: Install the spconv package + become: true + ansible.builtin.apt: + deb: /tmp/spconv.deb + state: present