Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

"Видео вычисления"

4.8K
29 марта 2006 года
Jump
128 / / 09.11.2005
Просьба сразу не смеяться, т.к. идея явно неординарная. Когда мне ее подкинули я честно гря немного не удержался, но потом подумал, и понял что в этом таки что-то есть :)
В общем не вдаваясь в подробности, перейду сразу к сути:
Процессоры на видеокартах могут выполнять математические/логические операции?
Если да, то не направите-ли по нужному руслу?..
Т.е. интересует - как повесить некий код на выполнение на процессоре видюхи, и в принципе вообще не обязательно видюхи :) мало-ли процессоров на компе прохлаждается? ;)
И пожалуйста, не пинайте :D
1
29 марта 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by Jump
Просьба сразу не смеяться, т.к. идея явно неординарная. Когда мне ее подкинули я честно гря немного не удержался, но потом подумал, и понял что в этом таки что-то есть :)
В общем не вдаваясь в подробности, перейду сразу к сути:
Процессоры на видеокартах могут выполнять математические/логические операции?
Если да, то не направите-ли по нужному руслу?..
Т.е. интересует - как повесить некий код на выполнение на процессоре видюхи, и в принципе вообще не обязательно видюхи :) мало-ли процессоров на компе прохлаждается? ;)
И пожалуйста, не пинайте :D


99.999999 операций выполняющихся на видеопроцессоре это именно "математические/логические". Заюзать их можно - правда не понятно - что именно ты от этого выиграешь?

7.9K
29 марта 2006 года
uki_
122 / / 26.01.2006
смотри сайт http://gpgpu.org/
4.8K
29 марта 2006 года
Jump
128 / / 09.11.2005
Как это что выиграю? %)
Дополнительный вычислительный ресурс...

Станичку пока изучаем.... энглиш... А по руцки и еще с примерами :D не у кого не найдется?..
17K
30 марта 2006 года
Dordjan
3 / / 30.03.2006
Идея в принципе такова:
есть проект распределенных вычислений: http://distributed.net
Проект уже длится несколько лет. Смысл в том, чтобы методом перебора расшифровать кодовое слово.

Есть открытый код: http://distributed.net/source/
на асемблере.

Так вот сама идея - проц и так перебирает блоки в фоновом режиме с самым низким приоритетом. Т.е. этот обсчет толком и не замечаешь...

Тут на фоне новостей о физ. процессорах, и ответе на эту инициативу nVidia и ATI, которые обладают мощными блоками вычисления, возникла идея:
- возможно ли задействовать мощь этих видео карт для расчета вычислений.

Что думаете? Есть ли возможность реализации?

Если нужна какая-то ещё дополнительная информация - с радостью предоставлю.
Вся надежда на программеров!
534
30 марта 2006 года
HarryAxe
448 / / 19.01.2006
Вообще, видеокарты отлично работают с большими пачками дробных чисел (можно обрабатывать по нескольку матриц 4х4 типа float за один такт, или, скажем, обрабатывать несколько серий многобайтовых чисел). Например, 3DS Max в части своих расчётов сцены использует вычислительный ресурс видеокарты. В комплекте с DirectX SDK идёт компилятор векторных/пиксельных шейдеров (почему бы не использовать шейдеры для подобных вычислений? Можно будет использовать ещё несколько полезных функций) и ассемблер соответстующий. Там же естественно, хэлп и пара сэмплов. Ну, и в Cg Toolkit можно глянуть, там есть отличный ассемблер карт nVidia. Да и вообще, Cg - высокоуровневый язык программирования видеокарт, так что хотя бы ознакомится с его возможностями здесь явно не помешает
14K
30 марта 2006 года
halflifer
28 / / 14.03.2006
Цитата:
Originally posted by HarryAxe
Вообще, видеокарты отлично работают с большими пачками дробных чисел (можно обрабатывать по нескольку матриц 4х4 типа float за один такт, или, скажем, обрабатывать несколько серий многобайтовых чисел). Например, 3DS Max в части своих расчётов сцены использует вычислительный ресурс видеокарты. В комплекте с DirectX SDK идёт компилятор векторных/пиксельных шейдеров (почему бы не использовать шейдеры для подобных вычислений? Можно будет использовать ещё несколько полезных функций) и ассемблер соответстующий. Там же естественно, хэлп и пара сэмплов. Ну, и в Cg Toolkit можно глянуть, там есть отличный ассемблер карт nVidia. Да и вообще, Cg - высокоуровневый язык программирования видеокарт, так что хотя бы ознакомится с его возможностями здесь явно не помешает



Использовать видяхи, это конечно интересно, там есть векторные алу,...., но по-моему это гем..., как извлекать-то результаты?

534
30 марта 2006 года
HarryAxe
448 / / 19.01.2006
Цитата:
Originally posted by halflifer
Использовать видяхи, это конечно интересно, там есть векторные алу,...., но по-моему это гем..., как извлекать-то результаты?

Работают такие вычисления с памятью видеокарты, а DirectX даёт возможность работать с ней как с обычной системной памятью. Поэтому результаты извлекаются легко и просто.

14K
30 марта 2006 года
halflifer
28 / / 14.03.2006
Цитата:
Originally posted by HarryAxe
Работают такие вычисления с памятью видеокарты, а DirectX даёт возможность работать с ней как с обычной системной памятью. Поэтому результаты извлекаются легко и просто.


нужно будет с дирексом разобраться)

534
30 марта 2006 года
HarryAxe
448 / / 19.01.2006
Цитата:
Originally posted by halflifer
нужно будет с дирексом разобраться)

Разбираться нужно будет с программированием под видеокарту, а DirectX - лишь набор промежуточных интерфейсов. На организацию работы с видеопамятью необходимо будет потратить лишь пару часов

17K
30 марта 2006 года
Dordjan
3 / / 30.03.2006
Можно попробовать разбитить задачу на две части:
- первое перегнать код с ASMa на С++, отбросив шелуху ввиде мультипрограммности/мультипроцессорности, оставив заточку под AMD 64, например под WIN32
- второе - перегнать код с С++ под код шейдеров под SM 3.0

Так получится?
534
31 марта 2006 года
HarryAxe
448 / / 19.01.2006
Цитата:
Originally posted by Dordjan
Можно попробовать разбитить задачу на две части:
- первое перегнать код с ASMa на С++, отбросив шелуху ввиде мультипрограммности/мультипроцессорности, оставив заточку под AMD 64, например под WIN32
- второе - перегнать код с С++ под код шейдеров под SM 3.0

Так получится?

Да особо перегонять ничего не требуется, HLSL (high-level shader language) идущий с DirectX SDK - это C-подобный язык, достаточно переопределить пару операторов с помощью препроцессора. Вот пример кода на HLSL:

Код:
VS_OUTPUT Ripple( in float2 vPosition : POSITION )
{
    VS_OUTPUT Output;
   
    float fSin, fCos;  
    float x = length( vPosition ) * sin( fTime ) * 15.0f;
   
    sincos( x, fSin, fCos );

    Output.Position = mul( float4( vPosition.x, fSin * 0.1f, vPosition.y, 1.0f ), mWorldViewProj );
   
    Output.Diffuse = 0.5f - 0.5f * fCos;
   
    return Output;
}

Код на Cg выглядет очень похожим образом. Так что можно целую библиотеку под C написать...
17K
31 марта 2006 года
Dordjan
3 / / 30.03.2006
Гуд!
попробую встряхнуть стариной и забацать это дело. Если чего-то не получится -чиркану-посоветуюсь.
Спасиб!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог