  
      def get_used(self):
          """ Return the vram in use """
          self.initialize()
          if IS_MACOS:
              vram = [pynvx.cudaGetMemUsed(handle, ignore=True) / (1024 * 1024)
                      for handle in self.handles]
          else:
              vram = [pynvml.nvmlDeviceGetMemoryInfo(handle).used / (1024 * 1024)
                      for handle in self.handles]
 
</s> remove         if IS_MACOS:
 </s> add         if self.plaid:
            # NB There is no useful way to get free VRAM on PlaidML.
            # OpenCL loads and unloads VRAM as required, so this returns the maximum allowed
            # allocation size. It's not particularly useful
            vram = self.plaid.max_alloc
        elif IS_MACOS: </s> remove         if IS_MACOS:
 </s> add         if self.plaid is not None:
            self.handles = self.plaid.devices
        elif IS_MACOS: </s> remove             self.active_devices = list(range(self.device_count))
        if self.logger:
            self.logger.debug("Active GPU Devices: %s", self.active_devices)
 </s> add             devices = os.environ.get("CUDA_VISIBLE_DEVICES", None)
            if self.device_count == 0:
                self.active_devices = list()
            elif devices is not None:
                self.active_devices = [int(i) for i in devices.split(",") if devices]
            else:
                self.active_devices = list(range(self.device_count))
            if self.logger:
                self.logger.debug("Active GPU Devices: %s", self.active_devices)
        if self.plaid:
            # NB There is no useful way to get allocated VRAM on PlaidML.
            # OpenCL loads and unloads VRAM as required, so this returns the global memory size
            # less the maximum allowed allocation size. It's not particularly useful
            vram = [self.plaid.vram[idx] - self.plaid.max_alloc[idx]
                    for idx in range(self.device_count)]

        elif IS_MACOS:
  
      def get_used(self):
          """ Return the vram in use """
          self.initialize()
        if self.plaid:
            # NB There is no useful way to get allocated VRAM on PlaidML.
            # OpenCL loads and unloads VRAM as required, so this returns the global memory size
            # less the maximum allowed allocation size. It's not particularly useful
            vram = [self.plaid.vram[idx] - self.plaid.max_alloc[idx]
                    for idx in range(self.device_count)]

        elif IS_MACOS:
              vram = [pynvx.cudaGetMemUsed(handle, ignore=True) / (1024 * 1024)
                      for handle in self.handles]
          else:
              vram = [pynvml.nvmlDeviceGetMemoryInfo(handle).used / (1024 * 1024)
                      for handle in self.handles]
keep keep keep keep replace keep keep keep keep keep
 Experimental AMD Support (#764)

* PlaidML support in setup.py

* Add AMD flag for plaidml support

* PlaidML - Use .plaidML file if present, otherwise default to largest available

* Update training info message for GUI

* Add AMD option to Windows Installer

* Add quiet keras.backend importer and minor sysinfo amend.

* plug PlaidMLStats into GPUStats

* Update Docs 
lib/gpu_stats.py