Fr GPU - LuxRender Wiki
Luxrender GPL Physically Based Renderer

Fr GPU

Personal tools

From LuxRender Wiki

Jump to: navigation, search

Accélération GPU

Pour de nombreux utilisateurs, une des caractéristiques les plus intéressantes de LuxRender est l'accélération GPU. LuxRender utilise la norme de calcul OpenCL GPGPU "libre" pour vous permettre de faire fonctionner une variété de "matériels de calcul" (comme les cartes graphiques) par votre système, afin d'accélérer le processus de rendu. Le but de cette page est d'informer les utilisateurs des caractéristiques et de l'état du support GPU par LuxRender.
Le support GPU est encore en développement. Dans la version stable actuelle v1.4, l'accélération GPU est disponible pour l'intégrateur "lancer de chemin". Il y a aussi une version expérimentale du rendu GPU pur, inclut dans les compilations de développement.

Contents


Usage de l'OpenCL pour un rendu plus rapide

Il est possible d'avoir des rendus plus rapides grâce aux connexions OpenCL & à l'accélération GPU, même jusqu'à 10x (avec un bon ordinateur CPU ou une carte graphique Bi-GPU) avec les conseils pratiques "pour ou contre" ci-dessous:

  • + Vitesse énorme, c.a.d. 4 mn/image, 1920 x 1200px, de bonne qualité, pour une scène d'extérieure moyennement-complexe, avec 3x cartes graphiques Radeon7950.
  • + fonctionne sur des animations.
  • + fonctionne sur tous les OS.
  • + fonctionne sur les cartes AMD aussi (pas juste NVidia comme avec CUDA)
  • - vous ne pouvez utiliser que des matériaux simples aujourd'hui, les autres seront remplacés avec un simple matériau "Mat" (avec avertissements dans la console).
  • - Le moteur de rendu pur GPU (type "Chemin OpenCL") est encore en cours d'étude et possède quelques bugs. N'oubliez pas de vérifier la dernière version et les résultats du "traqueur de bugs" pour éviter de possible bugs connus.
  • - Au début d'un rendu, le temps de réglage de la scène peut être long (au minimum: 30 secondes), en particulier sur les cartes AMD.

Pour utiliser cette méthode de rendu OpenCL entièrement accélérée GPU, vous devez sélectionner le moteur de rendu "SLG" et l'intégrateur de surface "Chemin". Consultez la documentation de l'exporteur pour plus d'informations.



Introduction à l'OpenCL

L'OpenCL est une technologie "Libre" pour faire des calculs sur des matériels "Hétérogènes". Cela signifie que vous pouvez dans & hors de l'OS, joindre facilement des matériels de traitement différents en tant que "dispositif OpenCL" et les utiliser pour vos tâches de calcul, indépendamment du genre de matériel. Dans la plupart des situations du monde réel, ce matériel est une carte graphique. Cependant, vous pouvez également joindre le processeur principal de l'ordinateur. Ça permet une solution de repli pour les applications compatibles OpenCL sur les OS qui ne supportent pas l'OpenCL, et ainsi de permettre de tirer partis de toutes les ressources du système si besoin est. Un matériel OpenCL peut être théoriquement tout dispositif informatique d'usage général dans un ordinateur, et pas seulement le CPU ou le GPU. Le matériel pourrait être un autre GPU non mitoyen aux écrans, ou être une carte d'accélération spéciale comme une carte de processeur Cell.

Moteur de rendu hybride

Actuellement, le rendu GPU de LuxRender utilise un rendu hybride CPU / GPU.

Le problème avec l'OpenCL est que certaines fonctions sont difficiles à encoder. Une solution possible est d'utiliser un dispositif puissant OpenCL (habituellement la carte graphique de la machine) pour gérer le travail de force brute, en étant alimenté par la CPU principale. Voilà comment le moteur de rendu hybride de LuxRender fonctionne:

- La CPU gère la plupart des tâches de rendu, comme l'exécution de l'interface, l'échantillonnage des rayons lumineux, la gestion de la mémoire tampon et les effets d'image, etc.
- Le GPU gère la partie lourde du rendu, c.a.d. à déterminer quelles pièces de la géométrie les rayons touchent. Cela permet à presque toutes les caractéristiques de moteur de rendu CPU de fonctionner à une vitesse 2 à 3x plus rapide.

