Алгоритм параллельной агрегации данных для визуализации данных о вербальном и невербальном поведении человека - page 10

Б.А. Князев
10
// цикл модифицированного алгоритма
reduction tree
for (unsigned int stride = blockDim.x/2; stride > 32; stride >>= 1)
{
if (t < stride)
sMin[t] = min(sMin[t], sMin[t + stride]);
__syncthreads();
}
// раскрываем цикл для потоков в пределах порций потоков (t <
<32), избавляясь от необходимости синхронизировать потоки в
пределах порций потоков (warp)
if (t < 32)
{
// объявляем временные переменные volatile, чтобы на
уровне компиляции избежать некорректного поведения
volatile T *minV = sMin;
// аналогично коду в цикле for
}
if (t = 0)
// в первом потоке блока вычисляются конечные ве-
личины
out_min[blockIdx.x] = sMin[0];
}
Эксперимент и результаты.
Для оценки эффективности обзора
масштабирования и навигации данных проводилось два исследова-
ния: оценка скорости алгоритма агрегирования и пропускной спо-
собности
CPU
и
GPU
, а также оценка загруженности ресурсов
CPU
и
GPU
при построении большого объема данных.
Для исследования скорости работы алгоритма и пропускной способ-
ности графического процессора использовались шумовые сигналы дли-
тельностью 2
10
... 2
30
отсчетов по 1 ... 4 байтов на отсчет. Сравнение про-
изводительности алгоритма проводилось между центральным процес-
сором
CPU E7500
, графическим процессором
G86
и
GF104
[12] (табл. 1).
Таблица 1
Характеристики используемых для исследования процессоров
Процес-
сор
Пропуск-
ная спо-
собность
C
,
Гб/с
Произво-
дитель-
ность,
GFLOPS
Объем ви-
деопамяти
GlobalMem-
Size
, байт
Размер сетки
блоков
GridSize
, кол-
во потоков
Размер блока
потоков
BlockSize
, кол-
во потоков
CPU
E7500
5,3
23,464
G86
6,4
22
2
29
2
16
2
9
GF104
108,8
748,8
2
30
2
16
2
10
1,2,3,4,5,6,7,8,9 11,12,13,14
Powered by FlippingBook