code: def smart_device_selection(preferred_device_type=None):
          
          cl_environments = CLEnvironmentFactory.all_devices(cl_device_type=preferred_device_type)
          platform_names = [env.platform.name for env in cl_environments]
          has_amd_pro_platform = any('AMD Accelerated Parallel Processing' in name for name in platform_names)
  
          if has_amd_pro_platform:
              return list(filter(lambda env: 'Clover' not in env.platform.name, cl_environments))
  
          if preferred_device_type is not None and not len(cl_environments):
              return CLEnvironmentFactory.all_devices()
          
          return cl_environments
docs: Get a list of device environments that is suitable for use in MOT.
  
          Basically this gets the total list of devices using all_devices() and applies a filter on it.
  
          This filter does the following:
              1) if the 'AMD Accelerated Parallel Processing' is available remove all environments using the 'Clover'
                  platform.
  
          More things may be implemented in the future.
  
          Args:
              preferred_device_type (str): the preferred device type, one of 'CPU', 'GPU' or 'APU'.
                  If no devices of this type can be found, we will use any other device available.
  
          Returns:
              list of CLEnvironment: List with the CL device environments.