Показать сообщение отдельно

Nvidia Cuda - Революция в вычислениях на Gpu
  #1  
Старый 26.05.2008, 18:59
Аватар для Solide Snake
Solide Snake
Moderator - Level 7
Регистрация: 28.04.2007
Сообщений: 547
Провел на форуме:
5516499

Репутация: 3702


Отправить сообщение для Solide Snake с помощью ICQ
По умолчанию Nvidia Cuda - Революция в вычислениях на Gpu

NVIDIA CUDA - Революция в вычислениях на GPU


Технология NVIDIA CUDA - это фундаментально новая архитектура вычислений на GPU, предназначенная для решения комплекса вычислительных задач потребителей, бизнеса и технической индустрии. Технология CUDA (compute unified device architecture - вычисления на унифицированной аппаратной архитектуре) предоставляет приложениям, активно работающим с данными, доступ к потрясающим процессинговым мощностям графических процессоров NVIDIA через революционную вычислительную архитектуру, связанную с новыми возможностями. Придавая значение большей производительности и упрощению разработки программного обеспечения через стандартный язык C, технология CUDA даёт возможность разработчикам создавать решения для интенсивной работы с данными в кратчайшие сроки.

Что это за технология "CUDA"?
Вычисления на GPU с технологией CUDA - это инновационное сочетание вычислительных способностей следующего поколения графических процессоров NVIDIA, доступныз через стандартный язык 'C'. Тогда как предыдущее поколение графических процессоров было основано на "потоковых шейдерных программах", программисты CUDA могут испльзовать 'C' для создания программ, вызывающих потоки также, как и на традиционных многопоточных CPU (Блин, традиционных. _Ни у кого_ из моих знакомых нет двуядерника. Да даже Пня4 с гипер-трейдингом.). Но многоядерные процессоры могут исполнять лишь несколько потоков одновременно, а графические процессоры NVIDIA с технологией CUDA обработают сразу тысячи потоков с высоким уровнем информационной нагрузки. (Блин. Вот у "них" есть thread и flow. А как я должен назвать "поток", чтобы не повториться?)
Одна из наиболее важных инноваций в технологии CUDA - возможность объединения потоков графических процессоров NVIDIA для решения одной задачи, что позволяет приложениям работать с большей эффективностью. Графические процессоры NVIDIA с технологией CUDA имеют параллельные кэши данных, которых сохраняют часто используемую информацию прямо в GPU. Хранение информации в GPU позволяет исполнять потоки, использующие общую информацию, во много раз быстрее, чем если бы она запрашивалась из системной памяти. Эта прогрессивная технология даёт возможность пользователям решать вычислительные задачи в режиме реального времени.

Какие преимущества получают приложения от CUDA?
Вычисления на GPU подходят для решения широкого спектра задач, связанных с обработкой больших объёмов информации. Например игровые приложения могут использовать графический процессор NVIDIA для физических расчётов, поднимающих производительность и эффектность на новый уровень. Также, коммерческие приложения, используемые для разработки программ или анализа больших массивов данных, ранее требовавших высокой производительности системы, получат преимущество от использования на рабочей станции или сервере с технологией CUDA. Это перелом в технологиях, позволяющий выполнять анализ и решение задач любого рода в режиме реального времени. Кроме того, научные приложения, которые требуют высокой интенсивности вычислений больше не будут занимать всё процессорное время. Вычисления с CUDA предоставляет платформу с высоким уровнем производительности вне зависимости от предполагаемого использования.

Почему используется технология CUDA?
Производительность. Графические процессоры NVIDIA предоставляют немыслимый уровень производительности для приложений, интенсивно работающих с данными. Технология CUDA предоставляет стандартное, широко доступное решение для поставки новых приложений с беспрецендентными возможностями.

Совместимость. Приложения, разработанные с использованием CUDA C-компилята совместимы с будующим поколением графических процессоров NVIDIA (лучше бы они предыдущее добавили). Разработчики, вкладывающие силы в разработку приложений для GPU, сразу получат преимущество от использования производительных графических процессоров текущего поколения и могут быть уверены, что NVIDIA в будущем будет вкладывать средства в разработку ещё более производительных решений.

Продуктивность. Разработчики, ищущие доступ к вычислительной мощи графических процессоров NVIDIA могут теперь пользоваться стандартным языком программирования 'C' для разработки приложений. CUDA предоставляет законченное решение для разработчиков, которое интегрируется в программное обеспечение для CPU и GPU, чтобы быстро получить доступ к новым возможностям и высокой оценке потребителей (возможно, они имели ввиду что-то другое. но получилось так).

Масштабируемость. Приложения, разработанные с использованием технологии CUDA масштабируются в производительности и возможностях по всей линейке графических процессоров NVIDIA, начиная от интегрированных решений и заканчивая высокопроизводительными профессиональными графическими картами, использующими множество графических процессоров. Производительность CUDA теперь фактически доступна в системах любого уровня от специальных вычислительных станций до потребительских продуктов.

Разрабатывайте с CUDA
Комплект разработки программного обеспечения CUDA (CUDA SDK) - это законченное решение для разработчиков, использующих возможности графических процессоров для решения задач общего назначения. SDK включает стандартные библиотеки FFT и BLAS (я не в курсе об этом), компилятор C для графического процессора NVIDIA и runtime-драйвер. CUDA runtime-драйвер работающий совместно с самостоятельным драйвером, решающим задачи распределения нагрузки OpenGL и MS DirectX. Технология CUDA в равной степени поддерживается операционными системами MS Windows XP (ага! виста не поддерживается) и Linux.

Возможности технологии
- Унификация программных и аппаратных решений для потоковых вычислений на графических процессорах NVIDIA с поддержкой CUDA.
- Графические процессоры с CUDA поддерживают кэш параллельных данных (Parallel Data Cache) и менеджер исполняемых потоков (Thread Execution Manager) для высокопроизводительных вычислений.
- Стандартный язык программирования C для GPU.
- Стандартные числовые библиотеки для FFT и BLAS.
- Отдельный драйвер CUDА для вычислений.
- Оптимизированный путь загрузки и выгрузки с CPU на GPU с CUDA.
- CUDA-драйвер, работающий совместно с графическим драйвером.
- Поддержка Linux и WinXP
- Масштабируемость от высокопроизводительных профессиональных графических решений до мабильных и интегрированных GPU.
- Встроенная поддержка multi-GPU для высоко"плотных" вычислений.
- Поддержка аппаратной отладки и профилер для разработки и оптимизации программ.

Материал взят со страницы (на англ. языке)

Немного больше...

Основу аппаратных средств CUDA-вычислителя образует потоковый процессор (SP, Streaming Processor), 32-битовое арифметико-логическое устройство которого и предоставляет каждому потоку вычислительные возможности.

Восемь SP, каждый со своим модулем регистровой памяти емкостью 32 KB, объединяются в потоковый мультипроцессор (SM, Streaming Multiprocessor) – вычислительную машину SIMD-архитектуры, имеющую собственные механизм выборки и декодирования команд, независимые кэши команд и данных (констант), диспетчер потоков и блок памяти емкостью 16 KB, разделяемой между всеми восемью SP. Работающий на тактовой частоте 1,35 GHz, SM способен предоставлять более чем семистам потокам вычислительную мощность порядка 20 GFLOPS. SP выполняет одну SIMD-команду за один машинный такт.

Два SM, дополненные более высокоуровневой кэш-памятью команд и данных, образуют кластер обработки текстур (TPC, Texture Processing Cluster). И, наконец, из восьми TPC формируется собственно CUDA-вычислитель, – массив потоковых процессоров (SPA, Streaming Processor Array).

Таким образом, в распоряжении CUDA-программиста имеется вычислительная система, пусть весьма сложная из-за разнообразия адресных пространств и специфических механизмов, но все же оснащенная 128 32-разрядными арифметико-логическими устройствами, способными за один такт исполнять такие команды, как умножение с накоплением (обычно обозначаются MADD, смысл этой трехоперандной операции понятен из псевдокода A=A+B*C). Потенциальная пиковая производительность такой системы – 346 GFLOPS. Это одновременно и немало, и не очень много, если учесть тот факт, что пиковая производительность четырехъядерных процессоров класса Core 2 Duo совсем немного не дотягивает до 100 GFLOPS.

Маленький пример программ использующие CUDA


Приведу пару примеров, софт возьму от одного из пользователей нашего форума, а именно Xserg, за что ему спасибо)

Mini Release nvCUDA.exe
XP необходимо установить последние драйверы ForceWare: 169.21
MD5 хеши // Заточено на популярную GF8600GT

Предварительная атака 2..5 символов (0x21..0x7f)

Командная строка:
// перебирает 0..9,a..z
nvCUDA.exe -f=mypas.txt -s=7 -e=7
-f= файл с паролями до 50 шт. типа admin:9987d22788e810116a45109f2ea88648
-s= начальное количество символов в пароле 6 - by default
-e= конечное количество символов в пароле 8 - by default

Необходимые библиотеки dll.rar (158кб.) // cudart.dll , cutil32.dll
Собранный файл + Исходник nvCUDA.rar (82кб.)

Mini Release nvCUDAsql.exe
MySql хеши

Командная строка:
nvCUDAsql.exe -f=mysqlpas.txt -s=4 -e=10 -sl=91 –bl=20

-f= файл с паролями до 50 шт. типа hash:6cb1963d2018c3ea
-s= начальное количество символов в пароле 4 - by default
-e= конечное количество символов в пароле 10 - by default
-sl= 25 , 35 , 71 , 91 наборы символов
-bl=производительность видеокарты. (20 - 128)

Собранный файл + Исходник ncCuda_mysql.rar (81кб.)

Скорость перебора одного хеша 8 000 000 000 000 п/c. на GF8600GT
 
Ответить с цитированием