vlkamov (vlkamov) wrote in engineering_ru,
vlkamov
vlkamov
engineering_ru

Category:

Ядерная математика

538 последняя китайская новость:
В Китае началась работа прототипа вычислительной машины эксафлопсного класса, относящейся к следующему поколению суперкомпьютеров.

Еще в прошлом тысячелетии суперкомпьютеры состояли из десятков тысяч процессоров. в этом наверняка больше ста тысяч будет.

Вместе с тем и отдельные процессора тоже стали существенно многоядерными. Но и это не все, там внутри всякие потоки, конвейеры, спекулятивное исполнение. А еще кэши в три наката и всякое такое, что, увеличивая количество вентилей в разы, позволяет слегка повысить производительность всего чипа в целом.

Вместе с тем, будучи пользователем однопроцессорной машины, я не вижу у себя задач, которые без всяких конвейеров нельзя было бы разложить по тысяче менее сложных ядер. Более того, графический процессор так и сделан. И это работает. Да так, что для особо тяжелых задач охотно используют именно GPU. Наверное, при желании можно программными средствами заставить тысячу ядер всеми этими спекуляциями заниматься. Но, повторяю, не вижу в этом необходимости.

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

Вот объясните нам, блондинам, какие вообще задачи (кроме маркетинговых, конечно) требуют непременно очень сложных процессоров. И отдельно: какие задачи для персонального компьютера реально требуют сложных процессоров, а не массива простых ядер.
Tags: вопрос залу
Subscribe
promo engineering_ru июнь 8, 2015 11:10 59
Buy for 200 tokens
Оригинал взят у subbotazh в Развитие системы LRT в Портленде (США) Портленд (Portland) - расположен в северо-западной части США, крупнейший город в штате Орегон (Oregon). По состоянию на 2013 год население Портленда составляло 609 456 человек, что позволило ему войти в 30 самых крупных…
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 145 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
> какие задачи для персонального компьютера реально требуют сложных процессоров, а не массива простых ядер

Например, можно более сложное моделирование по монте-карло запустить. Там, насколько я понимаю, часто бывают задачи не на тупо перемножение матриц, а где надо много по памяти шариться с сильно ветвистыми условиями.
Мы, блондины, можем допустить, что можно выдумать такую задачу, что непременно один процессор.
Но.
1) где это монте-карло находится применяется ?
2) почему без нет распараллеливаемых альтернатив ?
3) почему эти расчеты надо вести непременно на персональном компьютере ?
4) в суперкомпьютере все равно сто тысяч процессоров - там как ?

swizard

9 months ago

ex0_planet

9 months ago

Не все задачи тупо параллелятся.
А еще — это я между строк у вас читаю — если посмотреть глобально с точки зрения... я не знаю, как макроэкономика только инженерия. Макроинженерии? Короче, надо учитывать, что в какой-то момент реальность вас ставит перед фактом, что сколько бы у вас не было инженеров и сколько бы у них пядей во лбу не было, они всё равно упираются в предел сложности разрабатываемых систем. Например, никто не в состоянии (пока?) спроектировать экзафлопный компьютер с параллелизмом на микроуровне. Поэтому приходится идти по проверенному десятилетиями способу пакования сложности в блоки с известными характеристиками и далее объединяя этими блоки в большее целое. Абстрагируясь то есть. И закрывая глаза на неидеальность этих блоков.
Привожу пример задачи (из переписки с одним из коллег)

"... - это такой большой проект в рамках European Bioinformatics Institute - мы занимались созданием европейского геномного браузера и порождением данных для него. А данных там очень много, и они обновлялись примерно 5 раз в год (быстрее мы на всех своих кластерах обсчитать не успевали)
....
короче говоря, у нас есть кубики, из которых можно составлять распараллеленные пайплайны

есть язык, при помощи которого мы описываем взаимодействие этих кубиков

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

В приложении, для которого изначально создавался ...., поток управления может очень широко разветвляться (после одной “нити” может потребоваться несколько миллионов не зависящих друг от друга ниточек), которые могут потом снова утоньшаться несколько раз (независимо - каждая ниточка сама локально принимает это решение), а потом собираться обратно, и наконец мы в конце снова получаем single control thread.

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

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

pyka_npu3paka

9 months ago

vlkamov

9 months ago

pyka_npu3paka

9 months ago

vlkamov

9 months ago

pyka_npu3paka

9 months ago

alll

9 months ago

pyka_npu3paka

9 months ago

alll

9 months ago

pyka_npu3paka

9 months ago

alll

9 months ago

pyka_npu3paka

9 months ago

alll

9 months ago

zateevo

9 months ago

pyka_npu3paka

9 months ago

zateevo

9 months ago

pyka_npu3paka

9 months ago

zateevo

9 months ago

pyka_npu3paka

9 months ago

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

И это не говоря уже про всякие "отпарсить html и понять координаты картинок и буковок на странице".

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

jakobz

9 months ago

vlkamov

9 months ago

Иван Петров

9 months ago

andry_cosmos

August 7 2018, 17:00:07 UTC 9 months ago Edited:  August 7 2018, 17:01:24 UTC

