L'implémentation d'Apple est basé sur llvm et ressemble beaucoup au fonctionnement de la pile OpenGL d'OS X 10.5.
Le code OpenGL (et OpenCL) est compilé en bytecode llvm qui à l'exécution est optimisé puis mouliné dans un runtime JIT. En fonction du matériel présent, soit le code est directement exécuté sur le GPU soit par la CPU si la fonction OpenGL n'est pas disponible (typiquement avec les GPU intégré).
Quelle est la différence avec les solutions précédentes, c'est que le runtime JIT basé sur llvm est plus performant que les interpréteurs classiques des pilotes OpenGL. Et pour Apple, ça leur évite de maintenir un interpréteur pour chaque plateformes (x86, PPC, ARM) et un gain de performance graphique (l'affichage dans OS X étant entièrement basé sur OpenGL).
Le runtime OpenCL déterminera quelle unité de calcul fournira les meilleures performances pour un calcul donné puis compilera/optimisera à la volée le bytecode pour celle-ci.
PS: Grand Central ne se limiterait pas seulement au GPGPU (voire ne l'inclurait pas du tout), son but premier est de faciliter la programmation parrallèle (donc assez proche de Intel TBB ou Qt Concurrent).
L'annonce de "Snow Leopard" va d'ailleurs dans ce sens. http://www.apple.com/pr/library/2008/06/09snowleopard.html
À son habitude, Apple reste assez opaque à ce sujet, ce qui se cache derrière Grand Central est relativement vague, on n'est même pas sûr que Grand Central couvre le domaine du GPGPU. La page relative à Snow Leopard les traite comme deux technologies différentes (Grand Central = "multicore", OpenCL = "an another powerful Snow Leopard technology") http://www.apple.com/macosx/snowleopard/
[^] # Re: J'ai un peu de mal avec le concept.
Posté par GeneralZod . En réponse à la dépêche OpenCL, en version 1.0. Évalué à 8.
Le code OpenGL (et OpenCL) est compilé en bytecode llvm qui à l'exécution est optimisé puis mouliné dans un runtime JIT. En fonction du matériel présent, soit le code est directement exécuté sur le GPU soit par la CPU si la fonction OpenGL n'est pas disponible (typiquement avec les GPU intégré).
Quelle est la différence avec les solutions précédentes, c'est que le runtime JIT basé sur llvm est plus performant que les interpréteurs classiques des pilotes OpenGL. Et pour Apple, ça leur évite de maintenir un interpréteur pour chaque plateformes (x86, PPC, ARM) et un gain de performance graphique (l'affichage dans OS X étant entièrement basé sur OpenGL).
Voici une présentation qui explique très bien le fonctionnement de la pile OpenGL de OS X.
http://llvm.org/devmtg/2007-05/10-Lattner-OpenGL.pdf
Le runtime OpenCL déterminera quelle unité de calcul fournira les meilleures performances pour un calcul donné puis compilera/optimisera à la volée le bytecode pour celle-ci.
PS: Grand Central ne se limiterait pas seulement au GPGPU (voire ne l'inclurait pas du tout), son but premier est de faciliter la programmation parrallèle (donc assez proche de Intel TBB ou Qt Concurrent).
L'annonce de "Snow Leopard" va d'ailleurs dans ce sens.
http://www.apple.com/pr/library/2008/06/09snowleopard.html
À son habitude, Apple reste assez opaque à ce sujet, ce qui se cache derrière Grand Central est relativement vague, on n'est même pas sûr que Grand Central couvre le domaine du GPGPU. La page relative à Snow Leopard les traite comme deux technologies différentes (Grand Central = "multicore", OpenCL = "an another powerful Snow Leopard technology")
http://www.apple.com/macosx/snowleopard/