Wine et Cuda

Mettre à jour la version de Cuda dans Wine

a marqué ce sujet comme résolu.

Hello tout le monde,

J’ai dernièrement choisi de tester un peu pour le fun le logiciel Daz Studio. C’est un logiciel 3D de création de personnages. Il possède deux moteurs de rendu intégrés. Il y a 3Delight, qui fonctionne très bien mais uniquement sur GPU, et Nvidia Iray, qui peut fonctionner sur CPU et GPU. Je fais tourner Daz sur Archlinux via Wine.

Malheureusement, les rendus Iray ne tournent pas du tout sur le GPU, ce qui les rend sacrément long. J’ai fait des recherches, et il s’agit donc d’un problème avec Cuda. À partir de la version 4.12 de Daz, le rendu sur GPU est cassé. Selon les différents topics sur le net, ce serait dû à une mise à jour du moteur de rendu qui exploite une version plus récente de Cuda. La version servie par Wine n’est donc plus assez récente.

J’ai vu certaines personnes dire que copier l’ancien moteur de rendu (de la version 4.11) vers la nouvelle version de Daz fonctionnait, avec la perte d’un peu de la nouvelle efficacité. J’ai également vu un topic reddit, sans réponse, où quelqu’un demandait si une mise à jour de cuda pour Wine était prévu.

J’ai un peu tout testé, du coup, mais pas du tout réussi à faire fonctionner mes rendus. Est-ce que vous auriez une idée à essayer ?

Également, par curiosité, vous avez une idée de la complexité de ce portage wine de cuda ?

Merci

+0 -0

Si ce n’est pas déjà fait, tu peux essayer d’utiliser une version de développement de wine. Actuellement, la stable est la 6.0.2, la développement est la 7.0-rc3, qui contient beaucoup de nouveautés.

Sinon, il y a deux-trois info, malheureusement assez vieilles, ici.

Si tu veux plus d’infos, le forum de winehq pourra sûrement t’aider mieux que nous, en particulier sur quand sera fait la mise à jour. Qui peut être potentiellement très compliqué, ou bien juste que les développeur n’ont pas pris le temps jusqu’ici…

P.S. : si je cherche "wine cuda", ton sujet arrive en première page. ^^

+0 -0

Hello, merci,

Oui, je suis déjà tombé sur cette page, et je suis bien en wine-staging version 7 (Archlinux est un peu proactif sur les releases candidates).

En continuant de fouiller, j’ai vu qu’apparemment Wine a déjà fait une mise à jour après le début de ces problèmes, mais que ça ne l’a pas réglé…

+0 -0

Depuis, j’ai découvert qu’il y avait aussi un problème avec OpenCL pour la simulation physique 😬 Un utilisateur avait écrit un patch pour wine qui permette d’exposer les fonctions OpenCL 1.2 (!), mais maintenant ça ne suffit plus. C’est peut-être dû au fait qu’on est à OpenCL 3, maintenant… Et autant, le rendu sur GPU, on peut faire sans, autant la simulation physique, c’est plus compliqué…

+0 -0

Également, par curiosité, vous avez une idée de la complexité de ce portage wine de cuda ?

C’est un domaine auquel je ne connais rien, mais comme personne n’a répondu à cette question encore, je me lance.

Oui, je pense que gérer Cuda sous Wine est sans doute très technique:

  • Les couches graphiques bas niveau (Cuda, Vulkan, etc.) sont des objets techniques complexes, tu interagis avec un périphérique puissant mais capricieux et avec des pilotes propriétaires opaques.
  • Même sans l’aspect Cuda/GPU, Wine est un projet bas-niveau subtil, il faut savoir bien étudier le comporter du code Windows et trouver une implémentation Linux des primitives utilisées qui soit à la fois correcte et efficace.

En même temps, ça a l’air très rigolo comme problème, il y a beaucoup de gens qui en ont besoin et peu de gens qui ont les compétences et le courage de s’y lancer. Je ne connais rien à la communauté des développeurs Wine, mais je l’imagine remplie de gens super pointus sur leurs sujets et contents de partager avec de potentiels nouveaux contributeurs (ça change des gam-er-euse-s malpoli-e-s qui râlent sur tel ou tel bug).

