Mon code se casse lorsque j'essaie de boucler les données dans la fonction noyau, après quelques itérations, il cesse de fonctionner, ne donnant que 0 comme réponse, quelqu'un sait pourquoi? Si je boucle toute méthode qui appelle le noyau fonctionne, mais il est beaucoup plus lentOpenCL arrête de s'exécuter uniquement lors d'un appel en boucle
cl_mem *ptrInput = &Pressure_BUFF;
cl_mem *ptrOutput = &Pressure_OUT_BUFF;
for(int i = 0; i<Interaction_per_frame; i++){
clSetKernelArg(kernel_2, 4, sizeof(Pressure_BUFF), ptrInput);
clEnqueueNDRangeKernel(queue_2, kernel_2, 1, NULL,&work_units_per_kernel, NULL, 0, NULL, NULL);
clFinish(queue_2);//Terminar de calcular
cl_mem *ptrTpm = ptrInput;
ptrInput = ptrOutput;
ptrOutput = ptrTpm;
}
clEnqueueReadBuffer(queue_2, Pressure_OUT_BUFF, CL_TRUE, 0,sizeof(Pressure), Pressure, 0, NULL, NULL);
Utilisez 'clEnqueueCopyBuffer' à la place de cl_mem juggling. – anil