Часовой пояс: UTC + 3 часа




Форум закрыт Новая тема / Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней. Закрыто  Сообщений: 105 • Страница 5 из 6<  1  2  3  4  5  6  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: В сети
Регистрация: 10.05.2011
Откуда: Москва
Yalg писал(а):
Так я-то говорю про цпу


Вот тебе задачка: есть легко векторизуемая прога, которая тратит 80мс на обработку данных скалярно 32-битными флоатами и ещё 20мс на I/O этих данных.
Вопрос - на сколько ускорится обработка данных, если вместо 32-битных флоатов использовать 128-битный SSE или 256-битный AVX? Ну а свежий 512-битный AVX512?
Очевидно, что проц в теории может перемалывать данные в 4/8/16 раз быстрее.

И ещё одна, на количество инструкций:

1. res = A*B + C
2. res = FMADD A, B, C

Тут всё логично, у второго варианта есть FMA и всего одна инструкция. У первого варианта нет FMA и нужно 2 инструкции для той же задачи.
Первый выполняется за 5 (*) + 3 (+) тактов, второй - за 5 (FMADD) тактов.

А теперь давай вот так:

1. res = A*B + C*D
2. tmp = C*D
res = FMADD A,B, tmp

первый вариант - 3 инструкции без FMA
второй вариант - 2 инструкции с FMA
На сколько второй вариант будет быстрее?


Последний раз редактировалось devl547 23.10.2015 22:21, всего редактировалось 4 раз(а).


Партнер
 

Member
Статус: Не в сети
Регистрация: 28.10.2005
Откуда: Тольятти
Yalg писал(а):
Так я-то говорю про цпу, а не узкоспециализированные устройства.

Так давайте рассуждать о ЦПУ с точки зрения его "среды обитания" и его прямых функций в составе Персонального Компьютера, а не гипотетического калькулятора по сложению/умножению матриц. Иначе мы скатимся к тому, что уровень шахматистов будем оценивать по скорости перемещения фигур по доске.

_________________
Тише едешь - дальше будешь!
От того места, куда едешь...


 

Member
Статус: Не в сети
Регистрация: 26.03.2008
Откуда: Москва
Фото: 1
DarkOne писал(а):
Так давайте рассуждать о ЦПУ с точки зрения его "среды обитания" и его прямых функций в составе Персонального Компьютера, а не гипотетического калькулятора по сложению/умножению матриц.

в составе персонального компьютера одна из прямых функций ЦПУ - это считать :)
так что пример корректен и показывает как на простых операциях (коих масса внутри любой программы) можно уменьшить количество отрабатываемых инструкций, но для этого потребуется глубокий рефакторинг кода и отказ от legacy совместимости
в винде этого пока даже в проекте не предполагается

_________________
если я становлюсь нарочито вежлив на форуме, то я очень зол :)


 

Member
Статус: В сети
Регистрация: 10.05.2011
Откуда: Москва
ArgenLant писал(а):
в винде этого пока даже в проекте не предполагается


А это вообще не задача ОС. То что ты сейчас написал - принцип работы JIT с кэшем.
И такое есть в куче языков программирования, в трансляторах архитектур и даже в железе (Tegra K1 Denver и Transmeta Crusoe/Efficeon).


 

Member
Статус: Не в сети
Регистрация: 20.06.2013
devl547 Я тщательно забыл и математику и программирование так что ответа не знаю. Мозг не воспринимает задачки.
DarkOne функции цпу в составе пк год от года меняются в доле использования. К примеру доля браузеров год от года растет так, что пора браузер делать частью системы и чтобы он работал всегда, включаясь с пк и выключаясь вместе с ним.


 

Member
Статус: Не в сети
Регистрация: 26.03.2008
Откуда: Москва
Фото: 1
devl547 писал(а):
А это вообще не задача ОС. То что ты сейчас написал - принцип работы JIT с кэшем.
И такое есть в куче языков программирования, в трансляторах архитектур и даже в железе (Tegra K1 Denver и Transmeta Crusoe/Efficeon).


в таком случае почему это не делается повсеместно?

_________________
если я становлюсь нарочито вежлив на форуме, то я очень зол :)


 

