71 / 59 / 14
Регистрация: 20.12.2013
Сообщений: 700
|
|
1 | |
GPU и CPU30.01.2015, 22:26. Показов 7603. Ответов 15
Метки нет (Все метки)
Здравствуйте.
Помогите понять - стоит ли вообще заниматься распараллеливанием на CPU, или теперь имеет смысл только GPU (судя по прочитанному из инета, использование для вычислений GPU на порядки повышает производительность)? Например, для ооочень больших матрично-векторных произведений. И правильно ли я понимаю принципы работы со следующими сущностями: OpenMP - в свой код c++ включаю нужные инструкции и все (здесь вроде понятно), OpenCL - написано, что фреймворк - т.е. я не могу тупо вставить в VC или билдеровский код инструкции, а должен переписать всю программу в новой среде? CUDA - "Технология NVIDIA CUDA™ – это единственная среда разработки на языке программирования C" - т.е. тоже фреймворк, и тоже переписывать программу? Цель - в написанную в с++ программу внести изменения, чтобы она стала работать с GPU, но без тотального переписывания. Извиняюсь за глупые вопросы, но с современными технологиями знаком плохо
0
|
30.01.2015, 22:26 | |
Ответы с готовыми решениями:
15
CPU и GPU Охлаждение CPU и GPU Загрузка CPU и GPU Криптография GP (GPU/CPU/APU) |
31.01.2015, 09:43 | 2 |
CPU и GPU - два разных процессора. Можно добиться максимальной производительности, если "распараллелить" задачу и на CPU и на GPU одновременно, правда далеко не любая задача подойдет для этого.
Всё зависит от задач. Например некоторые из них неэффективно выполнять на GPU. Можно и так сказать, только это не так уж и просто. Всю программу переписывать не надо, а только то, что ты хочешь чтобы выполнялось на GPU. Ничего про неё не знаю.
1
|
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
31.01.2015, 10:09 | 3 |
Есть ещё SSE, в самом процессоре.
1
|
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
|
31.01.2015, 11:05 | 6 |
Подобные утверждения не верны. Если что-то мощнее чего-то в 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 |
0
|
71 / 59 / 14
Регистрация: 20.12.2013
Сообщений: 700
|
|
31.01.2015, 13:00 [ТС] | 14 |
Сейчас нет, но если будет надо, то могу поставить задачу на отдельный компьютер и не загружать его больше ничем.
0
|
31.01.2015, 13:48 | 15 |
Это не фреймворк. Тулкит для 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 | |
21.04.2019, 10:27 | |
Помогаю со студенческими работами здесь
16
Неполная загрузка CPU и GPU Скрипт для мониторинга cpu и gpu Кто чем занимается? GPU и CPU Охлаждение CPU и GPU элементом Пельтье Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
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.by
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
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
|