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

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

Страницы: 1 2 3 410 Следующая »
#15
18:27, 28 ноя 2009

FROL
Читал у нескольких авторов о стеке, конечно его сделать можно. Я имел в виду что его нет изначально, и это дает некоторые проблемы для написания kd-tree.

#16
18:36, 28 ноя 2009

_vasa_
> Архитектуры разные и точить видимо нужно, или схожесть есть? :)

Если в шейдерах не нужно заморачиваться над архитектурой... То почему нужно заморачиваться тут? Ну даст тебе это 5-10 лишних ФПС, ты больше потратишь времени на оптимизации... Не стоит оно того... Пиши правильный код и всё...
А где код работает медленее, то это уже проблемы железки...

#17
18:40, 28 ноя 2009

Executor
Если один кадр пару часов делается на цп, то даже -1 fps или -5 это разница :)

#18
20:02, 28 ноя 2009

Executor
> Если в шейдерах не нужно заморачиваться над архитектурой...
Ну х.з. я бы поспорил. Я так не думаю, что 5 фпс, разница в разы может быть. Если не влазишь в 32 регистра, то ахтунг полный на Nvidia.

Возьмем например вычисление шума перлина. Можно сразу считать его, а можно в текстуре предрассчитывать и фетчить слои оттуда.
На Nvidia намного быстрее способ с текстурами должен быть, а на ати наверное прямое вычисление, но х.з. я не пробовал именно шум перлина - это так идея пришла в голову.
Реальный пример - умножение матриц. Посмотри как оно реализовано в CUDA и STREAM - ну совсем по-разному.

_vasa_
Вообще почитай про STREAM и CUDA - там довольно много инфы по архитектуре и тому как все это работает и почему надо так делать а не иначе.

#19
20:04, 28 ноя 2009

_vasa_
> Я имел в виду что его нет изначально, и это дает некоторые проблемы для
> написания kd-tree.
Да какие проблемы то? делаешь так float2 stack[32]; и все.

#20
20:31, 28 ноя 2009

FROL
> Реальный пример - умножение матриц. Посмотри как оно реализовано в CUDA и STREAM - ну совсем по-разному.

В НВСДК умножение на вектор реализовано семи разными вариантами... И что теперь?
Это ни о чём не говорит... Писали разные люди, написали поразному...
Вот если пример НВ взять, и взять пример АТИ, позапускать на АТИ и НВ картах и увидеть, что пример НВ даёт на НВ большое преимущество, а на Ати нет, и соответственно пример АТИ даёт на АТИ большое преимущество, а на НВ нет, тогда можно говорить о том, что имеет смысл оптимизировать под каждое железо...

#21
8:56, 29 ноя 2009

Executor
В общей сложности нужно около 64 регистра на ядро. И тем не менее это нормально, т.к. еще сократить удастся врядли. Ожидаемый результат - в 2-6 раз быстрее на 8800 ультра в сравнении со средним двух- или одноядерником.

#22
9:56, 29 ноя 2009

Ну ты же выставляешь программно просто количество блоков, тебе же не придётся код переписывать...

#23
10:02, 29 ноя 2009

Executor
> тебе же не придётся код переписывать...
Надеюсь...

#24
10:32, 29 ноя 2009

Кто уже успел поюзать вот это http://forums.nvidia.com/index.php?showtopic=149959  ?

#25
13:56, 29 ноя 2009

_vasa_
> В общей сложности нужно около 64 регистра на ядро.
Это очень плохо. Попробуй поставить ограничение в 32 регистра (там флаг есть у компилятора) и часть данных положить в шаред (только чуть-чуть) и локальную память (они сами в нее положатся, если регистров не хватает).
А что за алгоритм, почему так много регистров надо?

#26
16:23, 29 ноя 2009

FROL
> что за алгоритм
Глянь тут, примерно тоже нужно
http://www.graphicon.ru/proceedings/2009/conference/se12/97/97_Paper.pdf

Вопрос, в чем отличие карт quadro, что они могут предложить в плане количества регистров и прочего?
Вот в спеках квадро >Unlimited programmability. Что это реально значит? Прочел что в квадро есть аппaратный BRDF (Bidirectional reflectance distribution function), как раз для рейтрейсинга, только как его использовать?

#27
16:48, 29 ноя 2009

ИМХО, квадра - это чисто маркетинговая фигня. ничего в ней нет особенного по-моему.

>аппaратный BRDF (Bidirectional reflectance distribution function), как раз для рейтрейсинга.
а что именно под этим понимается? А то фонг - это тоже BRDF как бы

>Вопрос, в чем отличие карт quadro, что они могут предложить в плане количества регистров и прочего?
а в той спеке которую ты читаешь не написан размер регистрового файла у квадры на один SM?

>Глянь тут, примерно тоже нужно
Да, я знаю эту статью)
Ну там написано же как регистры экономить.
У тебя должно быть 16-20 регистров на kd-tree траверс и 32 на ray-triangle intersection. 2 разных кернела. 64 регистра это ахтунг.

#28
16:54, 29 ноя 2009

FROL
Про brdf что они подразумевают не знаю, там всего одна фраза написана, что оно вот есть.

> размер регистрового файла у квадры на один SM
Нет, не нашел еще хорошей спеки, дефицит.

Про 64 понял, значит ошибся я.

#29
16:59, 29 ноя 2009

FROL
А ты не автор статьи ? :))

Страницы: 1 2 3 410 Следующая »
ПрограммированиеФорумОбщее

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