2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2, 3  След.
 
 Кто использовал суперкомпьютеры?
Сообщение17.09.2013, 09:32 


15/01/12
215
Немного почитал о них в википедии.
Правильно ли я понял, что ускорение происходит не за счёт качества процессора, а за счёт количества ядер?
И если да -- то для получения ускорения надо распараллеливать прогу?
Где и за сколько можно их арендовать?
Правильно ли пишут, что за счёт многоядерности всё ускоряется в миллион (1 000 000) раз?

И насколько быстрым будет процесс, если работать с целыми числами, а не с дробными?

Есть ли вычислительный центр в Москве, чтобы при необходимости можно было сходить туда?

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

 Профиль  
                  
 
 Re: Кто использовал суперкомпьютеры?
Сообщение17.09.2013, 12:12 


10/04/12
705
Распараллелить может и видеокарта. Например, Tahity содержит 2048 вычислительных элемента, которые оперируют с действительными числами. Вопрос только в том, что эти вычислительные элементы объединены в вычислительные модули (16 штук). Ограничение в том, что все вычислительные элементы могут выполнять только одну и ту же инструкцию в пределах вычислительного модуля. Это хорошо подходит для прорисовки 3D сцен, решения дифференциальных уравнений, но плохо для обработки запросов пользователей. Для программирования надо использовать язык OpenCL.

Если брать суперкопьютеры, то в него можно поместить столько процессоров, сколько техническая мысль позволит. Например, ягуар ягуар это по сути 36 000 процессоров AMD, имеющих доступ к общей памяти. Параллелить расчеты все равно придутся вручную.

Еще альтернатива - облако. Просто эти 36 000 процессоров можно разместить в 36 000 компьютерах и соединить их сетью. Чуть больше работы для того, чтобы параллелить. Также в облаке может быть GPU.

В целом проблема больше в том, какие задачи решаются и насколько хорошо и как они параллелятся.

 Профиль  
                  
 
 Re: Кто использовал суперкомпьютеры?
Сообщение17.09.2013, 12:58 


17/10/08

1313
Припоминаю, что у нас в стране две "параллельные" тусовки. Одна из них тут:
http://parallel.ru/
Там есть форум.

Где вторая - не могу вспомнить.

Из коммерческих промышленных систем можно посмотреть SAP HANA - специализированная программно-аппаратная система (In-Memory Database) для бизнеса.

 Профиль  
                  
 
 Re: Кто использовал суперкомпьютеры?
Сообщение17.09.2013, 18:42 
Аватара пользователя


31/10/08
1244
Igor_Dmitriev в сообщении #764597 писал(а):
Правильно ли я понял, что ускорение происходит не за счёт качества процессора, а за счёт количества ядер?

В последнее время много шумихи о том чтобы использовать более энергоэффективные процессоры. Но в целом так больше вычислительных блоков более эффективные вычисления.
Igor_Dmitriev в сообщении #764597 писал(а):
И если да -- то для получения ускорения надо распараллеливать прогу?

Да. Причем на нескольких уровнях.

Igor_Dmitriev в сообщении #764597 писал(а):
Правильно ли пишут, что за счёт многоядерности всё ускоряется в миллион (1 000 000) раз?

:lol: Ускорение зависит от числа вычислительных блоков.
Есть формула Амдала, из которой видно, что может существовать насыщение.
Правда она основана на предположение, что не всякий алгоритм можно распределить. А вот доказательство этого предположения я не видел.
На самом деле это узкий класс задач которые не поддаются распараллеливанию.

Современный компьютер имеет производительность 20*10^9 flops на ядро.
В списке top500 самый высокопроизводительный компьютер имеет производительность порядка $10 *10^15$ flops. Так что быстрее 50 000 ну никак не получится.

В-третьих, не всякая задача хорошо распараллеливания. Есть такие в которых на 2 двух кратное ускорение нужно 4 кратное увеличение вычислительных блоков.

Igor_Dmitriev в сообщении #764597 писал(а):
И насколько быстрым будет процесс, если работать с целыми числами, а не с дробными?

Зависит от архитектуры. Современные процессоры заточены на плавающую точку и с плавающей точкой вычисления быстрее.
Обычно ускорение достигается за счёт снижения точности вычислений.

