diff --git a/roles/gpu/tasks/main.yml b/roles/gpu/tasks/main.yml
index d667addfbd86b7b59c73f132a4ec2a80110d7527..c13e7db22a699453bf41d0bc45a6663bf51787ae 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