Error with python-3.8
Apparently the destrurctor is not making a copy of the keys to destroy the dict:
```
Traceback (most recent call last):
  File "/home/jerome/workspace/silx/build/lib.linux-x86_64-3.8/silx/opencl/sift/alignment.py", line 149, in __del__
    self._free_buffers()
  File "/home/jerome/workspace/silx/build/lib.linux-x86_64-3.8/silx/opencl/sift/alignment.py", line 171, in _free_buffers
    for buffer_name in self.cl_mem:
RuntimeError: dictionary keys changed during iteration
```
diff --git a/silx/opencl/sift/alignment.py b/silx/opencl/sift/alignment.py
index c09df9137..80241079f 100644
--- a/silx/opencl/sift/alignment.py
+++ b/silx/opencl/sift/alignment.py
@@ -37,7 +37,7 @@ __authors__ = ["Jérôme Kieffer", "Pierre Paleo"]
 __contact__ = "jerome.kieffer@esrf.eu"
 __license__ = "MIT"
 __copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
-__date__ = "09/02/2018"
+__date__ = "06/05/2020"
 __status__ = "production"
 
 import os
@@ -168,11 +168,11 @@ class LinearAlign(OpenclProcessing):
         """
         free all memory allocated on the device
         """
-        for buffer_name in self.cl_mem:
+        for buffer_name in list(self.cl_mem.keys()):
             if self.cl_mem[buffer_name] is not None:
                 try:
-                    del self.cl_mem[buffer_name]
-                    self.cl_mem[buffer_name] = None
+                    buffer = self.cl_mem.pop(buffer_name)
+                    del buffer
                 except pyopencl.LogicError:
                     logger.error("Error while freeing buffer %s" % buffer_name)
 
['silx/opencl/sift/alignment.py']