С Новым годом! Форум программистов, компьютерный форум, киберфорум
GPGPU
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/41: Рейтинг темы: голосов - 41, средняя оценка - 4.51
71 / 59 / 14
Регистрация: 20.12.2013
Сообщений: 700
1

GPU и CPU

30.01.2015, 22:26. Показов 7603. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Помогите понять - стоит ли вообще заниматься распараллеливанием на CPU, или теперь имеет смысл только GPU (судя по прочитанному из инета, использование для вычислений GPU на порядки повышает производительность)? Например, для ооочень больших матрично-векторных произведений.

И правильно ли я понимаю принципы работы со следующими сущностями:
OpenMP - в свой код c++ включаю нужные инструкции и все (здесь вроде понятно),
OpenCL - написано, что фреймворк - т.е. я не могу тупо вставить в VC или билдеровский код инструкции, а должен переписать всю программу в новой среде?
CUDA - "Технология NVIDIA CUDA™ – это единственная среда разработки на языке программирования C" - т.е. тоже фреймворк, и тоже переписывать программу?

Цель - в написанную в с++ программу внести изменения, чтобы она стала работать с GPU, но без тотального переписывания. Извиняюсь за глупые вопросы, но с современными технологиями знаком плохо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.01.2015, 22:26
Ответы с готовыми решениями:

CPU и GPU
Всем привет! Кто знает в чем может быть проблема. После восстановления Винды10 к заводским...

Охлаждение CPU и GPU
Всем доброго времени суток! Суть проблемы - ноут Packard Bell TV11HC. CPU - i7 2450M, GPU - GTX...

Загрузка CPU и GPU
Здравствуйте. После покупки новой видеокарты возник вопрос. Это хорошо, что GPU грузиться на 95-99,...

Криптография GP (GPU/CPU/APU)
Здравствуйте, не знаю в ту ли тему пишу, но все же. Провел тестирование на производительность в...

15
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
31.01.2015, 09:43 2
Цитата Сообщение от AndrSlav Посмотреть сообщение
Помогите понять - стоит ли вообще заниматься распараллеливанием на CPU, или теперь имеет смысл только GPU
CPU и GPU - два разных процессора. Можно добиться максимальной производительности, если "распараллелить" задачу и на CPU и на GPU одновременно, правда далеко не любая задача подойдет для этого.
Всё зависит от задач. Например некоторые из них неэффективно выполнять на GPU.

Цитата Сообщение от AndrSlav Посмотреть сообщение
OpenMP - в свой код c++ включаю нужные инструкции и все
Можно и так сказать, только это не так уж и просто.

Цитата Сообщение от AndrSlav Посмотреть сообщение
OpenCL - написано, что фреймворк - т.е. я не могу тупо вставить в VC или билдеровский код инструкции, а должен переписать всю программу в новой среде?
Всю программу переписывать не надо, а только то, что ты хочешь чтобы выполнялось на GPU.

Цитата Сообщение от AndrSlav Посмотреть сообщение
CUDA
Ничего про неё не знаю.
1
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
31.01.2015, 10:09 3
Есть ещё SSE, в самом процессоре.
1
5232 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
31.01.2015, 10:10 4
Просто для размышления - сотрудники нашей компании периодически выступают на всяких семинарах с докладами. У нас один open source продукт на базе которого мы представляем всякие штуки. На семинаре по оптимизациям на GPU мы адаптировали один из наших алгоритмов из этого проекта на GPU и представили эту оптимизацию. На семинаре по Intel мы адаптировали его же под CPU и выступили там Короче можно и там и там. На GPU правда можно лучше адаптировать некоторые специфичные алгоритмы, которые на CPU проседают.
1
71 / 59 / 14
Регистрация: 20.12.2013
Сообщений: 700
31.01.2015, 10:57  [ТС] 5
Kastaneda, судя по статье из инета http://evatutin.livejournal.com/63893.html , gpu позволяет увеличить скорость умножения матриц до 2000 раз, по сравнению с одним CPU. Т.е. по скорости в этом случае обычный компьютер с вычислениями на GPU сравним с рабочей станцией с 2000 CPU?
0
5232 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
31.01.2015, 11:05 6
Цитата Сообщение от AndrSlav Посмотреть сообщение
Т.е. по скорости в этом случае обычный компьютер с вычислениями на GPU сравним с рабочей станцией с 2000 CPU?
Подобные утверждения не верны. Если что-то мощнее чего-то в N раз, то это не значит, что N чего-то сопоставимо с одним чем-то (вроде понятно).

У меня нет глубоких знаний в этой области, поэтому напишу то, что знаю. Матрицы на GPU действительно быстро считаются, т.к. внутри GPU есть матрица, которая может просчитаться за один такт (CPU тут бы понадобилось ооочень много тактов). За счет этого собственно и такая разница в скорости.

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

