Rendu GPU

Introduction

Le rendu GPU permet d’utiliser votre carte graphique pour faire des rendus au lieu d’utiliser le CPU. Cela peut accélérer le rendu, parce que les GPUs modernes sont construits pour faire de nombreux calculs. D’autre part, ils ont aussi des limitations dans le rendu de scènes complexes, du à leur mémoire plus limitée , et à des problèmes d’interactivité quand on l’utilise en même temps pour le rendu et l’affichage.

Cycles a deux modes de rendu GPU: CUDA, qui est la méthode préférée pour les cartes graphiques NVIDIA ; et OpenCL, qui prend en charge le rendu sur les cartes graphiques AMD.

Configuration

Pour autoriser le rendu GPU , aller dans les préférences utilisateur, et sous l’onglet système, sélectionner le périphérique de calculs à utiliser. Ensuite, pour chaque scène, vous pouvez choisir d’utiliser le rendu CPU ou GPU dans les propriétés du rendu.

CUDA

Nvidia CUDA est pris en charge pour le rendu GPU avec les cartes graphiques Nvidia. Nous prenons en charge les cartes graphiques commençant à partir de GTX 4xx (capacité de calcul 2.0).

Cycles requiert l’installation de pilotes Nvidia récents, sur tous les systèmes d’exploitation.

Liste de cartes CUDA avec modèle shader.

OpenCL

OpenCL est pris en charge pour le rendu GPU avec les cartes graphiques AMD. Nous prenons en charge seulement les cartes graphiques avec l’architecture GCN (HD 7xxx et au dessus). Pas toutes les cartes HD 7xxx sont des cartes GCN, vous pouvez vérifier si votre carte est ici.

Cycles requiert l’installation de pilotes AMD récents, sur tous les systèmes d’exploitation.

Fonctionnalités prises en charge et limitations

Pour une vue d’ensemble des fonctionnalités prises en charge, consultez la comparaison des fonctionnalités.

Limitations de CUDA :
The maximum amount of individual textures is limited to 88 byte-image textures (PNG, JPEG, ..) and 5 float-image textures (OpenEXR, 16 bit TIFF, ..) on GTX 4xx/5xx cards. Newer cards do not have this limit.

Foire aux questions (FAQ)

Pourquoi Blender n’est-il pas réactif pendant le rendu ?

Pendant qu’une carte graphique fait un rendu, il ne peut pas redessiner l’interface utilisateur, ce qui rend Blender non réactif. Nous essayons d’éviter ce problème en reprenant le contrôle sur le GPU aussi souvent que possible, mais une interaction complètement lisse ne peut être garantie, spécialement sur des scènes lourdes. C’est une limitation des cartes graphiques pour laquelle aucune vraie solution n’existe, bien que nous puissions être capable d’améliorer cela quelque peu dans le futur.

Si possible, il vaut mieux installer plus d’un GPU, en utilisant un pour l’affichage et l’autre (les autres) pour le rendu.

Pourquoi une scène qui rend sur un CPU ne rend pas sur le GPU ?

Il peut y avoir de multiples causes, mais la plus commune est qu’il n’y a pas assez de mémoire sur votre carte graphique. Actuellement nous ne pouvons rendre que des scènes qui rentrent dans la mémoire de la carte graphique, et elle est habituellement plus petite que celle du CPU. Notez, par exemple, que des textures images de 8k, 4k, 2k et 1k prennent respectivement 256 Mo, 64 Mo, 16 Mo et 4 Mo de mémoire.

Nous avons l’intention d’ajouter un système pour la prise en charge de scènes plus grandes que la mémoire GPU, mais cela ne sera pas pour tout bientôt.

Plusieurs GPU peuvent-ils être utilisés pour le rendu ?

Oui, allez à User Preferences ‣ System ‣ Compute Device Panel, et configurez-le selon vos désirs.

Plusieurs GPU augmenteraient-ils la mémoire disponible ?

Non, chaque GPU ne peut accéder qu’à sa propre mémoire.

Qu’est-ce qui rend le plus vite, Nvidia ou AMD, CUDA ou OpenCL ?

Actuellement Nvidia avec CUDA rend plus vite. Il n’y a pas de raison fondamentale pour laquelle c’est comme cela, car nous n’utilisons aucune fonctionnalité spécifique à CUDA, mais le compilateur apparaît être plus mature, et peut mieux prend en charge de gros noyaux. La prise en charge d’OpenCL est encore à un stade précoce et n’a pas été optimisé autant que cela.

Messages d’erreur

Unsupported GNU version! gcc 4.7 and up are not supported!

Sous Linux, selon votre version de GCC, vous pourriez obtenir cette erreur.

Si c’est le cas, supprimez la ligne suivante dans /usr/local/cuda/include/host_config.h

#error -- unsupported GNU version! gcc 4.7 and up are not supported!

CUDA Error: Invalid kernel image

Si vous obtenez cette erreur sous MS-Windows 64-bit, assurez-vous d’utiliser la version 64-bit de Blender, pas la version 32-bit.

CUDA Error: Kernel compilation failed

Cette erreur se produit si vous avez une nouvelle carte graphique Nvidia qui n’est pas encore prise en charge par la version de Blender et le CUDA toolkit installés. Dans ce cas il se peut que Blender essaye de construire dynamiquement un noyau pour votre carte graphique et échoue.

Dans ce cas vous pouvez :

  1. Vérifier si la toute dernière version de Blender (officielle ou expérimentale) prend en charge votre carte graphique.

  2. Si vous construisez vous-même Blender, essayez de télécharger et installer une version plus récente de CUDA developer toolkit.

Normalement les utilisateurs n’ont pas besoin d’installer le CUDA toolkit car Blender est fourni avec des noyaux précompilés.

CUDA Error: Out of memory

Cela signifie habituellement qu’il n’y a pas assez de mémoire pour enregistrer la scène sur le GPU. Actuellement nous ne pouvons rendre que des scènes qui rentrent dans la mémoire de la carte graphique, et elle est habituellement plus petite que celle du CPU. Voir ci-dessus pour plus de détails.

The Nvidia OpenGL driver lost connection with the display driver

Si un GPU est utilisé pour afficher et faire le rendu à la fois, MS-Windows a une limite sur le temps que le GPU a pour faire ses calculs de rendu. Si vous avez une scène particulièrement lourde, Cycles peut prendre beaucoup trop de temps GPU. La réduction de Tile Size dans le panneau Performance peut atténuer le problème, mais la seule solution réelle est d’utiliser des cartes graphiques distinctes pour l’affichage et le rendu.

Une autre solution peut être d’augmenter le timeout, même si cela va rendre l’interface utilisateur moins réactive pendant le rendu de scènes lourdes. En apprendre plus ici.

CUDA error: Unknown error in cuCtxSynchronize()

Une erreur inconnue peut avoir plusieurs causes, mais une possibilité est que ce soit un timeout. Voir la réponse ci-dessus pour les solutions.