Cependant il existe encore un manque aujourd'hui. Alors qu'un moteur de rendu hybride CPU/GPU peut atteindre une vitesse 2 à 3x plus rapide qu'un rendu CPU pur, un moteur de rendu entièrement écrit en OpenCL pourrait atteindre une vitesse ultra-rapide de l'ordre de 5 à 10x mais ce n'est pas encore codé.

Moteur de rendu pur GPU

La versions de développement de LuxRender r1.3 inclut le nouveau moteur de rendu "SLG" qui emporte "SmallLuxGPU" directement dans LuxRender, avec la traduction automatique des matériaux et de la lumière. Ce mode offre des performances nettement améliorées par rapport au moteur de rendu "hybride", mais nécessite de gérer toute la scène dans la mémoire GPU avec en plus, tous les matériaux et les textures pris en charge par ce mode.



Premiers pas avec le rendu GPU dans LuxRender

Pour configurer le rendu GPU, vous devrez spécifier le moteur de rendu "hybride" dans le fichier de la scène. La plupart des exporteurs ont une option de pré-réglage pour le mettre en place pour vous. Lorsque vous choisissez le moteur de rendu "hybride", les intégrateurs "chemin" et "Bi-Directionnel" sont disponibles. Il est important de se rappeler que l'intégrateur "Bi-Directionnel" est actuellement encore expérimental, ses résultats ne correspondent pas aux résultats de l'intégrateur "Bi-Directionnel normal, au point d'être souvent horriblement mauvais. Il ne prend pas en charge que les stratégies de lumière "Une uniforme".

Généralement, vous devez vous en tenir à l'intégrateur "Chemin" lors de la réalisation de rendus "hybrides" pour une production. Aussi, gardez à l'esprit que le moteur de rendu "hybride" ne supporte actuellement que les primitives de forme de base seulement. Il ne supporte pas les instances, les micro-triangles de déplacement, ou les formes définies mathématiquement (comme la primitive de sphère).

Exigences du système

Nvidia

Le rendu "GPU" nécessite une carte GeForce de la série 200 ou plus récente, ou la carte Quadro équivalente. Le support de la carte Tesla n'a pas été testé, mais est censé fonctionner, au moins avec LuxRender r1.1+.

Notez que les cartes plus âgées ou "bas de gamme" peuvent manquer de performance en "lancer de rayons" de rendu hybride pour être vraiment plus rapide que le moteur de rendu CPU pur. C'est principalement une limitation de la technologie du moment / gamme de prix, ce qui n'est pas susceptible de s'améliorer à l'avenir.

Utiliser les derniers pilotes disponibles est fortement recommandé pour une meilleure performance et stabilité!

AMD / ATI

Vous aurez besoin d'une carte de la série HD 5 000 ou plus récente, ou la carte modèle FirePro équivalente. Les cartes de la série HD 4 000 ne sont pas prises en charge. Ce n'est pas en raison d'un manque de support de LuxRender, mais plutôt d'un manque de soutien du pilote approprié AMD.

Utiliser les derniers pilotes disponibles est fortement recommandé pour une meilleure performance et stabilité!



Dépannage

LuxRender ne fait aucun rendu, j'ai une image vide (fond en échiquier) ou un écran noir dans Blender

Les images sont lentes à mettre à jour, vous pouvez le configurer: Rendu GPU dans Blender, options de vitesse de mise à jour (il est même pour le GPU et régulière modes de rendu), ou tout simplement attendre plus longtemps (10 sec - 2 minutes selon le mode), ou de passer à LuxGUI rendu et de regarder les résultats dans la fenêtre de l'interface graphique.

LuxRender a débuté, mais j'obtient un écran noir, et il n'y a aucun avertissements dans la console

Plusieurs utilisateurs ont signalés des problèmes avec le réglage à zéro de la taille du groupe de travail OpenCL, ce qui est censé être le mode de détection automatique, le réglage manuel à 64 semble contourner le problème. En outre, cela peut se produire lorsque vous utilisez une carte ATI de la série HD 4000. Bien que ces cartes supportent techniquement l'OpenCL, AMD a négligé de prendre en charge plusieurs fonctions des cartes de la série HD 4000 dans leurs pilotes récents, et ces caractéristiques sont requis pour exécuter LuxRender. Voir la section "ATI / AMD" ci-dessus.

Je dispose de plusieurs cartes graphiques, mais LuxRender n'en utilise qu'une seule

C'est une limitation connue avec l'ancienne version de LuxRender v0.8. Cela ne devrait plus être un problème avec la version 1.1+, sauf si vous demandez spécifiquement à LuxRender d'utiliser un seul appareil.

Le Log de LuxRender n'affiche pas ma carte GPU comme étant trouvée, même si j'ai une carte prise en charge

Par défaut, LuxRender ciblera la plateforme "0" OpenCL . Comme il est probable que ce soit la plate-forme qui contient votre carte graphique, parfois ce n'est pas forcément le cas. Vous pouvez essayer d'augmenter le numéro de la plate-forme OpenCL dans le fichier de la scène produit par l'exporteur, par 1 jusqu'à ce que la carte graphique soit employée.

Le mode "Hybride" est plus lent que le moteur de rendu CPU: pourquoi !?

Êtant un moteur de rendu hybride CPU / GPU , LuxRender doit faire face à une surcharge des allers-retours entre le CPU et le GPU. Sur une scène simple, ou avec un GPU lente, cette surcharge sera plus grande que l'accélération GPU, donnant une vitesse plus lente pour faire le rendu ensemble.

Les statistiques d'efficacité GPU dans LuxRender ne correspondent pas à la charge rapportée par mon pilote graphique

La charge affichée dans l'interface de LuxRender n'est pas la charge de calcul de la carte dans son ensemble. Au contraire, ça montre le pourcentage de temps que LuxRender est capable de nourrir la GPU avec des "lancer de rayons". En d'autres termes, il montre comment LuxRender équilibre l'utilisation du CPU sur le GPU. Puisque c'est un sous-ensemble spécifique de la charge totale de la GPU, et qu'il ne s'agit que d'une seule application, ça ne correspondra pas à vos rapports du pilote. De plus, rappelez-vous que LuxRender est un moteur hybride "CPU / GPU". Cela signifie qu'il y a de bonnes chances de votre GPU soit limitée par votre CPU (ou vice-versa). Il est peu probable qu'ensemble, c.a.d. la charge de votre CPU normale et GPU réelle puissent tous deux atteindre 100%.

Le moteur de rendu "SLG" dit qu'il utilise seulement 2 "treads"? J'ai beaucoup plus de cœurs que ça!

Le paramètre "Treads" affiche le nombre de "threads OpenCL" utilisés. Pensez plutôt que ce sont des "tâches OpenCL" individuelles. C'est généralement un tâche par matériel OpenCL.
- Par défaut, la moteur de rendu "SGL" utilise les matériels GPU + CPU, donc vous verrez normalement 2 "threads". L'un est le travail pour votre matériel GPU, et l'autre, le travail pour votre matériel CPU.
- Le pilote OpenCL de votre CPU calculera automatiquement le bon nombre de véritables "treads" pour votre rendu. Si vous avez désactivé l'utilisation CPU ou n'avait pas installé de pilote OpenCL pour votre CPU, vous ne verrez seulement qu'1 "tread". De même, si vous avez plusieurs cartes graphiques, vous verrez beaucoup plus que 2 "treads" CQFD.

J'ai des régions noires étranges, ou de mauvaises ombres ou des tâches sombres

Il y a beaucoup de causes possibles. Certaines sont spécifiques au rendu GPU, et d'autres n'en sont pas:

  • Mauvais objets avec des normales invalides: Inversez / corriger les normales.
  • Superposition d'objets avec des faces au même endroit (par exemple Z-fighting): déplacez-les un peu.
  • Bogue dans le pilote OpenCL: Essayez une autre version du pilote GPU par exemple.
  • Bogue dans OpenCL "SGL" "Chemin" : essayez la version plus récente de développement (par exemple à partir des sources). Demandez également sur les forums d'aide.
  • Pas assez de détails dans l'objet: Voir Les trucs et astuces pour les nouveaux utilisateurs.