Igor_Dmitriev в сообщении #764597 писал(а):
Есть ли вычислительный центр в Москве, чтобы при необходимости можно было сходить туда?

Да. И не один. На сайте top500.org можно найти расположения и далее по ссылкам выйдете на контакты.

mustitz в сообщении #764631 писал(а):
Распараллелить может и видеокарта.

В top500 много гибридных систем, как раз на видеокартах.

mustitz в сообщении #764631 писал(а):
36 000 процессоров AMD, имеющих доступ к общей памяти.
Не имеет. Доступа там нет. Обычно для высоко производительного компьютера архитектуры памяти такова: локальный процессор имеет доступ к своей памяти и конвейерная передача данных от одного процессора к другому через ЛВС.

 Профиль  
                  
 
 Re: Кто использовал суперкомпьютеры?
Сообщение17.09.2013, 19:16 


15/01/12
215
Про закон Амдала я слышал, моя задача должна идеально распараллеливаться. Каждое действие (нить) после расппараллеливания сводится к переборам и сложению/вычитанию/умножению/делению. Иначе говоря, вместо того чтобы вычислять 10 000 нитей в одном потоке, я должен вычислить по 1 ните на каждый из 10 000 потоков.

Итого получаем: быстрее, чем в 50 000 раз я на данный момент не ускорюсь, так?

Объясните ещё раз про видеокарту: она может распараллелить за счёт 2048 вычислительных элементов. Следовательно, для идеально распараллеливаемой задачи получается, что всё решается быстрее в 2048 раз? Почему вы cказали о 16 элементах?
Можно ли видеокарту пристроить к обыкновенному компьютеру или для неё нужна дорогая маткарта и дорогой проц? Если можно пристроить, то сколько примерно стОит такая карта и почему тогда процессоры имеют лишь 8-20 ядер, а видеокарта аж 2048?

Если я правильно понял, создаётся много потоков, каждый решает свою задачу (опыт распараллеливания на обычных компах у меня есть). Отличается ли что-то от того, что я написал, если мы используем видеокарту или облака?

Цитата:
Igor_Dmitriev в сообщении #764597 писал(а):
И если да -- то для получения ускорения надо распараллеливать прогу?

Да. Причем на нескольких уровнях.

Как понять "на нескольких уровнях"? Почему не на одном?

 Профиль  
                  
 
 Re: Кто использовал суперкомпьютеры?
Сообщение17.09.2013, 20:06 
Аватара пользователя


31/10/08
1244
Igor_Dmitriev
Igor_Dmitriev в сообщении #764735 писал(а):
Как понять "на нескольких уровнях"? Почему не на одном?

Эффективнее. Разные возможности и разные недостатки.

1) SIMD, MIMD
2) Ядра
3) Процессоры, компьютеры.

Не забываем про отказоустойчивость.

Igor_Dmitriev в

сообщении #764735"]Итого получаем: быстрее, чем в 50 000 раз я на данный момент не ускорюсь, так?[/quote]
Так.
Но на данный момент ты свои 20 Гфлопс ещё не получил. Так что не стоит делить шкуру не убитого медведя.
Можно попробовать снизить точность расчётов без потери точности результата.
К примеру. Тем самым за счёт более меньших элементов на пакет данных можно увеличить параллелизм т.е. с Double перейти на Single.