Member
Статус: В сети
Регистрация: 10.05.2011
Откуда: Москва
Yalg писал(а):
Я тщательно забыл и математику и программирование так что ответа не знаю. Мозг не воспринимает задачки.


Ну так не интересно, задачки-то примитивные, там кроме сложения-умножения-деления ничего не нужно.

ArgenLant писал(а):
в таком случае почему это не делается повсеместно?


Потому что это неэффективно в общем случае и имеет кучу ограничений. Но аудио-видеокодеки так и делают - выбирают ветки исполнения в зависимости от проца.
И интеловский компилятор так делает автоматом.


Последний раз редактировалось devl547 23.10.2015 14:23, всего редактировалось 2 раз(а).

 

Member
Статус: Не в сети
Регистрация: 09.04.2007
Откуда: г.Москва
ArgenLant писал(а):
в составе персонального компьютера одна из прямых функций ЦПУ - это считать

Одна из - да! Главная - управлять периферийными устройствами. В идеале проц вообще должен только настраивать всякие боковые того_сего_ускорители и подавать на них данные... Ну и забирать итоговые данные от них.

_________________
Люди, не повышайте энтропию Вселенной!


 

Member
Статус: Не в сети
Регистрация: 28.10.2005
Откуда: Тольятти
devl547, а если еще вспомнить об обязательном сохранении промежуточных результатов, то кол-во инструкций в первом варианте еще возрастет.

_________________
Тише едешь - дальше будешь!
От того места, куда едешь...


 

Member
Статус: В сети
Регистрация: 10.05.2011
Откуда: Москва
DarkOne писал(а):
а если еще вспомнить об обязательном сохранении промежуточных результатов, то кол-во инструкций в первом варианте еще возрастет.


Не возрастёт, результат умножения сразу идёт на вход другого исполняющего устройства.
Кто даст ответ, насколько увеличится производительность в случае перехода с 32-битной обработки на 128/256/512-битную.
И насколько выполнение 2 инструкций быстрее, чем 3х.


 

Member
Статус: Не в сети
Регистрация: 26.03.2008
Откуда: Москва
Фото: 1
Garry1010 писал(а):
Одна из - да! Главная - управлять периферийными устройствами. В идеале проц вообще должен только настраивать всякие боковые того_сего_ускорители и подавать на них данные... Ну и забирать итоговые данные от них.

в идеале каждое следующее поколение программ должно быть оптимизированнее предыдущего :) в реальности мы этого не наблюдаем
а если серьезно, то управление гетерогенными вычислениями - это штука сложная и не всегда нужная

_________________
если я становлюсь нарочито вежлив на форуме, то я очень зол :)


 

Member
Статус: Не в сети
Регистрация: 28.10.2005
Откуда: Тольятти
Я то-то упустил похоже, что вы под legacy имеете ввиду? Не уж-то опять про CISC х86 "костыли" речь идет? Если да, то уже как-то не смешно. Современные декодеры тратят не преобразование любых команд 1 такт и делают это параллельно с тем, как данные движутся по конвейеру (можно считать его как часть конвейера) и свой побочный результат это даст только в случае перезапуска конвейера, т.е. при промахе. А вот предсказатели в современных x86 куда лучше, чем в ARM. Но прогресс идет, может через пяток лет и сравняются.

_________________
Тише едешь - дальше будешь!
От того места, куда едешь...


 

Member
Статус: В сети
Регистрация: 10.05.2011
Откуда: Москва
DarkOne писал(а):
Современные декодеры тратят не преобразование любых команд 1 такт


Это не так на самом деле. Большинство действительно за 1 такт,но не все. Можно ещё за 2. А можно ещё сложные команды декодировать 3-4 такта.


 

Member
Статус: Не в сети
Регистрация: 28.10.2005
Откуда: Тольятти
devl547 писал(а):
Это не так на самом деле. Большинство действительно за 1 такт,но не все. Можно ещё за 2. А можно ещё сложные команды декодировать 3-4 такта.

