Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 26 • Страница 1 из 21  2  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 01.12.2006
Прочитав очередную новость про использование видюхи в качестве суперкомпьютера для расчетов, мне пришла в голову мысль, а почему бы мне не написать что нибудь, используя видюху для расчетов? (программа-максимум написать архиватор, но не знаю хватит ли духу)
Проблема в том, что я понятия не имею как это все программируется (никогда 3д графикой не занимался). Понятно, что пишется шейдер, но результат выполнения не отображается на экране как в играх, а как то используется, но как его писать, в чем, — не представляю.

Кто нибудь может просветить?



Партнер
 

Advanced member
Статус: Не в сети
Регистрация: 16.11.2006
Откуда: Всегда!
Afx писал(а):
Понятно, что пишется шейдер, но результат выполнения не отображается на экране как в играх

Ну и результатработы шейдера не отображается :) . Отображением на экран шейдеры вообще не занимаются, это блок растеризации делает.
А пишется просто. В DX9 в нормальном режиме на вход карты подается, как правило, информация из вершинных буферов для обработки по программе вершинного шейдера. После этой обработки дипетчер карты эту информацию согласует с другими данными (вершинный шейдер понятия не имеет, что он обрабатывает - потоковая обработка), производится ряд других операций (клиппинг и т.д.) и информация после этого обрабатывается пиксельным шейдером. Ну и далее по конвейру. Для Nvidia c SM3, для ATI c SM2 появилась возможность выполнения вершинного шейдера не над данными из буфера вершин, а над произвольными данными, которые могут храниться в формате текстур, и после рендеринга в специальную поверхность (фактически, в ту же текстуру, например) направлять снова как данные на вход вершинного шейдера. А когда вся обработка закончена, можно итоговую информацию считать из этой текстуры, то есть это могут быть любые произвольные данные, и направить куда угодно. DX10 еще более упростил задачу, узаконив операции, не имеющие прямого отношения к графике, легализовав streamout в память результатов работы шейдера и выделив графическому ядру виртуальное системное адресное пространство для хранения и обмена данными и ядро ОС Vista поддерживает эту работу ГПУ, в том числе и переключение задач на ГПУ.
Так что, флаг тебе в руки, исходники 7Zip И.Павлова ( на С++ и С# ) - на сайте. Да и у НВидиа SDK под CUDA для 8 серии под С++ в наличии.
Но полгодика минимум все-таки придется 3Д поизучать. Хотя, Ньютону и одного яблока по башке хватило, все от человека зависит. :)


 

Member
Статус: Не в сети
Регистрация: 01.12.2006
zauropod спасибо за объяснения, но можно с самого начала - как вообще этот шейдер пишется? Я в ОпенГЛе немного пытался разобраться, а в D3D - вообще полный ноль... Какой там набор команд, формат данных и т.д. (в асме немного шарю, если чё.)

Цитата:
Так что, флаг тебе в руки, исходники 7Zip И.Павлова ( на С++ и С# ) - на сайте. Да и у НВидиа SDK под CUDA для 8 серии под С++ в наличии.
Но полгодика минимум все-таки придется 3Д поизучать. Хотя, Ньютону и одного яблока по башке хватило, все от человека зависит.

Ну, до архиватора мне еще как до Китая раком. Мне бы хоть простелькую прогу написать типа сложения 2 чисел...
Добавлено спустя 6 минут, 2 секунды
З.Ы. из этой статьи http://www.3dnews.ru/video/radeon_hd2900xt/index4.htm я понял что на видюхе можно вообще любые расчеты выполнять, а не только над векторами. Но вот как писать это все?


 

Advanced member
Статус: Не в сети
Регистрация: 16.11.2006
Откуда: Всегда!
Afx
Скачиваешь DX SDK и читаешь папирус - там все в теории подробно написано, и туториалы степ бай степ. Для начала забудь про неграфические расчеты, научись выводить графические примитивы и делать их трансформацию с помощью вершинного шейдера, разбершься с командами и форматами данных HLSL, ничего сверхсложного, просто нужно самому все прощупать и потренироваться.
Изучать шейдеры можно и без написания вызывающей основной программы - RenderMonkey от ATI и FX Composer от NVidia позволяют работать напрямую с шейдерами, правда у них нацеленность на графику прежде всего, но код шейдера будет доступен и можно все изучать и модифицировать.
Но для неграфических расчетов важно не само знание шейдеров, ведь по большому счету, в плане математики, там то же самое (имеется в виду сами математические операции), а правильно организовать ввод - вывод информации для использования ее процессором и разделение процессорного времени ГПУ (если у тебя не специально выделенная под твою задачу видеокарта, но и при выделенной не особо легче).
У тебя ведь 8800, поэтому псевдоработу через карты смещений в DX9 можно не заморачиваться, научись после работы шейдера нужную инфу гнать в память, то есть для тебя останется продумать форматы входных и выходных данных, но к тому времени ты уже сам все поймешь. Не случайно ведь SDK пишутся.


 

Member
Статус: Не в сети
Регистрация: 01.12.2006
zauropod, ладно, попытаюсь разобраться.

Цитата:
если у тебя не специально выделенная под твою задачу видеокарта

Ну, как минимум на первых порах буду писать чисто под свою видюху, а там видно будет.


 

Advanced member
Статус: Не в сети
Регистрация: 16.11.2006
Откуда: Всегда!
Afx писал(а):
Мне бы хоть простелькую прогу написать типа сложения 2 чисел


Да, кстати, о двух числах. Надо вообще понимать, что архитектура современных видеокарт оптимизирована под ПОТОКОВЫЕ вычисления. Вычислять на ней сложение двух чисел никакой выгоды не несет, кроме вреда. Нужна хорошая распараллеливаемость вычислительной задачи и разработка специальных алгоритмов плюс организация работы в мультипроцессорном мультитрединге со всеми вытекающими сложностями обмена и синхронизации. Это вообщем-то и есть камень преткновения, а наработки пока еще совсем молодые.


 

Member
Статус: Не в сети
Регистрация: 01.12.2006
Да я понимаю, что изврат :). Но начинать то с чего то надо. Основной принцип понять. 2 числа это я условно сказал, можно например че-нибудь типа сложения 2-х массивов например.


 

