Clfft örnek koduna bakıyordum. Her bir fonksiyon çağrısından sonra err için bir değer atamaya devam ettiklerini fark ettim.Bu kodda hata denetimi nedir?
err = clfftCreateDefaultPlan(&planHandle, ctx, dim, clLengths);
/* Set plan parameters. */
err = clfftSetPlanPrecision(planHandle, CLFFT_SINGLE);
err = clfftSetLayout(planHandle, CLFFT_COMPLEX_INTERLEAVED, CLFFT_COMPLEX_INTERLEAVED);
err = clfftSetResultLocation(planHandle, CLFFT_INPLACE);
/* Bake the plan. */
err = clfftBakePlan(planHandle, 1, &queue, NULL, NULL);
/* Execute the plan. */
err = clfftEnqueueTransform(planHandle, CLFFT_FORWARD, 1, &queue, 0, NULL, NULL, &bufX, NULL, NULL);
/* Wait for calculations to be finished. */
err = clFinish(queue);
/* Fetch results of calculations. */
err = clEnqueueReadBuffer(queue, bufX, CL_TRUE, 0, N * 2 * sizeof(*X), X, 0, NULL, NULL);
Hata denetimi gereksinimini anlıyorum, ancak aslında hiçbir zaman dönüş değerini kontrol etmiyorlar. Onlar sadece hataya atar ve üzerine yazarlar. Bunu alabilir kodumu ...
status = clfftSetPlanPrecision(bpm->fft_plan, bpm->float_type);
if(status != CLBPM_SUCCESS)
goto cleanup;
status = clfftSetLayout(bpm->fft_plan, CLFFT_COMPLEX_INTERLEAVED, CLFFT_COMPLEX_INTERLEAVED);
if(status != CLBPM_SUCCESS)
goto cleanup;
status = clfftSetPlanScale(bpm->fft_plan, CLFFT_FORWARD, 1.0f/(bpm->grid_size * bpm->grid_size));
if(status != CLBPM_SUCCESS)
goto cleanup;
status = clfftSetPlanScale(bpm->fft_plan, CLFFT_BACKWARD, 1.0f);
if(status != CLBPM_SUCCESS)
goto cleanup;
status = clfftSetResultLocation(bpm->fft_plan, CLFFT_OUTOFPLACE);
if(status != CLBPM_SUCCESS)
goto cleanup;
yılında örnek kod sadece kötü şifre mi yoksa işlev çağrıları ile yayılmakta hatadır?
Post erteleme yavaşlaması. Bir şekilde özel mi? – chux
Tam kodun linki aşağıdadır (aşağıya doğru ilerleyin) https://github.com/clMathLibraries/clFFT err sadece cl_int – chasep255
değil Tam bir kod. "Cl_int" türünün tanımı yok (AFAICT), belki de "CL/cl.h". OTOH, bu soruşturma hattının şu an için yardım etmesini beklemiyorum. – chux