Capture one sur PC, apport d'une carte vidéo Open CL sur PC.

Démarré par olivier1010, Décembre 12, 2016, 14:33:53

« précédent - suivant »

olivier1010


Quelqu'un pourrait il me donner des détails sur l'apport d'une carte vidéo récente supportant open CL, avec Capture one sur PC ?

Les essais que j'ai réalisé avec Capture One 9 semblent montrer qu'il faille une carte très récente pour que cela apporte quelque chose.
Quelle carte au minimum ? Plutôt Nvidia ou AMD ?
Je ne trouve pas d'infos à jour sur le sujet pour la version Windows. Les infos qu'on trouve sur le site Capture One semblent incomplètes par rapport aux cartes disponibles actuellement :

https://www.phaseone.com/en/Search/Article.aspx?articleid=1720
Par exemple on ne sait pas si la carte AMD Firepro W2100 ou les dernières générations de cartes comme la Radéon pro WX4100 sont supportées.
Ayant déjà eu des surprises avec une carte AMD V7900 qui n'apporte rien avec Lightroom je préfère me renseigner.


Verso92

Citation de: olivier1010 le Décembre 12, 2016, 14:33:53
Quelqu'un pourrait il me donner des détails sur l'apport d'une carte vidéo récente supportant open CL, avec Capture one sur PC ?

Avec une carte récente, je ne saurais pas dire... avec mon ATi FirePro V5800, les temps d'export sous Capture One sont divisés par deux quand j'active l'OpenCL (pour l'instant, v8.3.5).

Que ce soit avec 8 Go de DDR2 (avant) ou 16 Go de DDR4 (maintenant).

olivier1010

#2
Citation de: Verso92 le Décembre 12, 2016, 20:35:17
Avec une carte récente, je ne saurais pas dire... avec mon ATi FirePro V5800, les temps d'export sous Capture One sont divisés par deux quand j'active l'OpenCL (pour l'instant, v8.3.5).

Que ce soit avec 8 Go de DDR2 (avant) ou 16 Go de DDR4 (maintenant).
En fait j'ai une machine relativement puissante, un Core i7 6 coeurs à 3.2 Ghz et 16 Go de RAM en DDR3 à 667 Mhz.

La carte vidéo est donc une AMD Firepro V7900 (2 Gb de DDR5, bus 256 bits avec un débit de 160 GB/s, 1280 cœurs GPU)

En observant plus en détail je viens de me rendre compte que la carte est bien utilisée par Capture One, mais seulement pour l'export de fichier, principalement en JPG. Les autres formats comme le JPEG2000 ou le PNG n'utilisant pratiquement pas le GPU.

Je peux exporter 25 raw de 5D mark4 en 35 secondes. Il faut le double environ si je désactive le GPU. La consommation GPU monte à 75 % lors d'un export en jpeg qualité 80 %. Alors qu'elle est nulle en JPEG2000, la vitesse d'export devenant très lente dans ce format :(
La performance du GPU n'est donc pas transcendante par rapport au CPU, je m'attendais à mieux. Je pense que c'est du au fait que le CPU est déjà très puissant, avec 6 cœurs et donc 12 hyperthread ca va déjà très vite en traitement CPU classique.

Par contre il semble que Capture One est incapable d'utiliser cette carte pour accélérer l'affichage, par exemple lorsque je bouge le curseur d'exposition, tout se fait en calcul CPU sur l'ensemble des cœurs. Le pourcentage d'utilisation GPU reste à zéro quelque soit la fonction que j'utilise (balance des blans, exposition...).

Je remarque aussi que Capture One ne semble pas très doué pour exploiter en même temps le CPU et le GPU. C'est fromage ou désert mais rarement les deux en même temps. C'est dommage cela fait perdre du temps de traitement. Il me semble qu'il doit être possible, en optimisant les algorithmes, d'utiliser toutes les ressources de la machine en simultané.

Sinon est ce que vous avez remarqué une utilisation du GPU pour le calcul de l'affichage avec la V5800 ? Si oui vous avez quelle version de driver ?
Les cartes actuelles comme la w7100 ou la wx4100 sont plus puissante, aux alentours de 5 teraflops soit environ le double de puissance par rapport à la V7900.

