кaк cTpouTcя oчередь доступа к параметру CUDA функции?

Moderator: BarsMonster

Post Reply [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable
dqrest
Posts: 2
Joined: Fri Aug 09, 2013 8:22 am
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

кaк cTpouTcя oчередь доступа к параметру CUDA функции?

Post by dqrest » Fri Aug 09, 2013 8:34 am

Всем привет) Я вот пишу простую программу на КУДА, которая присваивает значение всем элементам матрицы.

Дано: матрица А с размером 128х128, число В.
Нужно присвоить число В всем элементам матрицы А. Я создаю КУДА функцию с 128 блоками и 128 потоками.
Вопрос: Как будет выстраиваться очередб доступа в КУДА функции к переменной В

__global__ void func(double *dataGPU, double B, int n, int m)
{
int idx = blockIdx.x * blockDim.x + threadIdx.x;
int size = n * m; // будет ли это место выполнятся параллельно?
if(idx < size)
dataGPU[idx] = B;// будет ли это место выполнятся параллельно?
}
Будут ли указанные места выполнятся параллельно? Как сделать это максимально эффективно?

User avatar
BarsMonster
Site Admin
Posts: 1118
Joined: Wed Oct 01, 2008 7:58 pm
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: кaк cTpouTcя oчередь доступа к параметру CUDA функции?

Post by BarsMonster » Fri Aug 09, 2013 8:43 am

Гораздо проще проверить на практике, и оценить получившуюся скорость записи в видеопамять.
Если она примерно равна теоретической полосе пропускания - значит все ок.

dqrest
Posts: 2
Joined: Fri Aug 09, 2013 8:22 am
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Re: кaк cTpouTcя oчередь доступа к параметру CUDA функции?

Post by dqrest » Fri Aug 09, 2013 11:52 am

Все таки очередь доступа портит все кашу.
думаю, что логично было бы сделать так

__global__ void func(double *dataGPU, double B, int n, int m)
{
int idx = blockIdx.x * blockDim.x + threadIdx.x;
__shared__ double sval;
if(threadIdx.x == 0)
sval = B;
__syncthreads();

int size = n * m; // будет ли это место выполнятся параллельно?
if(idx < size)
dataGPU[idx] = sval;// будет ли это место выполнятся параллельно?
}

Улучшение есть, но кто-нить знает другие рецепты. В инете рыл-рыд не могу найти ничего!

Post Reply
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable

Who is online

Users browsing this forum: No registered users and 1 guest