Utilisation avancée des processeurs graphiques avec Qt
Utilisation avancée des processeurs graphiques avec Qt
Utilisation avancée des processeurs graphiques avec Qt
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Utilisation</strong> <strong>avancée</strong> <strong>des</strong> <strong>processeurs</strong> <strong>graphiques</strong> <strong>avec</strong> <strong>Qt</strong> par Rémi Achard Guillaume Belz<br />
Version C++<br />
cl::vector devices;<br />
devices = context.getInfo();<br />
Version <strong>Qt</strong>OpenCL<br />
QList devices;<br />
devices = QCLDevice::allDevices();<br />
devices = QCLDevice::devices(QCLDevice::GPU, plateform);<br />
5.1.4 - Le contexte<br />
Le contexte est l'entité logique sur laquelle s'exécute le code OpenCL. Un contexte peut être rattachée à pluseurs<br />
entités matérielles (device) en même temps. Certaines opérations sont spécifiques au contexte : création de buffer<br />
(tampon en mémoire vidéo indexé sous forme d'un tableau 1D) et d'images (tampon en mémoire vidéo indexé sous<br />
forme de tableaux 2D et 3D).<br />
Version C<br />
cl_context gpuContext;<br />
gpuContext = clCreateContext(0, 1, &cdDevice, NULL, NULL, &err);<br />
Version C++<br />
cl_context_properties cprops[3] = {CL_CONTEXT_PLATFORM, (cl_context_properties)(platformList[0])(), 0};<br />
cl::Context context(CL_DEVICE_TYPE_CPU, cprops, NULL, NULL, &err);<br />
Version <strong>Qt</strong>OpenCL<br />
QCLContext context;<br />
bool fail = context.create();<br />
TODO : creation de contexte et device directement<br />
5.1-E - Le programme<br />
TODO : charger un fichier texte, créer un programme<br />
Version C<br />
TODO : à faire<br />
char* src = "...";<br />
program = clCreateProgramWithSource(context, 1, &src, NULL, &err);<br />
err = clBuildProgram(program, 0, NULL, NULL, NULL, NULL);<br />
Version C++<br />
std::ifstream file("filename.cl");<br />
std::string str(std::istreambuf_iterator(file), (std::istreambuf_iterator()));<br />
cl::Program::Sources src(1, std::make_pair(str.c_str(), str.length()+1));<br />
cl::Program program(context, src);<br />
Version <strong>Qt</strong>OpenCL<br />
// A partir d'une chaîne de caractères<br />
QString src = "...";<br />
QCLProgram program = QCLContext::createProgramFromSourceCode(src);<br />
// A partir d'un fichier<br />
QCLProgram program = QCLContext::createProgramFromSourceFile("filename.cl");<br />
- 62 -<br />
http://gbelz.developpez.com/remi-achard/gpu-avance-<strong>avec</strong>-qt/modified/