ПрограммированиеФорумОбщее

Ускоряем рейтрейсинг (CUDA) (4 стр)

Страницы: 13 4 5 610 Следующая »
#45
14:29, 5 дек 2009

Ну как бы построение на GPU это не так просто, я кроме китайцев то больше статьей и не знаю...Так что их просто нету

#46
14:36, 5 дек 2009

Насколько понял, вот линк с сорцами http://mxadd.org/

#47
14:48, 5 дек 2009

Не плохая инфа про kd-tree на cg
http://www.larsole.com/files/GPU_BVHthesis.pdf

#48
15:10, 5 дек 2009

Да, красиво у них там получается. Классный линк, раньше такой штуки точно не было.

#49
15:22, 5 дек 2009

FROL
Не встречал такой книги в свободном доступе?
http://www.springerlink.com/content/p48xruu7357w17r2/

#50
15:29, 5 дек 2009

Ух ничего себе, про это уже и книжки написали.. нет, не встечал.

#51
15:32, 5 дек 2009

FROL
Хм. Разочаровался, там одна глава всего про cuda и то вроде бы читал уже :)

#52
16:35, 5 дек 2009

Посмотрел в работе Гаранжи про деление дерева на под-деревья. В движке, с которым я работаю, есть деление на потоки, при обходе дерева, для cpu. Почему-то подумал, что можно сделать еще один поток и кинуть часть работы на gpu.

#53
16:40, 5 дек 2009

ну можно конечно если ты хочешь поддерживать 2 разные версии кода

#54
16:56, 5 дек 2009

Нашел неплохие кернелы (для обзора) http://www.tml.tkk.fi/~timo/
>Understanding the Efficiency of Ray Traversal on GPUs. Timo Aila and Samuli Laine. High-Performance Graphics 2009.

#55
16:59, 5 дек 2009

FROL
> ну можно конечно если ты хочешь поддерживать 2 разные версии кода
Хочется загрузить и gpu и проц на полную

#56
17:16, 5 дек 2009

Здорово, я не знал что у этой статьи открытые исходники. Там какие-то цифры совершенно нереальные. Надо попробовать будет

#57
12:25, 20 дек 2009

FROL
Не разбирал кернелы Aila ? Не совсем понимаю, как происходит планирование. Под G92 для перебора всех лучей выбирается 32 блока (из рассчетов), для GT200 - 120. Для G80 я не могу понять как правильно вычислить.

int firstWarp = LOAD_BALANCER_FIRST_WARP;
cuMemcpyHtoD(pWarpCounter, &firstWarp, 4);
cuMemcpyHtoD(pNumRays, &n, 4);
int numWarps = LOAD_BALANCER_NUM_WARPS; // 192 или 720, откуда эта цифра?
int warpsPerBlock = (RAY_BLOCK_HEIGHT*RAY_BLOCK_WIDTH+31) / 32;
int numBlocks = (numWarps+warpsPerBlock-1)/ warpsPerBlock;
gridWidth  = numBlocks;
gridHeight = 1;

cuMemcpyHtoD(pWarpCounter, &firstWarp, 4);  // note: this is synchronous
cuLaunchGrid(m_cuKernelFunction, gridWidth, gridHeight);
#58
13:03, 20 дек 2009

нет, не разбирал. мне слегка не до этого, экзамены)

#59
13:06, 20 дек 2009

В cuda best practices нашел такое:
>To hide arithmetic latency completely, multiprocessors should be running at least 192 threads (6 warps).
Может быть 192 как раз с этим и связано - 32*6. Почему 720 для GT200, пока не понял, но похоже принцип тот же - баланс нагрузки.

Страницы: 13 4 5 610 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.