2010-09-17 23 views
3

Nous devons compresser une tonne de données d'image (monochrome) et le déplacer rapidement. Si l'on utilisait simplement les étapes de compression jpeg (DCT et encodage en longueur des résultats quantifiés) et que l'on l'exécute sur un GPU de sorte que chaque bloc soit compressé en parallèle, j'espère que ce serait très rapide et encore très significatif. facteur de compression comme le jpeg complet. Est-ce que quelqu'un ayant plus d'expérience de la compression GPU/image a une idée de la façon dont cela comparerait la compression et les performances sur l'utilisation de libjpeg sur un CPU? (Si c'est une idée stupide, n'hésitez pas à le dire - je suis extrêmement novice dans ma connaissance du cuda et des différentes étapes de la compression jpeg.) Certes, il y aura moins de compression et j'espère (?) Plus vite mais je n'ai aucune idée significatif ces facteurs peuvent être.Compression parallèle de type jpeg utilisant uniquement des étapes de codage DCT, de longueur de piste, quel type de compression/performance est possible?

+0

Quelques éléments supplémentaires à prendre en compte: Quel est le format des données actuellement? Pouvez-vous accepter la compression avec perte? Les données ressemblent-elles à des photos ou à des documents? – jeff7

+0

Je ne peux pas vous donner de détails de mise en œuvre, mais je sais que ma caméra vidéo de 9 ans était capable de faire une compression DCT 640x480 couleur à 30 images par seconde. Les reflex numériques récemment annoncés peuvent faire 1920x1080, 24 images par seconde au format JPEG. Vous devriez être capable de réaliser similaire. –

+0

Faut-il utiliser le format JPEG? Les compresseurs de style LZ simples pourraient probablement faire un travail décent et être codés sur un processeur ou peut-être même dans un shader de GPU avec un peu de travail. –

Répondre

0

Vous pourriez difficilement obtenir plus de compression dans le GPU - il n'y a juste pas d'algorithmes assez complexes qui peuvent utiliser cette puissance BEAUCOUP. Lorsque vous travaillez avec des formats simples comme JPEG, vous passerez le plus clair de votre temps à transférer des données via le bus PCI-E (qui a une latence importante, en particulier lorsque la carte ne prend pas en charge les transferts DMA).

Le côté positif est que si la carte possède un DMA, vous pouvez libérer du CPU pour des tâches plus importantes et obtenir une compression d'image "gratuitement". Dans le meilleur des cas, vous pouvez obtenir environ 10 fois plus d'amélioration sur le GPU haut de gamme que sur le processeur haut de gamme, à condition que le CPU & soit bien optimisé.

+0

Combien de temps de latence obtenez-vous sur PCI-E sans DMA? –

+0

Microsecondes sur les petits transferts, MAIS pendant que vous faites le transfert, vous ne pouvez pas faire un travail utile à la fois sur le processeur et le GPU, de sorte qu'il aspire vraiment dans les applications en temps réel. – BarsMonster