[quote="Igor_Dmitriev в сообщении #764735
писал(а):
Следовательно, для идеально распараллеливаемой задачи получается, что всё решается быстрее в 2048 раз?

Для идеальной, да.

Igor_Dmitriev в сообщении #764735 писал(а):
Можно ли видеокарту пристроить к обыкновенному компьютеру или для неё нужна дорогая маткарта и дорогой проц?

Надо знать детали. Обычно пристроить можно и работать будет. Но вот обмен между основной памятью и памятью видео карты будет более медленный. И блок питания возможно надо будет сменить на более мощный. Продумать "систему" охлаждения.

Igor_Dmitriev в сообщении #764735 писал(а):
Отличается ли что-то от того, что я написал, если мы используем видеокарту или облака?

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

 Профиль  
                  
 
 Re: Кто использовал суперкомпьютеры?
Сообщение18.09.2013, 12:58 


10/04/12
705
Я просто немного рассказываю про архитектуру видеокарты. Во сколько раз будет ускорение точно сказать сложно, потому что видеокарта это отдельный чип, который построен на немного других принципах. Сравнивать тяжело, надо просто запустить тесты. Производительность Radeon HD 7970 оценивается в 4000 GFLOPS, а производительность Intel Core i7-975 XE это 53 GFLOPS. Итого получаем, что в идеале видеокарта примерно в 100 раз быстрее.

Но видеокарта (1) потребляет больше питания; (2) более специфично программирование (3) обычно меньше памяти, максимум 3G на сегодня на один чип. Но память более быстрая (несколько контроллеров)

До четырех чипов можно объединить в одну систему. Так что без большого напряга можно получить 12 Gb памяти и 16 TFLOPS. Видеокарта использует PCI-express разъем, посему на материнской плате должны они присутствовать. Стоимость одной видеокарты AMD Radeon HD 7970 примерно 450 USD. Есть спаренные AMD Radeon HD 7990 (там два чипа), стоимость в районе 1000 USD. За счет худшего охлаждения спаренные обычно немного уступают в производительности двум объединенным.

Еще немного о специфике видеокарт. Подробнее в книге Heterogeneous Computing with OpenCL. У процессора ядра полностью независимы. В один момент времени одно ядро может начать выполнять запрос от одного пользователя, другое может быть в середине обработки запроса от другого, третье работать с базой... Видеокарта так не умеет. Таких независимых ядер там примерно 16. Каждому отведено 128 вычислителей, которые могут выполнять только одну операцию. Например, мы можем сложить одновременно 128 пар чисел. Но если нам надо сложить только два числа, то будет задействован только один вычислитель, а остальные будут простаивать.

Например, пусть на всех вычислителях выполняется такой код:

Используется синтаксис C
if (a > 0) {
    a++;
} else {
    a--;
}
a *= 2;
 


Условие a > 0 выполняется одновременно на всех 128 вычислителях. Далее, допустим, что на 50 вычислителях условие равно true, а на 78 условие равно false. Тогда следующие 50 вычислителей выполняют команду a++, а остальные 78 вычислителей простаивают. Потом выполняется ветка else, 50 вычислителей простаивают, а 78 работают. И потом мы выходим из условия, и все 128 вычислителей выполняют a *= 2.

Подобная схема прекрасно подходит для решения дифур, 3D графики. А вот для web-сервера совсем не годиться. В принципе, сейчас видеокарты часто встроены. Например, в процессоре от AMD A10 5800K есть 384 вычислителя. Но в силу специфики, обычные языки программирования, которые обычно заточены под один вычислитель, не подходят для эффективного программирования с использованием видеокарт. Код на OpenCL C-подобный, только при этом надо помнить, что он выполняется одновременно и параллельно на многих вычислителях. Функции вроде get_local_id позволяют получить номер текущего вычислителя. Так что сложение упрощенно получится как

Используется синтаксис C
int tid = get_local_id(0); // Получаем номер вычислителя
a[tid] = b[tid] + c[tid]; // Множество одновременных сложений
 

 Профиль  
                  
 
 Re: Кто использовал суперкомпьютеры?
Сообщение19.09.2013, 02:13 


15/01/12
215
Цитата:
Современный компьютер имеет производительность $20\cdot10^9$ flops на ядро.
В списке top500 самый высокопроизводительный компьютер имеет производительность порядка $10 \cdot10^{15}$ flops. Так что быстрее 50 000 ну никак не получится.


Вы хотели написать, что выше 500 000 никак не получится? Прошу ответить Вас или кого-то ещё, ответ важен.

Цитата:
Итого получаем, что в идеале видеокарта примерно в 100 раз быстрее.

Несмотря на то, что вычислителей 2048, производительность всего в 100 раз вырастает?


Про облака: если у меня лишь одна функция с аргументом типа string и файл, в котором много таких аргументов для этой функции, то долго ли писать распараллеливание и во сколько раз быстрее будут производится вычисления по сравнению с обычным компьютером?

Почти на все вопросы (за исключением 3-х заданных) я получил исчерпывающие ответы, спасибо всем отписавшимся.

 Профиль  
                  
 
 Re: Кто использовал суперкомпьютеры?
Сообщение19.09.2013, 05:53 
Аватара пользователя


31/10/08
1244
Igor_Dmitriev в сообщении #765228 писал(а):
Вы хотели написать, что выше 500 000 никак не получится? Прошу ответить Вас или кого-то ещё, ответ важен.

Да нолик потерялся.
Igor_Dmitriev в сообщении #765228 писал(а):
Несмотря на то, что вычислителей 2048, производительность всего в 100 раз вырастает?

Ну кто тебе сейчас это скажет? Надо на конкретной задаче брать и тестировать. Может в 2048 раза будет, а может в 100, а может ещё и медленнее.

Igor_Dmitriev в сообщении #765228 писал(а):
вычисления по сравнению с обычным компьютером?

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

 Профиль  
                  
 
 Re: Кто использовал суперкомпьютеры?
Сообщение20.09.2013, 02:49 


09/03/09
46
По ссылке можно найти то, чем занимаются в России.

http://agora.guru.ru/display.php?conf=p ... a04l46rsb2

 Профиль  
                  
 
 Re: Кто использовал суперкомпьютеры?
Сообщение20.09.2013, 17:40 
Аватара пользователя


27/01/09
814
Уфа
К суперкомпьютерам подключаются через сеть (потому суперкомпьютер может быть хоть на другом континенте, но намного проще, если есть возможность общения с теми кто там работает), пишешь программу используя параллельные расширения (это труднее, чем программировать один процессор), отсылаешь программу в суперкомпьютерный центр, а ценр запускает программу на суперкомпьютере и возвращает результаты. Увеличение производительности зависит от качества процессоров (в суперкомпьютерах обычно процессоры лучшего качества, большее количество конвейеров, большая векторность операций, оперативная и регистровая память большей производительности), от распараллеливаемости алгоритма, от того как процессоры используют общую память, от скорости коммутации связей между процессорами и пропускной способности связи между процессорами (если процессоров много, то роль качества связи между ними возрастает), от того как спроектирован суперкомпьютер (например он может перегреваться через некоторое время работы, если недостаточное охлаждение). Нет целочисленных и дробных операций (с точки зрения различия блоков их исполняющих), а есть целочисленные операции и операции с плавающей точкой. Целочисленные тоже могут оперировать с дробями (с фиксированной точкой).

 Профиль  
                  
 
 Re: Кто использовал суперкомпьютеры?
Сообщение30.09.2013, 13:23 
Аватара пользователя


22/09/09

1907
Pavia
Pavia в сообщении #764727 писал(а):
Igor_Dmitriev в сообщении #764597 писал(а):
И насколько быстрым будет процесс, если работать с целыми числами, а не с дробными?

Зависит от архитектуры. Современные процессоры заточены на плавающую точку и с плавающей точкой вычисления быстрее.
Обычно ускорение достигается за счёт снижения точности вычислений.
Иногда в целых числах сильно быстрее, особенно если вместо вычислений можно использовать таблицы в оперативной памяти (нпр., таблицу умножения).
Igor_Dmitriev
Посмотрите в Википедии статью "Добровольные вычисления". Может, это выход для Вас.

 Профиль  
                  
 
 Re: Кто использовал суперкомпьютеры?
Сообщение30.09.2013, 22:50 
Аватара пользователя


27/01/09
814
Уфа
bin в сообщении #769341 писал(а):
Иногда в целых числах сильно быстрее ...
Имеется ввиду наверное, то что именно "вычисления быстрее" с т.з. математика (типичной прикладной задачи), а не то что выполнение процессором целочисленных операций медленнее, чем выполнение операций с плавающей точкой.

 Профиль  
                  
 
 Re: Кто использовал суперкомпьютеры?
Сообщение03.10.2013, 23:07 
Аватара пользователя


17/07/08
322
Главная проблема в использовании GPU - работа с разной памятью на карте и на материнке. Фактически самые нужные задачи типа решение систем линейных уравнений с разреженной матрицей общего вида практически не ускоряются. Нет рабочих алгоритмов ни на CUDA ни на OPEN CL.

 Профиль  
                  
 
 Re: Кто использовал суперкомпьютеры?
Сообщение13.10.2013, 20:21 
Модератор
Аватара пользователя


11/01/06
5702
Igor_Dmitriev в сообщении #764597 писал(а):
Где и за сколько можно их арендовать?


Например, на Амазон - http://aws.amazon.com/hpc-applications/
Там вроде как даже дают бесплатно попробовать.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 32 ]  На страницу 1, 2, 3  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



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

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


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group