Ну это я утрирую ) Для чего и делают широкие декодеры, да еще и по несколько штук на фронт, плюс OOO и HT, дабы исполнители не простаивали. А правильные компиляторы должны стараться избегать случаев, когда исполнители ожидают данные от декодеров.
П.С. что-то мы совсем в дебри уже полезли... В общем и целом что я хотел сказать то. Покамест, в реальном коде старички х86 все же прилично быстрее ARMов, но прогресс идет. А будущее похоже точно за APU. Только вот декодеры в случае с APU будут еще сложнее, еще шире и умнее, а в этом (проектировании декодеров) у разработчиков х86 рука уже набита и на этом поприще они продвигаться будут шибче. По крайней мере первое время. И то что АМД пару лет назад взялась за разработку ARM-совместимых процессоров, это очень хорошо. Для всех.

_________________
Тише едешь - дальше будешь!
От того места, куда едешь...


Последний раз редактировалось DarkOne 23.10.2015 14:44, всего редактировалось 1 раз.

 

Member
Статус: В сети
Регистрация: 10.05.2011
Откуда: Москва
DarkOne , что-то задачки выше никто не решает(


 

Member
Статус: Не в сети
Регистрация: 28.10.2005
Откуда: Тольятти
devl547 писал(а):
DarkOne , что-то задачки выше никто не решает(

А что их решать то? Понятное дело, что используя модули FMAС одинаковые по сути задачи будут исполняться быстрее, тем более что умножение+сложение одна из самых частых комбинаций в вычислениях. На то FMACов в современных ЦПУ все больше и они все шире. Другое дело их довольно сложно реализовать в железе, учитываю очень сложную схемотехнику (в том числе и по части увязывание их в общую архитектуру) и ограниченный бюджет транзисторов. Точнее бюджет площади на кристалле.

_________________
Тише едешь - дальше будешь!
От того места, куда едешь...


 

Member
Статус: В сети
Регистрация: 10.05.2011
Откуда: Москва
DarkOne писал(а):
А что их решать то?


Результат неожиданный будет. Поэтому и выложил.


 

Member
Статус: Не в сети
Регистрация: 28.10.2005
Откуда: Тольятти
devl547 писал(а):

Результат неожиданный будет. Поэтому и выложил.

Домой приду - порешаю на досуге ) А вообще реально заставить современный ЦПУ исполнять так, как написано? Компиллятор и декодер все равно преобразуют две операции в одну FMA. Или речь о том что на одном ЦПУ FMAС есть, а на другом нет?

_________________
Тише едешь - дальше будешь!
От того места, куда едешь...


 

Member
Статус: Не в сети
Регистрация: 20.06.2013
DarkOne писал(а):
ограниченный бюджет транзисторов. Точнее бюджет площади на кристалле.

Размер ядра(в транзисторах) уже несколько поколений техпроцессов почти не растет.


 

Member
Статус: В сети
Регистрация: 10.05.2011
Откуда: Москва
DarkOne писал(а):
Компиллятор и декодер все равно преобразуют две операции в одну FMA


Только если попросить принудительно. Самоволки с автовекторизацией не будет.

DarkOne писал(а):
А вообще реально заставить современный ЦПУ исполнять так, как написано?


Да, можно хоть на ассемблере написать.

DarkOne писал(а):
Или речь о том что на одном ЦПУ FMAС есть, а на другом нет?


Нет, выполняется на одном процессоре с FMA (использовался Haswell, но справедливо и для остальных).

Как решишь, вот тебе ответы:
devl547 писал(а):
проц в теории может перемалывать данные в 4/8/16 раз быстрее.


Но прога будет работать быстрее всего в 2.5/3.3/4 раза, а не в 4/8/16. Мощность проца упрётся в I/O.

devl547 писал(а):
На сколько второй вариант будет быстрее?


На деле второй вариант будет медленнее, чем первый, хоть у первого и больше на 1 инструкцию.
1. A*B и C*D выполняются параллельно, потому как суперскалярность и нет зависимости по данным. Поэтому эти два умножения выполнятся за 5 тактов. Плюс сложение - итого 8.
2. Умножение за 5 тактов плюс FMA за 5 тактов. FMA ждёт результата умножения. Итого 10, хоть инструкций и меньше.


Последний раз редактировалось devl547 23.10.2015 15:16, всего редактировалось 1 раз.

Показать сообщения за:  Поле сортировки  
Форум закрыт Новая тема / Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней. Закрыто  Сообщений: 105 • Страница 5 из 6<  1  2  3  4  5  6  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan