Introduce resolve_cudnn_conv_algo_search

This commit is contained in:
henryruhs
2025-03-10 16:16:01 +01:00
parent e56eabe981
commit 6f62d41595

View File

@@ -36,7 +36,7 @@ def create_inference_session_providers(execution_device_id : str, execution_prov
inference_session_providers.append((facefusion.choices.execution_provider_set.get(execution_provider), inference_session_providers.append((facefusion.choices.execution_provider_set.get(execution_provider),
{ {
'device_id': execution_device_id, 'device_id': execution_device_id,
'cudnn_conv_algo_search': 'DEFAULT' if is_geforce_16_series() else 'EXHAUSTIVE' 'cudnn_conv_algo_search': resolve_cudnn_conv_algo_search()
})) }))
if execution_provider == 'tensorrt': if execution_provider == 'tensorrt':
inference_session_providers.append((facefusion.choices.execution_provider_set.get(execution_provider), inference_session_providers.append((facefusion.choices.execution_provider_set.get(execution_provider),
@@ -68,6 +68,17 @@ def create_inference_session_providers(execution_device_id : str, execution_prov
return inference_session_providers return inference_session_providers
def resolve_cudnn_conv_algo_search() -> str:
execution_devices = detect_static_execution_devices()
product_names = ('GeForce GTX 1630', 'GeForce GTX 1650', 'GeForce GTX 1660')
for execution_device in execution_devices:
if execution_device.get('product').get('name').startswith(product_names):
return 'DEFAULT'
return 'EXHAUSTIVE'
def resolve_openvino_device_type(execution_device_id : str) -> str: def resolve_openvino_device_type(execution_device_id : str) -> str:
if execution_device_id == '0': if execution_device_id == '0':
return 'GPU' return 'GPU'
@@ -76,13 +87,6 @@ def resolve_openvino_device_type(execution_device_id : str) -> str:
return 'GPU.' + execution_device_id return 'GPU.' + execution_device_id
def is_geforce_16_series() -> bool:
execution_devices = detect_static_execution_devices()
product_names = ('GeForce GTX 1630', 'GeForce GTX 1650', 'GeForce GTX 1660')
return any(execution_device.get('product').get('name').startswith(product_names) for execution_device in execution_devices)
def run_nvidia_smi() -> subprocess.Popen[bytes]: def run_nvidia_smi() -> subprocess.Popen[bytes]:
commands = [ shutil.which('nvidia-smi'), '--query', '--xml-format' ] commands = [ shutil.which('nvidia-smi'), '--query', '--xml-format' ]
return subprocess.Popen(commands, stdout = subprocess.PIPE) return subprocess.Popen(commands, stdout = subprocess.PIPE)