Member
Статус: Не в сети
Регистрация: 01.12.2006
Скачал только что NVIDIA CUDA Programming Guide 0.8.2. Сижу, фтыкаю.


 

Member
Статус: Не в сети
Регистрация: 14.03.2004
Откуда: Москва
Кстати, а что сказано о точности вычеслений и вероятности ошибки (точнее меня интересуеть вероятность возникновения ошибки в зависимости от величины самой ошибки)

_________________
ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо


 

Member
Статус: Не в сети
Регистрация: 01.12.2006
Про точность вычислений сказано следущее:

FLOATING POINT STANDART
The Geforce 8800 Series and Quadro FX 5600/4600 follow the IEEE-754 standart for single precision binary floating-point arithmetic.

Т.е. стандартный формат single.
Так же сказано, что не поддерживаются разне типы округлений (как в 87х сопроцессорах), а только к ближайшему и к нулю (к + и - бесконечности не поддерживается). Еще пишут что нет механизма обрабатывать исключения при выполнении операций с плавающей точкой.


 

Advanced member
Статус: Не в сети
Регистрация: 16.11.2006
Откуда: Всегда!
nickyoz
Ну вероятность ты, как математик, и сам посчитаешь. А про ошибки - все по 754 стандарту, add и mul 0.5 ULP, для функций типично 0-4, до 16 при pow. Но про функции оговорено - интенсивное тестирование на момент публикации не проводилось, так что возможны варианты. Для случаев, не определенны в 754, в ряде трактовок представления результата имеются отличия по математике, принятой в x86.
Добавлено спустя 4 минуты, 41 секунду
Afx писал(а):
FLOATING POINT STANDART
The Geforce 8800 Series and Quadro FX 5600/4600 follow the IEEE-754 standart

Ты где это такую цитату выхватил? По английски пишется STANDARD, только русскоговорящие коверкают D на T. Неужели это у НВидии так написано?


 

Member
Статус: Не в сети
Регистрация: 14.03.2004
Откуда: Москва
Хм. Ну все это понятно. Если процессор работает правильно, то точность ну более или мнее по стандартку
А откуда следует что он так уж праивльно работает. Известно ведь, что отобраения а экран высокая точность не особо и нужна --- значит мы может допустить большую вероятность ошибки, и на этом значительно упростить расчетную схему, а так увеличить скорость

Была бы хоть одна у меня карточка с шейдерами --- проверил бы... А то доступ есть только к процессорам

_________________
ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо


 

Member
Статус: Не в сети
Регистрация: 01.12.2006
zauropod

Цитата:
Ты где это такую цитату выхватил? По английски пишется STANDARD, только русскоговорящие коверкают D на T. Неужели это у НВидии так написано?

Это я не копировал, а ручками набивал, вот и ошибся. (Ступил: в некоторых ПДФ не выделяется текст, мне показалось, что и в этой так же. Но оказалось можно.)
Вот вся цитата:

