Для OpenCL, в частности: Каков максимальный размер, который может быть локальным массивом float?Каков максимальный допустимый размер локальной массива float?
настроить ядро так:
__kernel void mykern(unsigned int N, __global float* input, __global float* output, __local float* sdata)
{
// ...
}
Что такое максимум, что я могу установить размер SData быть (в OpenCL)?
я сделал следующее в C++ OpenCL:
clSetKernelArg(kf_myvred,3,(lws[0])*sizeof(cl_float),NULL);
clEnqueueNDRangeKernel(mycommandq,kf_myvred,1,NULL,work,lws,0,NULL,NULL);
Если размер слишком велик, то clEnqueueNDRangeKernel возвращает ошибку CL_OUT_OF_RESOURCES. Но я не уверен, какой предел.
Если я использую global_work_size как размер, то он дает мне ошибку. Но если я использую local_work_size, он дает не дает мне ошибку. –
Стандарт C++ не определяет максимальный размер массива. Практический максимальный размер зависит от вашей реализации на C++ и, очевидно, будет зависеть от того, сколько памяти доступно в данный момент. –
@SamVarshavchik Указывает размер, который требуется для поддержки всех реализаций? – Barmar