def test_import_missing_variable(self): error_on_import = None error_on_instance = None error_on_devices = None with self.env_backup(): del os.environ["VULKAN_SDK"] try: import lava as lv except Exception as e: error_on_import = e try: lv.instance() except Exception as e: error_on_instance = e try: lv.devices() except Exception as e: error_on_devices = e self.assertIsNone(error_on_import) self.assertTrue(isinstance(error_on_instance, ImportError)) self.assertTrue(isinstance(error_on_devices, ImportError)) self.assertFalse(lv.initialized())
def test_import_vulkan_unavailable(self): errors_on_module_import = [] error_on_instance = None error_on_devices = None # mock vulkan initialization error # https://stackoverflow.com/a/2481588 import_original = builtins.__import__ def import_mock(name, *args, **kwargs): if name == "vulkan": # https://github.com/realitix/vulkan/blob/1.1.99.0/generator/vulkan.template.py#L105 raise OSError( "Cannot find Vulkan SDK version. Please ensure...") return import_original(name, *args, **kwargs) builtins.__import__ = import_mock # import should not fail import lava as lv # find and try all possible module imports, e.g. import lava.api.shader, ... pkg_name = self.PKG_NAME pkg_path = lv.__path__[0] ext = ".py" paths = [] for root, dirs, files in os.walk(pkg_path): for name in files: if name.endswith(ext): paths.append([pkg_name] + root[len(pkg_path):].split(os.sep)[1:] + [name[:-len(ext)]]) for path in paths: try: __import__(".".join(path)) except Exception as e: errors_on_module_import.append(e) try: lv.instance() except Exception as e: error_on_instance = e try: lv.devices() except Exception as e: error_on_devices = e self.assertTrue( len(errors_on_module_import) == 0, "\n".join([str(e) for e in errors_on_module_import])) self.assertTrue(isinstance(error_on_instance, OSError)) self.assertTrue(isinstance(error_on_devices, OSError)) self.assertFalse(lv.initialized()) builtins.__import__ = import_original
def __init__(self, physical_device, queue_index=None): super(Session, self).__init__() self.instance = lava.instance( ) # validation level might has been changed if physical_device not in lava.devices(): raise RuntimeError("Provided invalid / outdated device object") self.queue_index = queue_index or physical_device.get_queue_indices( QueueType.COMPUTE)[0] self.device = Device(physical_device, [(QueueType.COMPUTE, self.queue_index)], validation_lvl=lava.VALIDATION_LEVEL) self.buffers = set() self.shaders = set() self.stages = set() sessions.add(self)
def setUp(self): super(BufferTest, self).setUp() self.session = lv.Session(lv.devices()[0])
def setUpClass(cls): # lv.VALIDATION_LEVEL = lv.VALIDATION_LEVEL_DEBUG cls.SESSION = lv.Session(lv.devices()[0]) cls.MEMORY = {}