Короче использовать GPU или CPU зависит от ситуации. Если алгоритм хорошо ляжет на CPU, то возиться с GPU нет смысла.
2
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
31.01.2015, 11:15 7
AndrSlav, GPU - специализированный процессор, PU в обеих аббревиатурах означает "процессор", G - графический, C - центральный. Графический назван так именно потому, что предназначен для графики. Если задача допускает эффективное решение на GPU и такое решение не мешает графике, пожалуйста, юзайте GPU. Если нет, то CPU. Если задача допускает распараллеливание и ресурсоёмка, то нельзя допускать простаивание CPU во время её решения.
1
71 / 59 / 14
Регистрация: 20.12.2013
Сообщений: 700
31.01.2015, 11:35  [ТС] 8
taras atavin, т.е. операции типа умножения матриц/векторов или сортировка больших массивов данных, где происходит сложение/умножение/перестановки чисел, лучше адаптировать к вычислениям на GPU, а если есть, например, цикл по массиву объектов класса, на каждой итерации которого происходит вызов метода с проведением сложных расчетов с использованием сортировок/связных списков/вызовов дополнительных методов, то в этом случае прироста в производительности на GPU не получить?
0
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
31.01.2015, 12:34 9
Ну я подробно не разбирался, есть ли с этим проблемы у GPU. Но есть ещё один фактор: не мешать графике. Это специализированный контроллер, предназначенный только для графики. Хотите использовать не по назначению - потрудитесь прогнать тест для проверки того, будет ли это мешать использованию GPU по основному назначению. Если не будет, значит решение хорошее, если мешает, то не годное.
0
71 / 59 / 14
Регистрация: 20.12.2013
Сообщений: 700
31.01.2015, 12:37  [ТС] 10
taras atavin, да мне только для расчетов, графика вообще не нужна.
0
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
31.01.2015, 12:39 11
А результат куда класть? В файл?
0
71 / 59 / 14
Регистрация: 20.12.2013
Сообщений: 700
31.01.2015, 12:50  [ТС] 12
taras atavin, да, вывожу в файл. Сейчас пока предварительно кое-какие расчеты идут очень долго, пару дней. Матричные операции занимают не бОльшую часть времени, но значительную, да и надо с чего-то более простого начать - буду пытаться разобраться с вычислениями на GPU на примере матричных операций, а потом буду смотреть. Сейчас вывожу в файл и на графики для контроля и поиска ошибок, но если время работы значительно сократится, то особой необходимости в графиках не будет: одно дело ждать пару дней и в конце увидеть фигню, и совсем другое ждать один час, к примеру.
p.s. Можно еще пооптимизировать вычисления для CPU, но если вычисления на GPU дают значительно больший выигрыш по времени исполнения...
0
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
31.01.2015, 12:56 13
Цитата Сообщение от AndrSlav Посмотреть сообщение
taras atavin, да, вывожу в файл.
И дисплей при этом полностью выключен?
0
71 / 59 / 14
Регистрация: 20.12.2013
Сообщений: 700
31.01.2015, 13:00  [ТС] 14
Цитата Сообщение от taras atavin Посмотреть сообщение
И дисплей при этом полностью выключен?
Сейчас нет, но если будет надо, то могу поставить задачу на отдельный компьютер и не загружать его больше ничем.
0
Evg
Эксперт CАвтор FAQ
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
31.01.2015, 13:48 15
Цитата Сообщение от AndrSlav Посмотреть сообщение
CUDA - "Технология NVIDIA CUDA™ – это единственная среда разработки на языке программирования C" - т.е. тоже фреймворк, и тоже переписывать программу?
Это не фреймворк. Тулкит для CUDA содержит в себе нано-компилятор, который на вход принимает программу на некотором птичьем языке, очень похожем на Си, в котором в одном файле перемешаны функции, выполняемые на CPU и на GPU. Далее этот нанокомпилятор парсит этот текст, превращая его в несколько исходников, которые в чистом виде компилируются либо только для CPU, либо только для GPU. В коды для CPU добавляются инструкции для копирования данных из CPU на GPU. И далее эти исходники по раздельности компилируются компилятором для CPU и компилятором для GPU. В тулките нету собственного компилятора для CPU, а потому в его качестве используется сторонний компилятор

Если хочешь переписать программу под GPU, то модули, требующие распараллеливания, однозначно надо переписать. Причём в отличие от OpenMP тут не получится по быстрому переключаться между последовательным и паралллельным режимами. При наличии навыков работы с препроцессором, хорошим пониманием того, как это всё работает и некоторого задротства можно путём приложения дополнительных усилий написать программу так, чтобы можно было быстро переключать программу из параллельного режима в последовательный (нужно для отладки)

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

По поводу первых шагов в OpenMP: https://www.cyberforum.ru/blog... g2965.html
По поводу CUDA: Сандерс Дж., Кэндрот Э. - Технология CUDA в примерах (2011)

Добавлено через 3 минуты
Рассчёты на GPU никак не мешают работе видеокарты как средству вывода информации на экран. В видеокарте есть отдельно процессор, отдельно устройство вывода на экран. Другое дело, что всякие windows aero могут отжирать часть процессоров, но это означает всего лишь, что эти процессоры не будут использоваться при работе твоей программы
2
Заблокирован
21.04.2019, 10:27 16
Здравствуйте,

Правильно ли я понимаю, что тот же OpenCL позволяет распаралеливать задачи и на CPU ? Если да, то чем принципиально это отличается от использования многопоточности в с++ ?
0
21.04.2019, 10:27
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.04.2019, 10:27
Помогаю со студенческими работами здесь

Неполная загрузка CPU и GPU
Добрый день ,в некоторых играх наблюдается неполная загрузка CPU и GPU ,при низком фпс (30-40 FPS)...

Скрипт для мониторинга cpu и gpu
Здравствуйте решил поставить на мониторинг температуру процессора и видеокарты в заббикс для...

Кто чем занимается? GPU и CPU
Собственно запутался кто чем занимается. Дальше постараюсь написать свою точку зрения, хотя она...

Охлаждение CPU и GPU элементом Пельтье
Доброго времени суток! Заинтересовался охлаждением камня при помощи элемента Пельтье. Отличная...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­­­­­­­­­­­­­х­р­о­н­­н­­­ы­­й счётчик с управляющим сигналом зад
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru