26.06.2013 Views

Utilisation avancée des processeurs graphiques avec Qt

Utilisation avancée des processeurs graphiques avec Qt

Utilisation avancée des processeurs graphiques avec Qt

SHOW MORE
SHOW LESS

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/

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!