Boost.Compute est un framework de calcul basé sur C++ qui encapsule OpenCL. Il propose des interfaces d'abstraction de haut niveau, permettant aux développeurs d'exploiter plus facilement les capacités de calcul parallèle des GPU et d'autres dispositifs de calcul. En tant que partie de la collection Boost, il maintient les standards de qualité et de performence caractéristiques de cet écosystème.
Procédure d'installation
Boost.Compute fait partie intégrante de la distribution Boost officielle depuis la version 1.61. Son installation suit le processus standard des bibliothèques Boost :
- Télécharger le paquet complet de Boost.
- Compiler et installer selon la procédure habituelle de Boost.
- S'assurer que l'environnement d'exécution OpenCL est disponible sur le système (généralement fourni par le fabricant du GPU).
Intégration dans un projet
En tant que bibliothèque à en-tête unique, Boost.Compute ne nécessite aucune compilation préalable, ce qui simplifie son intégration.
Commande de compilation
Exemple typique avec le compilateur g++ :
g++ -I/chemin/vers/boost mon_programme.cpp -lOpenCL
Inclusion des en-têtes
Pour une inclusion complète de toutes les fonctionnalités :
#include <boost/compute.hpp>
Pour une inclusion minimale du noyau OpenCL (réduit les dépendances) :
#include <boost/compute/core.hpp>
Espace de noms
Toutes les fonctionnalités résident dans l'espace de noms boost::compute. On peut l'importer globalement :
using namespace boost::compute;
Macros de configuration
Plusieurs macros permettent de personnaliser le comportement de Boost.Compute :
- Débogage :
BOOST_COMPUTE_DEBUG_KERNEL_COMPILATIONactive un mode détaillé en cas d'échec de compilation d'un kernel, affichant le code source et le journal de construction. - Thread-safety :
BOOST_COMPUTE_THREAD_SAFEactive la sécurité des threads. Elle nécessite le support dethread_localde C++11 (viaBOOST_COMPUTE_HAVE_THREAD_LOCAL) ou le lien avec Boost.Thread. - Cache :
BOOST_COMPUTE_USE_OFFLINE_CACHEactive un cache sur disque pour les binaires de kernels compilés. Cette option requiert de lier Boost.Filesystem et Boost.System.
Recommandations pratiques
- Développement : Activer
BOOST_COMPUTE_DEBUG_KERNEL_COMPILATIONpour faciliter l'investigation des erreurs. - Production : Pour des kernels complexes, l'utilisation du cache hors-ligne peut améliorer les performances.
- Applications multithreads : Il est impératif d'activer le mode thread-safe si plusieurs threads doivent invoquer des opérations OpenCL.
- Dépendances minimales : Si la réduction des dépendances est critique, privilégier l'inclusion de
<boost/compute/core.hpp>.
Dépannage courant
- Bibliothèque OpenCL introuvable : Vérifier l'installation des pilotes GPU et de l'environnement d'exécution OpenCL.
- Échec de compilation du kernel : Examiner les fonctionnalités supportées par le dispositif cible et utiliser la macro de débogage pour les messages d'ereur.
- Performances sous-optimales : Expérimenter avec différentes tailles de groupe de travail et optimiser les schémas d'accès aux données en utilisant la mémoire locale.