Сейчас бурно развиваются технологии, связанные с использованием нейронных сетей, которые очень требовательны к вычислительной мощности. Применяются они, в частности, для разного рода распознавания и для решения разнообразных прикладных и научных задач.
Конечно же не всегда оно действительно нужно, но это прогресс, в результате которого, в частности, смартфон неплохо распознает речь, а машинные переводчики чуть ли не с любого на любой язык работают все эффективнее. Возможно, развитие именно этого направления в перспективе позволит заменить человека в большинстве видов деятельности.
Это-то как раз распараллеливается не просто, а очень просто. И за примером далеко ходить не надо ;-)
Криптография.
Скорее, мимо. Там нужны большие вычислительные мощности, но собирать их в кластер совсем необязательно.

pusets

9 months ago

viktorpetrov

9 months ago

vlkamov

9 months ago

viktorpetrov

9 months ago

для решения обратных задач. например.
> И отдельно: какие задачи для персонального компьютера реально требуют сложных процессоров, а не массива простых ядер.
Программист, умеющий хорошо распараллелить сложную задачу, стоит намного дороже программиста, умеющего лабать что-то однопоточное, и даже дороже программиста, умеющего писать "многоразнозадачность" со слабым взаимодействием между нитями или сопроцессами. Удорожаем процессор --- удешевляем софт. С учётом того, что софт обычно заметно дороже процессора, жырные процессоры в обозримом будущем никуда не денутся.
А ещё изредка бывают задачи, которые тупо не параллелятся ;) Они редко бывают в бытовых применениях, но ведь и персоналки стоят не только дома.
Программисты давно вообще ничего не стоят, они просто негодны для чего либо кроме веб аппс по доставки пиццы

Придумать параллельный алгоритм это задача для ученого

iv_an_ru

9 months ago

vlkamov

9 months ago

iv_an_ru

9 months ago

vlkamov

9 months ago

iv_an_ru

9 months ago

alj868

9 months ago

vlkamov

9 months ago

alj868

9 months ago

iv_an_ru

9 months ago

alj868

9 months ago

iv_an_ru

9 months ago

alj868

9 months ago

iv_an_ru

9 months ago

alj868

9 months ago

iv_an_ru

9 months ago

alj868

9 months ago

iv_an_ru

9 months ago

alj868

9 months ago

iv_an_ru

9 months ago

ahitech

9 months ago

alj868

9 months ago

ahitech

9 months ago

alj868

9 months ago

iv_an_ru

9 months ago

alj868

9 months ago

iv_an_ru

9 months ago

alj868

9 months ago

iv_an_ru

9 months ago

alj868

9 months ago

iv_an_ru

9 months ago

iv_an_ru

9 months ago

alj868

9 months ago

iv_an_ru

9 months ago

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

alj868

9 months ago

droone

9 months ago

alj868

9 months ago

droone

9 months ago

vlkamov

9 months ago

droone

9 months ago

vlkamov

9 months ago

droone

9 months ago

vlkamov

9 months ago

droone

9 months ago

Да задачи-то с 40-х не поменялись --- диффуры методом сеток обсчитывать. Только раньше требовалось несколько тысяч барышень с арифмометрами, а сейчас несколько тысяч ядер.
Я вам больше скажу, сложение и умножение со времён архимеда не поменялось.
Но, это не имеет отношения к сути вопроса. Очень редко, когда в современных программах надо выполнить одно единственное вычисление. Обычно, после клика (а то и без клика вообще) нужно ПОСЛЕДОВАТЕЛЬНО выполнить расчёт, состоящий из десятков разных алгоритмов. Объекты все до единого хитрые и с отложенными вычислениями и выделением памяти. Матрицы везде хитро организованные, чтобы 99.9% нулей в них не хранить в памяти и не считать, чтобы дубликаты матриц не выделять в памяти, чтобы дублирующиеся расчёты не считать. И т. д. и т. п.

Screened comment

Чтобы майнить, суперкомпьютеры не нужны вообще. И там как раз GPU (и даже более специализированные вещи) рулят.
Вообще-то ускорение работы процессоров где-то с середины 90-х обеспечивается ростом их сложности - поскольку пропускная способность памяти растёт достаточно медленно.
Усложнение: структуры процессоров - рост объёма кэша, введение кэша L3 позволяет сократить количество обращений к памяти.
Вы не слышали про многоядерные процессоры ?

asox

9 months ago

vlkamov

9 months ago

asox

9 months ago

vlkamov

9 months ago

asox

9 months ago

de_monk

8 months ago

asox

8 months ago

vlkamov

8 months ago

asox

8 months ago

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

Задач, которые нельзя ОПТИМАЛЬНО разложить на матрицу простеньких вычислительных ядер, масса. Это все задачи, завязанные на время. Если результат следующего шага вычислений зависит от предыдущего, на матрицу такой алгоритм ляжет только в виде конвейера. К слову, конвейер - вполне себе способ параллельных вычислений, условно говоря, "параллелизм по времени", а не по пространству. Матричный вычислитель однозначно хорош только там, где можно разбить задачу на кусочки, независимые друг от друга по данным. Например, тупой пересчет единичного кадра. Но вот от кадра к кадру - опять тот самый конвейер.

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

100 тысяч "сложных" процессоров точно так же.

alj868

9 months ago

Previous
← Ctrl ← Alt
Next
Ctrl → Alt →