Si tu te sens une fibre pour ces questions, j’aurais tendance à t’encourager à essayer de te jeter dans le bain, en trouvant le canal de développement où les gens travaillent déjà sur Wine+GPU et en leur demandant comment tu peux aider. Ça pourrait être un flop (si tu te rends compte que tes compétences actuelles sont trop loin de ce qui est recherché et que tu n’as pas le temps ou l’envie d’approfondir), mais ça ne coûte rien, et ça a de bonnes chances de t’amuser assez pour remplacer complètement ton envie d’utiliser Daz Studio !

+1 -0

Bonjour,

En investiguant un peu plus, j’ai trouvé des informations intéressantes dans mon fichier de log :

2022-01-04 17:57:17.865 Iray [INFO] - API:DATABASE ::   0.0   API    db   info : Loaded "C:\Daz 3D\Applications\64-bit\DAZ 3D\DAZStudio4\libs\iray\libneuray.dll"
2022-01-04 17:57:17.865 Iray [INFO] - API:MISC ::   0.0   API    misc info : Iray RTX 2020.1.6, build 334300.9558, 27 Mar 2021, nt-x86-64
2022-01-04 17:57:17.865 WARNING: ..\..\..\..\..\src\pluginsource\DzIrayRender\dzneuraymgr.cpp(480): Could not add path: "C:/users/timothee/AppData/Roaming/DAZ 3D/Studio4/shaders/iray". Due to unknown error -2
2022-01-04 17:57:17.865 WARNING: ..\..\..\..\..\src\pluginsource\DzIrayRender\dzneuraymgr.cpp(480): Could not add path: "C:/users/timothee/AppData/Roaming/DAZ 3D/Studio4/temp/shaders/iray". Due to unknown error -2
2022-01-04 17:57:17.883 WARNING: ..\..\..\..\..\src\pluginsource\DzIrayRender\dzneuraymgr.cpp(359): Iray [ERROR] - GPU:RENDER ::   0.0   GPU    rend error: NvAPI call NvAPI_GetAssociatedNvidiaDisplayName returned an error:
2022-01-04 17:57:17.883 WARNING: ..\..\..\..\..\src\pluginsource\DzIrayRender\dzneuraymgr.cpp(359): Iray [ERROR] - GPU:RENDER ::   0.0   GPU    rend error:   NVAPI_NO_IMPLEMENTATION
2022-01-04 17:57:17.883 WARNING: ..\..\..\..\..\src\pluginsource\DzIrayRender\dzneuraymgr.cpp(359): Iray [ERROR] - GPU:RENDER ::   0.0   GPU    rend error: NvAPI call NvAPI_GPU_GetBusType returned an error:
2022-01-04 17:57:17.884 WARNING: ..\..\..\..\..\src\pluginsource\DzIrayRender\dzneuraymgr.cpp(359): Iray [ERROR] - GPU:RENDER ::   0.0   GPU    rend error:   NVAPI_NO_IMPLEMENTATION
2022-01-04 17:57:17.884 Iray [INFO] - GPU:RENDER ::   0.0   GPU    rend info : Found 1 GPU with vendor's API.
2022-01-04 17:57:17.909 WARNING: ..\..\..\..\..\src\pluginsource\DzIrayRender\dzneuraymgr.cpp(359): Iray [WARNING] - CUDA:RENDER ::   0.0   CUDA   rend warn : CUDA module initialization failed.
2022-01-04 17:57:17.909 WARNING: ..\..\..\..\..\src\pluginsource\DzIrayRender\dzneuraymgr.cpp(359): Iray [WARNING] - CUDA:RENDER ::   0.0   CUDA   rend warn : cudaRuntimeGetVersion returned with error 'initialization error'

[…]