Par contre je me pose la question de savoir si cette puissance est réellement utilisée (et également pour l'affichage), sachant que la V7900 n'est utilisé qu'à 75% et seulement pour l'export de fichier en JPG ou TIFF. Les autres formats étant traités principalement en CPU.

Il y a peut être des différences de performances qui pourraient apparaître grâce au support de l'Open CL 2.0 sur les cartes récentes.

La quantité de mémoire utilisé par Capture One sur le GPU est une énigme. Exploite t'il plus de RAM et lance t'il plus de threads si la carte dispose de plus de ram et de cœurs disponibles ? Comment alloue t'il les cœurs ? Est t'il est capable d'utiliser les GPU de deux cartes vidéo si présentes (c'est le cas sur Mac pour le support du double GPU, mais sur PC qu'en est il ?).

Le flou le plus total règne autour de l'utilisation de l'Open CL par les logiciels graphiques commerciaux. J'ai l'impression que seul un ou deux programmeurs dans les équipes de développement savent comment ça marche exactement et quels sont les tenants et les aboutissants en ce qui concerne le choix et les performances du hardware. L'information semble bien rester confidentielle à ce niveau, rien ne fuite sauf quelques conseils comme l'utilisation de telle ou telle carte.
Il faut espérer que les futures générations de cartes vidéo offriront nettement plus de puissance de traitement GPU, car vu le prix de ces cartes ce n'est pas tellement rentable par rapport à un processeur CPU qui disposerait de cœurs supplémentaires, ce qui est déjà le cas avec le dernier core i7 10 cœurs, ainsi que sur les serveurs qui peuvent disposer de 64 cœurs ou plus.

L'OpenCL sur GPU semble aussi poser pas mal de soucis de fiabilité et de compatibilité aux développeurs, ce qui est un inconvénient par rapport à l'utilisation du CPU.

Enfin, malgré ce qu'annoncent les éditeurs de logiciels, dans la pratique, l'utilisation du GPU se borne souvent aux quelques fonctions les plus utilisées du logiciel, quand cela fonctionne...
Alors qu'un traitement CPU classique ne pose pas de problème particulier en terme de fiabilité et de difficulté de programmation et prend en charge avec la même vitesse de traitement toutes les fonctions du logiciel, sans écriture de code spécial, si ce n'est une attention particulière pour le support du multithreading et de la synchronisation des threads.


Verso92

Citation de: olivier1010 le Décembre 13, 2016, 01:29:08
Sinon est ce que vous avez remarqué une utilisation du GPU pour le calcul de l'affichage avec la V5800 ?

Non, pas spécialement.

(mais l'affichage est très rapide : le temps de rafraichissement quand je me promène dans l'image à 100% c'est quelques dixièmes de seconde...)

Jean-Claude

A vue de nez il me semble que sur cette config puissante, le goulot d'étranglement est la mémoire vidéo, 2G est faible pour C1

olivier1010

Citation de: Verso92 le Décembre 13, 2016, 05:02:23
Non, pas spécialement.

(mais l'affichage est très rapide : le temps de rafraichissement quand je me promène dans l'image à 100% c'est quelques dixièmes de seconde...)

Idem pour moi mais je m'attendais à ce que Capture One exploite le GPU pour les fonctions d'affichage lors du développement (exposition, balance des blancs, accentuation...), auquel cas on devrait être en temps réel quand on bouge les curseurs, et on devrait voir l'utilisation GPU monter lors des manipulations. Pour moi elle reste à zéro.

Je me demande si c'est une limitation de la version Windows de Capture One, ou bien un problème de compatibilité avec la carte Firepro V7900.

Selon le support Capture One, les cartes Nvidia Quadro seraient mieux prises en charge.

[at] Jean-Claude : avez constaté une différence entre des cartes avec 2, 4 ou 8 Go de RAM vidéo ?


coval95

Je ne peux pas trop t'aider dans ce sens que ma carte graphique date de 4 ans et qu'elle n'est pas très puissante car j'ai choisi une carte sans ventilo (le silence est d'or  ;)).
Le gain avec l'OpenCL n'est pas énorme mais il est quand même réel.

Mais je voulais te dire et tu l'as fait remarquer toi-même dans la fin de ton texte : l'OpenCL pose de nombreux problèmes de compatibilité. Cela fait pas mal d'années que je regarde le forum de Phase One. Souvent quand les utilisateurs ont des problèmes avec C1, il leur est conseillé de désactiver l'OpenCL...  :-\

C'est un gros boulot et ça coûte cher de tester les différentes configs possibles avec les CM+CG qui existent + celles qui ont été commercialisées il y a des années et sont encore en service chez les utilisateurs.

PS comment fais-tu pour surveiller l'utilisation du processeur graphique ?

olivier1010

#7
Citation de: coval95 le Décembre 13, 2016, 14:46:04

...

PS comment fais-tu pour surveiller l'utilisation du processeur graphique ?

Avec AMD system monitor. Malheureusement les drivers de cartes vidéo ne publient pas les performances dans le système de monitoring Windows. Ce serait plus simple... Comme quoi le GPU reste encore un peu du bricolage...

http://support.amd.com/en-us/kb-articles/Pages/AMDSystemMonitor.aspx

Sur Nvidia il y a aussi un utilitaire similaire.
Ainsi que d'autres plus pointus pour les développeurs :

https://developer.nvidia.com/performance-analysis-tools

.
Ou bien avec GPU-Z qui donne aussi l'occupation mémoire, ici sur une Firepro V3900 :
(il y a aussi GPU Caps Viewer  dans le genre).

coval95

Citation de: olivier1010 le Décembre 13, 2016, 15:15:17
Avec AMD system monitor. Malheureusement les drivers de cartes vidéo ne publient pas les performances dans le système de monitoring Windows. Ce serait plus simple... Comme quoi le GPU reste encore un peu du bricolage...

http://support.amd.com/en-us/kb-articles/Pages/AMDSystemMonitor.aspx

Sur Nvidia il y a aussi un utilitaire similaire.
Ainsi que d'autres plus pointus pour les développeurs :

https://developer.nvidia.com/performance-analysis-tools

.
Ou bien avec GPU-Z qui donne aussi l'occupation mémoire, ici sur une Firepro V3900 :
(il y a aussi GPU Caps Viewer  dans le genre).

Merci. J'ai une AMD Radeon, je vais essayer le logiciel AMD system monitor dont tu parles. C'est vrai que ce serait bien si ça s'affichait dans le gestionnaire de tâches Windows.

coval95

#9
Installé AMD system monitor, ça marche. Je vois l'utilisation du GPU grimper quand j'affiche une photo (ou plusieurs, ou quand je zoome) puis redescendre assez vite. Idem quand je lance une mise à niveau d'un répertoire vers C1 V10. Pas encore testé l'export.

Verso92

Citation de: olivier1010 le Décembre 13, 2016, 11:16:07
Idem pour moi mais je m'attendais à ce que Capture One exploite le GPU pour les fonctions d'affichage lors du développement (exposition, balance des blancs, accentuation...), auquel cas on devrait être en temps réel quand on bouge les curseurs, et on devrait voir l'utilisation GPU monter lors des manipulations.

Pourtant, chez moi, j'ai quand même l'impression que la plupart des curseurs répondent en temps réel (à l'échelle humaine).

Il n'y a que le déplacement dans une image à 100% qui demande quelques dixièmes de seconde pour le rafraichissement (du moins, à ce que j'ai pu remarquer...).

coval95

Citation de: olivier1010 le Décembre 13, 2016, 11:16:07
Idem pour moi mais je m'attendais à ce que Capture One exploite le GPU pour les fonctions d'affichage lors du développement (exposition, balance des blancs, accentuation...), auquel cas on devrait être en temps réel quand on bouge les curseurs, et on devrait voir l'utilisation GPU monter lors des manipulations. Pour moi elle reste à zéro.

Je me demande si c'est une limitation de la version Windows de Capture One, ou bien un problème de compatibilité avec la carte Firepro V7900.
...
C'est peut-être un problème de compatibilité. Je peux t'assurer que quand je bouge les curseurs, je vois dans AMD System Monitor la consommation de GPU augmenter (barre rouge) et du CPU (barres violettes).

J'utilise C1 V10 sous Win 10. Ma carte graphique est une AMD Radeon HD7750 avec 1 GO de mémoire.

olivier1010

Citation de: coval95 le Décembre 13, 2016, 22:12:42
C'est peut-être un problème de compatibilité. Je peux t'assurer que quand je bouge les curseurs, je vois dans AMD System Monitor la consommation de GPU augmenter (barre rouge) et du CPU (barres violettes).

J'utilise C1 V10 sous Win 10. Ma carte graphique est une AMD Radeon HD7750 avec 1 GO de mémoire.

Autant pour moi. Le GPU fonctionne aussi pour l 'affichage. En fait Capture One exploite bien la carte V7900. Je ne le voyais pas parce que l'utilitaire AMD system monitor met un certain temps à réagir. Il faut donc bouger les curseurs pendant quelques secondes avant de voir apparaître un pourcentage d'utilisation.

J'ai refait donc quelques essais. J'ai testé avec un raw de 130 Mo (moyen format Phase One de 100 Mpixels) et cela reste très proche du temps réel à l'affichage.

Je monte à environ 90 % de CPU (les 12 hypercœurs sont utilisés) et 60 % de GPU.

Si je désactive le GPU, l'affichage reste utilisable, mais quand même saccadé.
Exportation d'un raw de 100 Mpixels en 4 secondes environ, vers un JPG à 80% de qualité, pour un fichier final de de 16 Mo.
La consommation RAM du GPU semble rester fixe, que ce soit pour un raw de 30 Mpixels ou un 100 Mpixels, elle s'établit à environ 1800 Mo, pour 2048 Mo disponible.
Pour ceux qui ont une carte avec 4 Go de RAM vidéo, est ce que vous voyez une plus grande consommation mémoire GPU, et une saturation du GPU à 100 % ?
Il est possible que Capture One ne puisse pas charger en mémoire assez de données sur ma carte, pour cause de mémoire en trop faible quantité, ce qui expliquerait mon utilisation GPU très inférieure à 100 %.

Pour l'affichage, Capture One se débrouille donc pas mal, y compris sur de très gros fichiers. Des efforts à faire quand même pour l'export JPG2000 et PNG, qui sont... lents.
Conclusion temporaire, la carte V7900 fonctionne correctement avec Capture One et semble l'accélérer de façon significative, même si les performances en exportation de fichiers sont très perfectibles pour le JPG2000 et le PNG.


coval95

Citation de: olivier1010 le Décembre 14, 2016, 01:34:06
Autant pour moi. Le GPU fonctionne aussi pour l 'affichage. En fait Capture One exploite bien la carte V7900. Je ne le voyais pas parce que l'utilitaire AMD system monitor met un certain temps à réagir. Il faut donc bouger les curseurs pendant quelques secondes avant de voir apparaître un pourcentage d'utilisation.
...
Chez moi, l'utilisation des processeurs (GPU et CPU) telle qu'affichée dans le moniteur AMD, est quasi-instantanée par rapport à mes manips dans C1.

olivier1010

Citation de: coval95 le Décembre 14, 2016, 01:55:16
Chez moi, l'utilisation des processeurs (GPU et CPU) telle qu'affichée dans le moniteur AMD, est quasi-instantanée par rapport à mes manips dans C1.

C'est un peu étrange. Cela dépend peut être de la génération de la carte, en particulier comment elle rapporte ses performances à l'utilitaire moniteur GPU. Même si l'affichage des performances est en retard dans mon cas (entre 1 et 2 secondes), l'accélération GPU fonctionne bien dès les premières manipulations.

Quelqu'un a t'il essayé avec une carte 4 Go ou plus, et regardé l'occupation mémoire sur ces cartes ?

Jean-Claude

Je peux très bien m'imaginer que l'open CL puisse apporter énormément lors du traitement des images, qui utilise forcément beaucoup de fonctions graphiques pour adapter l'image d'écran.En fin de compte on ne fait que des modifications du "rendering" sans toucher au fichier.

Par contre quand on demande un export , on est en présence de calculs lourds de fichier  à fichier, qu'es ce que la carte graphique aurait à voir là-dedans ?

Verso92

Citation de: Jean-Claude le Janvier 18, 2017, 19:39:04
Par contre quand on demande un export , on est en présence de calculs lourds de fichier  à fichier, qu'es ce que la carte graphique aurait à voir là-dedans ?

Aucune idée... j'ai juste constaté que quand je valide l'OpenCL, les temps d'export sont divisés par deux.

dioptre

Maintenant avec 10.01.01 Open CL est automatiquement activé.
CitationImproved: Hardware Acceleration
OpenCL is now enabled by default

Philippe HERVE

une GPU peut être utilisée pour faire autre chose que du rendu d'affichage.
On l'utilise dans dans serveurs pour du calcul (finance, modélisation scientifique, compression vidéo...), voir CUDA par exemple.

Philippe

Verso92

Citation de: dioptre le Janvier 18, 2017, 20:22:35
Maintenant avec 10.01.01 Open CL est automatiquement activé.

C'est quand même mieux : au départ, chez moi, j'étais passé à côté, pensant que c'était activé par défaut...

Jean-Claude

Citation de: Philippe HERVE le Janvier 18, 2017, 20:28:00
une GPU peut être utilisée pour faire autre chose que du rendu d'affichage.
On l'utilise dans dans serveurs pour du calcul (finance, modélisation scientifique, compression vidéo...), voir CUDA par exemple.

Philippe

Très intéressant, je ne savais pas qu'un processeur de carte graphique pouvait soulager une CPU dans des opérations de calcul non graphiques.

C'est donc un peu comme dans le temps avec les coprocesseurs mathématiques ?

olivier1010

Citation de: Jean-Claude le Janvier 19, 2017, 07:34:48
Très intéressant, je ne savais pas qu'un processeur de carte graphique pouvait soulager une CPU dans des opérations de calcul non graphiques.

C'est donc un peu comme dans le temps avec les coprocesseurs mathématiques ?


Exact, sauf que l'accès se fait par une technique de programmation différente. (CUDA, OpenCL...).

La structure interne des ces processeurs est aussi très différente, ils disposent d'un grand nombre de cœurs avec une quantité limité de mémoire, ce qui les prédisposent au calcul parallèle sur des objets de taille modeste. La compression / décompression des images est une des opérations qui peut fortement profiter de ce type de processeur.
Il existe même d'ailleurs des cartes de calcul GPU sans sortie vidéo. Il est probable qu'elles soient également reconnues par Capture One puisqu'elles sont également compatibles OpenCL.

Ces cartes (conçues pour être utilisées dans dans serveurs) disposent parfois de plusieurs moteurs GPU, dans ce cas il faut que l'application soit capable de détecter tous les moteurs pour en tirer pleinement profit.

Apparemment Capture One sait exploiter plusieurs moteurs GPU simultanément, au moins sur Mac.

Sur PC je ne sais pas ce qu'il en est pour Capture One.

Dans tous les cas le prix est à la hauteur de la puissance. Sauf sur les carte vidéo entrée ou milieu de gamme dont le prix reste raisonnable dans le cadre d'une utilisation sur une station de travail graphique.

Leur spécialisation et la nécessité d'un développement spécifique pour le code entraîne des couts relativement importants et une pérennité / compatibilité nettement moins bonne que les processeurs CPU classiques.

Le traitement GPU en est encore à ses débuts, il subsiste encore pas mal de problèmes de compatibilité et de portabilité entre software et hardware malgré des efforts dans ce sens à chaque nouvelle génération de hardware / software.

Cela oblige encore pour le moment les développeurs à faire très attention aux possibilité hardware des cartes disponibles sur le marché avant de lancer un projet de programmation, d'adapter le code en conséquence, et de vérifier la compatibilité sur chaque carte existante si le produit final est destiné à une diffusion de masse. Ce qui est le cas d'un logiciel graphique.

Jean-Claude

J'en ai parlé hier avec des spécialistes au job, ils m'ont bien confirmé la spécialisation des cartes graphiques de haut de gamme dans la réalisation de très nombreux calculs pas trop lourds en simultané.