From eca82477018fc8502e1862d82732b1b830271724 Mon Sep 17 00:00:00 2001 From: Chris Hines <chris.hines@monash.edu> Date: Fri, 6 Jan 2017 14:25:36 +1100 Subject: [PATCH] Extend the GPU role The GPU role used to just detect if any driver was installed and skip installation if one was found it will now execute nvidia-smi to determine the current driver version and compare it against the desired driver version, installing in the case of mismatch Note that if an existing driver is installed, the nvidia persistence daemon must be stopped before installation can proceed Former-commit-id: 2b1ad61632751b0d643bab9e244656b93b876438 --- roles/gpu/tasks/main.yml | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/roles/gpu/tasks/main.yml b/roles/gpu/tasks/main.yml index d667addf..c13e7db2 100644 --- a/roles/gpu/tasks/main.yml +++ b/roles/gpu/tasks/main.yml @@ -62,11 +62,45 @@ register: nvidia_driver ignore_errors: true +- name: set default driver version + set_fact: + installed_driver_version: '0.0' + +- name: check nvidia driver version + shell: 'nvidia-smi | grep -Po "Driver Version: \K\S+"' + register: installed_driver_version + when: nvidia_driver.stat.exists + check_mode: no + +- name: set install default + set_fact: + install_driver: false + +- name: set uninstall default + set_fact: + install_driver: false + +- name: set install + set_fact: + install_driver: true + when: not nvidia_driver.stat.exists or not installed_driver_version == nvidia_version + +- name: set uninstall + set_fact: + uninstall_driver: true + when: nvidia_driver.stat.exists and not installed_driver_version == nvidia_version + +- name: stop the persistence daemon + service: name=nvidia-persistenced state=stopped + become: true + become_user: root + when: uninstall_driver + - name: get nvidia driver get_url: url=http://consistency0/src/NVIDIA-Linux-x86_64-{{ nvidia_version }}.run dest=/tmp/NVIDIA-Linux-x86_64-{{ nvidia_version }}.run become: true become_user: root - when: not nvidia_driver.stat.exists + when: install_driver #- name: Copy boot file # template: src=grub.conf.j2 dest=/boot/grub/grub.conf @@ -83,7 +117,7 @@ - name: build nvidia driver shell: chmod 755 /tmp/NVIDIA-Linux-x86_64-{{ nvidia_version }}.run; /tmp/NVIDIA-Linux-x86_64-{{ nvidia_version }}.run --silent sudo: true - when: not nvidia_driver.stat.exists + when: install_driver - name: set the GOM shell: nvidia-smi --gom=0 -- GitLab