Floating-Point Standard
The GeForce 8800 Series and Quadro FX 5600/4600 follow the IEEE-754 standard for single-precision binary floating-point arithmetic with the following deviations:
�� Addition and multiplication are often combined into a single multiply-add instruction (FMAD);
�� Division is implemented via the reciprocal in a non-standard-compliant way;
�� Square root is implemented via the reciprocal square root in a non-standard-compliant way;
�� For addition and multiplication, only round-to-nearest-even and round-towards-zero are supported via static rounding modes; directed rounding towards +/- infinity is not supported;
�� There is no dynamically configurable rounding mode;
�� Denormalized numbers are not supported; floating-point arithmetic and comparison instructions convert denormalized operands to zero prior to the floating-point operation;
�� Underflowed results are flushed to zero;
�� There is no mechanism for detecting that a floating-point exception has occurred and floating-point exceptions are always masked, but when an exception occurs the masked response is standard compliant;
�� Signaling NaNs are not supported.
�� The result of an operation involving one or more input NaNs is not one of the input NaNs, but a canonical NaN of bit pattern 0x7fffffff. Note that in accordance to the IEEE-754R standard, if one of the input parameters to min() or max() is NaN, but not the other, the result is the non-NaN parameter.
The conversion of a floating-point value to an integer value in the case where the floating-point value falls outside the range of the integer format is left undefined by IEEE-754. For the GeForce 8800 Series and Quadro FX 5600/4600, the behavior is to clamp to the end of the supported range. This is unlike the x86 architecture behaves


 

Advanced member
Статус: Не в сети
Регистрация: 16.11.2006
Откуда: Всегда!
nickyoz писал(а):
Была бы хоть одна у меня карточка с шейдерами

да, немилитаризованная наука всегда была на остаточном фмнансировании... :) . Копи на 8300GS хотя бы, сейчас уже Нвидия опробует мобильные чипсеты, версия Куды 1.0 будет поддерживать всю 8-ю серию. Может, договоряться они и с МС, чтобы те убрали 5-секундный watchdog из ОС, тоже проблема. Кстати, сами Нвидиевцы работают по Куде на Asus P5N-E SLI с тремя установленными 8800GTX. А вообще, рекомендуется для некластерных расчетов использовать для вычислений 8800, не подключенную к монитору.


 

Member
Статус: Не в сети
Регистрация: 14.03.2004
Откуда: Москва
zauropod А мне она просто не нужна :)
Да и ставить в ноут её сложно.... И все что касается M$ меня мало интересует
А науку я уже давно бросил

_________________
ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо


 

Advanced member
Статус: Не в сети
Регистрация: 16.11.2006
Откуда: Всегда!
nickyoz писал(а):
И все что касается M$ меня мало интересует

Сuda - мультиплатформенная, так что идеология ни при чем.


 

Кстати, еще DPVM забыли упомянуть. Она-таки карточки менее современные требует.
Еще я бы посоветовал достать какую-нибудь книжку по сабжу типа Борескова (хотя у него примеры не очень удобные) - там разбирается, как обрабатывать изображения на GPU - а это фактически GP GPU.
Насчет любых расчетов на видюхе - это очень сильно сказано: ограничений довольно много, в частности, процессы должны быть независимы и ветвлений (даже на 8ой нвидии) должно быть как можно меньше.


 

Member
Статус: Не в сети
Регистрация: 01.12.2006
Aekold
Цитата:
Еще я бы посоветовал достать какую-нибудь книжку по сабжу типа Борескова

В инете есть? Или хотя бы полное название, что бы искать


 

Разработка и отладка шейдеров.
Еще на русском вышла книжка Рэнди Роста по GLSL, вроде там по GPGPU тоже что-то было.


 

Advanced member
Статус: Не в сети
Регистрация: 16.11.2006
Откуда: Всегда!
Aekold писал(а):
Кстати, еще DPVM забыли упомянуть. Она-таки карточки менее современные требует

О мертвых - или хорошо, или ничего. Атишная продукция опять запоздала. Упомянули на Сисграфе 2006, а в на том же Сисграфе 2007 - тишина (Кудой подавились, наверное - 2900 у них тогда еще не вышла). У карт DX9 задействуются только пиксельные процессоры. Ни доступного СДК, ни открытого форума, ни демок, только жалкое упоминание на официальном сайте.
Вот о продукции французской компании GPU-TECH стоило упомянуть, только вот после анонса к ним на сайт непробиться.
Aekold писал(а):
Насчет любых расчетов на видюхе - это очень сильно сказано: ограничений довольно много

А кто про это говорил? Но, с другой стороны, принципиально - возможны любые, эффективно - конечно же, нет.


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 26 • Страница 1 из 21  2  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan