Компьютерное железо
Что именно нужно чтобы использовать технологию CUDA?
Какое именно железо нужно или программы чтобы использовать технологию CUDA.Я читал на разных сайтах и мне в принципе, понятно что нужна только видеокарта от NVIDIA среднего уровня. Но также существует материнская плата P6T7 WS SuperComputer и там указано что есть поддержка технологии CUDA и на ней стоит два чипа Nvidia NF200. Нужно ли чтобы в материнской плате обязательно стояла галочка "поддержка CUDA" или же нужно всего лишь видеокарта от NViDIA да драйвера специальные чтобы использовать эту CUDA?
не читая суть вопроса отвечаю, купить видюху поддерживающую технологию CUDA
она сама используется там где надо, проще говоря всякие технологии и фигня прочая дают больше качества в игре
она сама используется там где надо, проще говоря всякие технологии и фигня прочая дают больше качества в игре
Нужен соответствующий софт.
кАкая материнка - совершенно пофиг.
Драйвера свежие - вот единственное условие, CUDA не так давно ими поддерживается (помимо аппаратной части) .
кАкая материнка - совершенно пофиг.
Драйвера свежие - вот единственное условие, CUDA не так давно ими поддерживается (помимо аппаратной части) .
http://www.xakep.ru/post/47507/
Для полноценной работы с CUDA нужно:
1. Знать строение шейдерных ядер GPU, так как суть программирования заключается в равномерном распределении нагрузки между ними.
2. Уметь программировать в среде C, с учетом некоторых аспектов.
Разработчики NVIDIA раскрыли «внутренности» видеокарты несколько иначе, чем мы привыкли видеть. Так что волей-неволей придется изучать все тонкости архитектуры. Разберем строение «камня» G80 легендарной GeForce 8800 GTX.
Шейдерное ядро состоит из восьми TPC (Texture Processor Cluster) – кластеров текстурных процессоров (так, у GeForce GTX 280 – 15 ядер, у 8800 GTS их шесть, у 8600 – четыре и т. д.) . Те, в свою очередь, состоят из двух потоковых мультипроцессоров (streaming multiprocessor – далее SM). SM (их всего 16) состоит из front end (решает задачи чтения и декодирования инструкций) и back end (конечный вывод инструкций) конвейеров, а также восьми scalar SP (shader processor) и двумя SFU (суперфункциональные блоки) . За каждый такт (единицу времени) front end выбирает варп и обрабатывает его. Чтобы все потоки варпа (напомню, их 32 штуки) обработались, требуется 32/8 = 4 такта в конце конвейера.
Каждый мультипроцессор обладает так называемой общей памятью (shared memory). Ее размер составляет 16 килобайт и предоставляет программисту полную свободу действий. Распределяй как хочешь :). Shared memory обеспечивает связь потоков в одном блоке и не предназначена для работы с пиксельными шейдерами.
Также SM могут обращаться к GDDR. Для этого им «пришили» по 8 килобайт кэш-памяти, хранящих все самое главное для работы (например, вычислительные константы) .
Мультипроцессор имеет 8192 регистра. Число активных блоков не может быть больше восьми, а число варпов – не больше 768/32 = 24. Из этого видно, что G80 может обработать максимум 32*16*24 = 12288 потоков за единицу времени. Нельзя не учитывать эти цифры при оптимизации программы в дальнейшем (на одной чашу весов – размер блока, на другой – количество потоков) . Баланс параметров может сыграть важную роль в дальнейшем, поэтому NVIDIA рекомендует использовать блоки со 128 или 256 потоками. Блок из 512 потоков неэффективен, так как обладает повышенными задержками. Учитывая все тонкости строения GPU видеокарты плюс неплохие навыки в программировании, можно создать весьма производительное средство для параллельных вычислений. Кстати, о программировании.. .
Программирование
Для «творчества» вместе с CUDA требуется видеокарта GeForce не ниже восьмой серии. С официального сайта нужно скачать три программных пакета: драйвер с поддержкой CUDA (для каждой ОС – свой) , непосредственно пакет CUDA SDK (вторая бета-версия) и дополнительные библиотеки (CUDA toolkit). Технология поддерживает операционные системы Windows (XP и Vista), Linux и Mac OS X. Для изучения я выбрал Vista Ultimate Edition x64 (забегая вперед, скажу, что система вела себя просто превосходно) . В момент написания этих строк актуальным для работы был драйвер ForceWare 177.35. В качестве набора инструментов использовался программный пакет Borland C++ 6 Builder (хотя подойдет любая среда, работающая с языком C).
Человеку, знающему язык, будет легко освоиться в новой среде. Требуется лишь запомнить основные параметры. Ключевое слово _global_ (ставится перед функцией) показывает, что функция относится к kernel (ядру) . Ее будет вызывать центральный процессор, а вся работа произойдет на GPU. Вызов _global_ требует более конкретных деталей, а именно размер сетки, размер блока и какое ядро будет применено. Например, строчка _global_ void saxpy_parallel<<<x,y>>>, где X – размер сетки, а Y – размер блока, задает эти параметры.
Символ _device_ означает, что функцию вызовет графическое ядро, оно же выполнит все инструкции. Эта функция располагается в памяти мультипроцессора, следовательно, получить ее адрес невозможно.
Для полноценной работы с CUDA нужно:
1. Знать строение шейдерных ядер GPU, так как суть программирования заключается в равномерном распределении нагрузки между ними.
2. Уметь программировать в среде C, с учетом некоторых аспектов.
Разработчики NVIDIA раскрыли «внутренности» видеокарты несколько иначе, чем мы привыкли видеть. Так что волей-неволей придется изучать все тонкости архитектуры. Разберем строение «камня» G80 легендарной GeForce 8800 GTX.
Шейдерное ядро состоит из восьми TPC (Texture Processor Cluster) – кластеров текстурных процессоров (так, у GeForce GTX 280 – 15 ядер, у 8800 GTS их шесть, у 8600 – четыре и т. д.) . Те, в свою очередь, состоят из двух потоковых мультипроцессоров (streaming multiprocessor – далее SM). SM (их всего 16) состоит из front end (решает задачи чтения и декодирования инструкций) и back end (конечный вывод инструкций) конвейеров, а также восьми scalar SP (shader processor) и двумя SFU (суперфункциональные блоки) . За каждый такт (единицу времени) front end выбирает варп и обрабатывает его. Чтобы все потоки варпа (напомню, их 32 штуки) обработались, требуется 32/8 = 4 такта в конце конвейера.
Каждый мультипроцессор обладает так называемой общей памятью (shared memory). Ее размер составляет 16 килобайт и предоставляет программисту полную свободу действий. Распределяй как хочешь :). Shared memory обеспечивает связь потоков в одном блоке и не предназначена для работы с пиксельными шейдерами.
Также SM могут обращаться к GDDR. Для этого им «пришили» по 8 килобайт кэш-памяти, хранящих все самое главное для работы (например, вычислительные константы) .
Мультипроцессор имеет 8192 регистра. Число активных блоков не может быть больше восьми, а число варпов – не больше 768/32 = 24. Из этого видно, что G80 может обработать максимум 32*16*24 = 12288 потоков за единицу времени. Нельзя не учитывать эти цифры при оптимизации программы в дальнейшем (на одной чашу весов – размер блока, на другой – количество потоков) . Баланс параметров может сыграть важную роль в дальнейшем, поэтому NVIDIA рекомендует использовать блоки со 128 или 256 потоками. Блок из 512 потоков неэффективен, так как обладает повышенными задержками. Учитывая все тонкости строения GPU видеокарты плюс неплохие навыки в программировании, можно создать весьма производительное средство для параллельных вычислений. Кстати, о программировании.. .
Программирование
Для «творчества» вместе с CUDA требуется видеокарта GeForce не ниже восьмой серии. С официального сайта нужно скачать три программных пакета: драйвер с поддержкой CUDA (для каждой ОС – свой) , непосредственно пакет CUDA SDK (вторая бета-версия) и дополнительные библиотеки (CUDA toolkit). Технология поддерживает операционные системы Windows (XP и Vista), Linux и Mac OS X. Для изучения я выбрал Vista Ultimate Edition x64 (забегая вперед, скажу, что система вела себя просто превосходно) . В момент написания этих строк актуальным для работы был драйвер ForceWare 177.35. В качестве набора инструментов использовался программный пакет Borland C++ 6 Builder (хотя подойдет любая среда, работающая с языком C).
Человеку, знающему язык, будет легко освоиться в новой среде. Требуется лишь запомнить основные параметры. Ключевое слово _global_ (ставится перед функцией) показывает, что функция относится к kernel (ядру) . Ее будет вызывать центральный процессор, а вся работа произойдет на GPU. Вызов _global_ требует более конкретных деталей, а именно размер сетки, размер блока и какое ядро будет применено. Например, строчка _global_ void saxpy_parallel<<<x,y>>>, где X – размер сетки, а Y – размер блока, задает эти параметры.
Символ _device_ означает, что функцию вызовет графическое ядро, оно же выполнит все инструкции. Эта функция располагается в памяти мультипроцессора, следовательно, получить ее адрес невозможно.
Похожие вопросы
- уже есть вирусы использующие ресурсы CUDA?))ку!
- Для чего это нужно?-Intel® Virtualization Технология
- Нужно ли использовать термопасту?
- Скажите, как разбить жесткий диск на два тома при помощи diskmgmt.msc? Что именно нужно сделать?
- Какие дрова нужны для интернета? Сменил Window 8 на 7-ку он не видит сеть. Как узнать какие именно нужно скачать дрова?
- при покупке ноутбуков на что именно нужно обратить внимание?
- Как выбрать ноутбук? нужен для игр, работой с графикой ( фото, видео) . на что именно нужно обращать внимание?
- Сборка компьютера С чего именно нужно начинать для сборки своего компьютера? Я новичок.
- Делаем интернет на даче, используя DSL технологию. Пояснение внутри. Заходим, обсуждаем, даем советы. Буду рад любым пред
- на ноутбуке видеокарта GеForce G102m CUDA, 512mb.. Так вот,что означает "cuda"?!? Это хорошо? Как вообще карта?