2022-01-04 17:57:18.108 Iray [INFO] - IRAY:RENDER ::   1.1   IRAY   rend info : NVIDIA display driver version: 495.46
2022-01-04 17:57:18.109 WARNING: ..\..\..\..\..\src\pluginsource\DzIrayRender\dzneuraymgr.cpp(359): Iray [WARNING] - IRAY:RENDER ::   1.1   IRAY   rend warn : CUDA module initialization failed with error 'initialization error' (0x3); iray photoreal can only run in CPU mode. Please update your NVIDIA driver (www.nvidia.com).
2022-01-04 17:57:18.109 WARNING: ..\..\..\..\..\src\pluginsource\DzIrayRender\dzneuraymgr.cpp(359): Iray [ERROR] - IRAY:RENDER ::   1.1   IRAY   rend error: NvAPI call NvAPI_EnumTCCPhysicalGPUs returned an error:
2022-01-04 17:57:18.109 WARNING: ..\..\..\..\..\src\pluginsource\DzIrayRender\dzneuraymgr.cpp(359): Iray [ERROR] - IRAY:RENDER ::   1.1   IRAY   rend error:   NVAPI_NO_IMPLEMENTATION
2022-01-04 17:57:18.109 Iray [INFO] - IRAY:RENDER ::   1.1   IRAY   rend info : Using iray plugin version 5.1, build 334300.9558 n, 27 Mar 2021, nt-x86-64-vc14.
2022-01-04 17:57:18.109 WARNING: ..\..\..\..\..\src\pluginsource\DzIrayRender\dzneuraymgr.cpp(359): Iray [WARNING] - IRAY:RENDER ::   1.1   IRAY   rend warn : There is no CUDA-capable GPU available to the iray photoreal renderer.

Il semble que ce soit un problème avec NvApi. Ce qu’il y a d’intéressant, c’est qu’il y a des projets qui essayent d’en améliorer le support. Et notamment, avec Lutris, j’utilise par défaut dxvk_nvapi. Ça tombe bien, parce que j’ai essayé sans, et les erreurs ont l’air d’être encore pire (ça bloque à NvApi_Initialize()).

Maintenant, est-ce que vous pensez que ça vaille que je fasse une issue pour indiquer tout ça ? Ça me semble pas mal, mais j’aimerais pas passer à côté de quelque chose. Sinon, j’aimerais bien pouvoir proposer moi-même un correctif, mais j’y connais rien en C++ ni en bas niveau, alors ça me semble un peu compliqué comme truc pour se faire la main…

Note : j’ai rien trouvé d’intéressant dans les logs en ce qui concerne la simulation physique. C’est peut-être lié, comme problème.

EDIT : Le log de dxvk_nvapi rend tout ça plus clair.

---------- 2022-01-04 18:46:40 ----------
NvAPI_QueryInterface 0xad298d3f: Unknown function ID
DXVK-NVAPI v0.5-20-ge23d450 (DAZStudio.exe)
NVML loaded and initialized successfully
NvAPI Device: NVIDIA GeForce RTX 3060 (495.46.0)
NvAPI Output: \\.\DISPLAY1
NvAPI_Initialize: OK
NvAPI_QueryInterface 0x33c7358c: Unknown function ID
NvAPI_QueryInterface 0x593e8644: Unknown function ID
NvAPI_GetInterfaceVersionString: OK
NvAPI_EnumLogicalGPUs: OK
NvAPI_EnumPhysicalGPUs: OK
NvAPI_QueryInterface 0x1efc3957: Unknown function ID
NvAPI_EnumNvidiaDisplayHandle 0: OK
NvAPI_GetPhysicalGPUsFromDisplay: OK
NvAPI_QueryInterface NvAPI_GetAssociatedNvidiaDisplayName: Not implemented method
NvAPI_GetErrorMessage -3 (NVAPI_NO_IMPLEMENTATION): OK
NvAPI_EnumNvidiaDisplayHandle 1: End enumeration
NvAPI_EnumNvidiaUnAttachedDisplayHandle 0: End enumeration
NvAPI_QueryInterface NvAPI_GPU_GetBusType: Not implemented method
NvAPI_GetErrorMessage -3 (NVAPI_NO_IMPLEMENTATION): OK
NvAPI_GPU_GetFullName: OK
NvAPI_GPU_GetVbiosVersionString: OK
NvAPI_Initialize: OK
NvAPI_SYS_GetDriverAndBranchVersion: OK
NvAPI_EnumPhysicalGPUs: OK
NvAPI_EnumLogicalGPUs: OK
NvAPI_QueryInterface NvAPI_EnumTCCPhysicalGPUs: Not implemented method
NvAPI_GetErrorMessage -3 (NVAPI_NO_IMPLEMENTATION): OK
NvAPI_GetPhysicalGPUsFromLogicalGPU: OK

EDIT bis : J’ai créé l’issue

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte