терафлопс что это такое
Что такое терафлопс? Почему они так важны для следующего поколения?
Что же за звери они такие и почему все только о них и говорят?
Когда Microsoft раскрыла техническую информацию о Xbox Series X, то главным своим достоинством компания выставила количество терафлопс. Но есть большой вопрос вокруг того, что такое терафлоп, и мы действительно должны быть взволнованы тем, что преемник Xbox One будет иметь 12 терафлопсов мощности GPU, а PS5 в районе 10.2 тера?
Что же такое терафлоп?
Прежде чем мы перейдем к специфике того, должны ли мы быть впечатлены консолью, которая утверждает, что предлагает 12 терафлопсов мощности GPU, давайте поговорим о том, что такое терафлоп на самом деле.
Эти операции с плавающей запятой относятся к сложным вычислениям, выполняемым компьютером (или игровой консолью в данном случае), когда выполняются такие вещи, как рендеринг (рисование и перемещение) полигона. Количество этих операций с плавающей запятой, которые компьютер или консоль может выполнять в секунду, является способом измерения его вычислительной мощности. В случае Xbox Series X есть обещание способности обрабатывать двенадцать триллионов операций с плавающей запятой в секунду.
Подводя итог, Microsoft говорит нам, что есть серьезная мощность GPU для разработчиков, чтобы играть и делать игры. В сырых цифрах это говорит о том, что скачок в качестве игр от предыдущей консоли Xbox будет довольно существенным.
Хотя это число само по себе не говорит нам всей истории. Мы также должны учитывать другие компоненты консолей связанных с производительностью. Такие элементы, как тактовая частота и пропускная способность памяти, которые являются центральными для производительности, еще не были выявлены корпорацией Майкрософт. Пока это не произойдет, это немного игра в угадайку с точки зрения того, что мы действительно можем ожидать от серии X, насколько это касается производительности.
Консоли, предлагающие терафлопс мощности GPU, не новы, хотя и заметно меньше.
Босс Xbox Фил Спенсер поделился информацией, что следующая консоль Microsoft использует свой собственный специально разработанный процессор, который будет использовать новейшие архитектуры Zen 2 и RDNA 2 от AMD. Если мы сравним цифры, Xbox One X обеспечивает шесть терафлопсов мощности GPU. Оригинальная Xbox One имела 1.31 терафлопс. Таким образом, серия X предлагает удвоить флопы ONE X.
PS4 Pro от Sony поставляется с 4.2 терафлопсами. 18 марта на прямой трансляции Sony поделилась что у PS5 будет примерно 10,3 тера. Это конечно немного меньше чем у майков, но все равно большой скачек в мире консолей.
Гораздо более полезным сравнением флопов было бы увидеть в сопоставление с графическими картами, доступными на ПК. GeForce RTX 2080 Ti от Nvidia выдает 14,2 терафлопса и является одной из самых мощных карт, доступных прямо сейчас. Таким образом, можно уже судить о том что мощность новых консолей будет сопоставима в этом аспекте с дорогими сборками персональных компьютеров на настоящее время.
Что на самом деле означает 12 терафлопсов?
Так что же означают эти двузначные флопы для геймеров? Ну, есть базовое обещание, что мы сможем играть в игры, которые графически более впечатляют и намного больше, чем то, что доступно на консолях текущего поколения. По сути, это открывает дверь к производительности наравне с играми высокого класса на ПК. Это дает разработчикам возможность быть более экспансивными с открытыми мировыми средами, потому что теперь у них есть инструменты и дополнительные мощности для разработки некстген игр.
Еще одним большим преимуществом этого повышения мощности является то, что игры будут комфортно работать с более высокой частотой кадров, даже в 4к или 8к гейминге.
Для разработчиков появится возможность применять фишки такие как трассировка лучей и затенение с переменной скоростью. Будет возможным создавать миры, которые богаче, более детализированы и более реалистичны. На это требуется много мощностей GPU, поэтому с удвоенной силой доступной на предыдущей консоли, можно распределить эту рабочую нагрузку более равномерно, чтобы помочь создать эти более динамичные игровые среды.
В заключении скажу, как бы это впечатляюще не звучало на что способны консоли будущего поколения, главное мы узнаем с появлением игр, когда собственными глазами увидим насколько качественно разработчики смогут применять все эти мощности при разработке и что благодаря ей мы получим по итогу.
Новые игры — июль 2021
Мы немного обновили email-рассылку, чтобы вам было удобнее ею пользоваться.
Жанр: глобальная стратегия
Чем примечательно: глобальная стратегия в декорациях античного мира. От Сорена Джонсона — ведущего дизайнера «Civilization IV» и «Offworld Trading Company».
Жанр: шутер от 1-го лица
Чем примечательно: серия о похождениях снайпера перебирается в виртуальную реальность. На этот раз действие развернется в Италии 1943-го года.
Чем примечательно: пошаговая RPG во вселенной «Monster Hunter». Прямое продолжение оригинальной игры, которая вышла на Nintendo 3DS в 2017-м году.
Чем примечательно: адвенчура, в которой главный герой погружается в таинственный колодец и «проживает» самые яркие моменты своей жизни.
Жанр: пошаговая стратегия
Чем примечательно: пошаговая стратегия во вселенной «Warhammer 40,000». Ответственные за игру Black Lab Games известны по работе над «Battlestar Galactica Deadlock».
F1 2021 — 16 июля (PC, PS4/5, Xbox One/Series)
Чем примечательно: ежегодная порция кольцевых автогонок, в которой появится новый сюжетный режим. Первый проект Codemasters, издателем которого выступит Electronic Arts.
Жанр: адвенчура от 3-го лица
Чем примечательно: обновленная версия игры 2011-го года, в которой доработают визуальную часть и немного изменят управление. Оригинальная «The Legend of Zelda: Skyward Sword» является одной из самых высокооцененных частей в серии.
Cris Tales — 20 июля (PC, PS4/5, Switch, Xbox One/Series)
Чем примечательно: красочная jRPG, в которой все действия влияют на прошлое и будущее. Подвох в том, что все три времени соседствуют на одном экране.
Жанр: изометрическая экшн-RPG
Чем примечательно: ворон, в чьи обязанности входит сбор умерших душ, отправляется в неподвластные смерти края. Новый проект создателей «Titan Souls».
Чем примечательно: головоломка о создании дорожной инфраструктуры в растущих городах. Продолжение «Mini Metro».
Last Stop — 22 июля (PC, PS4/5, Switch, Xbox One/Series)
Жанр: адвенчура от 3-го лица
Чем примечательно: история трех героев, чьи судьбы пересекаются благодаря сверхъестественным событиям. Разработчики известны по необычному триллеру «Virginia», а издателем выступит Annapurna Interactive.
Жанр: экшен от 3-го лица
Чем примечательно: смесь экшена и tower-defence, в которой маги строят смертоносные ловушки и тем самым противостоят неотесанным оркам.
Жанр: шутер от 1-го лица
Чем примечательно: хардкорный мультиплеерный шутер о Второй мировой войне со сражениями на 100 игроков. Главная задача состоит не в убийстве противников, а в слаженном взаимодействии с союзниками.
Чем примечательно: трехмерный сиквел игры 2008 года, действие которой развернется на улицах Сибуйи. Над проектом работают ключевые разработчики оригинала — дизайнером персонажей выступит Тэцуя Номура, а саундтрек напишет Такэхару Исимото.
Samurai Warriors 5 — 27 июля (PC, PS4, Switch, Xbox One)
Жанр: экшен от 3-го лица
Чем примечательно: история Нобунага Оды, противостоящего в немногочисленной компании воинов-самураев тысячам противников.
Жанр: шутер от 1-го лица
Чем примечательно: ролевая игра с элементами выживания на радиоактивных развалинах Чернобыля. За разработку отвечает польская студия The Farm 51.
The Forgotten City — 28 июля (PC, PS4/5, Switch, Xbox One/Series)
Жанр: адвенчура от 1-го лица
Чем примечательно: детективное приключение на улицах древнеримского города, попавшего во временную петлю. Игра выросла из модификации к «The Elder Scrolls V: Skyrim».
Чем примечательно: головоломка с элементами метроидвании, в которой маленький маг исследует загадочные порталы и скрывающиеся за ними миры.
Жанр: side-scroller и изометрический экшен
Чем примечательно: необычная смесь side-scroller шутера и изометрического экшена. Заключительная часть трилогии.
Eldest Souls — 29 июля (PC, PS4/5, Switch, Xbox One/Series)
Жанр: изометрическая экшн-RPG
Чем примечательно: пиксельная вариация souls-like, в которой нет рядовых противников — лишь жуткие боссы, слоняющиеся по руинам древнего королевства.
The Ascent — 29 июля (PC, Xbox One/Series)
Жанр: изометрическая экшн-RPG
Чем примечательно: экшн-RPG в антураже киберпанка. Главные герои — собственность корпорации, которая внезапно схлопывается и тем самым порождает кровавый передел власти.
PS. Если понравился формат — ищите нас в VK и Telegram. Либо заглядывайте к нам на сайт, там материалы выходят раньше.
Некстген для GTA5
Сегодня «Rockstar Games» (создатели серии игр GTA и RDR) сообщили про выход улучшенной версии GTA V для консолей нового поколения(PlayStation 5 и Xbox Series X|S).
Расширенная и улучшенная версия выйдет 11 ноября этого года.
Всё-таки мемы про GTA 5 были правы.
P.S. Картинка была на пикабу
Эксклюзив Google Stadia, который «невозможно портировать на консоли и ПК», выйдет на консолях и ПК
Konami объявила о планах выпустить Super Bomberman R Online на PS4, Xbox One, Nintendo Switch и ПК (Steam). До этого условно-бесплатная игра была эксклюзивом Google Stadia.
Что особенно примечательно, как отмечает журналист Имран Хан, представители Google во время интервью заявляли следующее: игра создавалась с нуля конкретно для Stadia, и её выпуск на других платформах попросту невозможен.
Королевскую битву Konami называли чуть ли не лучшим эксклюзивом Stadia, однако из-за особенностей жанра для интересных матчей требовалось лобби в 64 игрока — низкая популярность платформы даже не позволяла набрать столько игроков.
«Зачастую в Super Bomberman R Online было 8 игроков и 56 ботов».
К счастью, новая версия будет поддерживать общий онлайн между всеми платформами. Релиз проекта состоится в течение года, а владельцы PS5 и Xbox Series смогут запустить игру благодаря обратной совместимости.
Как я консоль нового поколения покупал
Сейчас, на фоне общего дефицита консолей нового поколения (PlayStation 5 и Xbox Series), в интернете полно историй о том, как крупные торговые сети не справляются с исполнением предзаказов. Некоторых кормят завтраками, постоянно смещая дату исполнения заказа, другие же просто отменяют заказ в одностороннем порядке. Если в первом случае все более или менее понятно, то во втором уже возникают вопросы о законности таких действий.
Моя же история началась еще в декабре прошлого года. Именного тогда, 11 декабря на сайте всем известного «Эльдорадо» можно было сделать предзаказ по полной предоплате на Xbox Series X. Я тут же оплачиваю заказа и начинаю ждать. Дату готовности назначили на 04.02.2021. На следующий день статус заказа сменился на «Передан на исполнение».
Ожидание было долгим. Ровно за неделю до назначенного срока исполнения, а именно 29 января, я решаю проверить статус заказа. И тут «Бац!», статус сменился с «Передан на исполнение» на «Требуется подтверждение от клиента«. Я насторожился, подумал еще, что сместить дату готовности хотят. Начитался уже страшных подобных историй на небезызвестном техно форуме. Ну-ну. все оказалось куда хуже.
В ходе звонка в КЦ «Эльдорадо» мне сообщили, что предзаказ необходимо отменить, т.к. консоли нет на складе. На мои возражения и вопросы нормально ответить не смогли. Направили меня в «Форму обратной связи» на сайт «Эльдорадо» для уточнения.
В форме обратной связи я обозначил следующие моменты:
1) Почему предзаказов приняли больше, чем ожидалось консолей? Ведь после 11 декабря предзаказ висел еще как минимум два дня. Я какое-то время следил за этим.
2) Почему мне сообщают об этом только через 1.5. месяца?
3) Я не собираюсь отменять заказ.
И знаете что они мне ответили?
После такого мое терпение лопнуло. Я пишу им повторное письмо с уточнением. Ну мало ли это нейросеть какая отвечает, которую на автоответ настроили, обращений же куча.
И действительно. Со второго раза уже что-то удалось вытянуть.
После получения вот такого ответа я снова звоню в КЦ «Эльдорадо» чтобы оставить претензию. Оставил. Со мной обещали связаться в течении 3-х дней, но перезвонили уже через час. Сказали, что не их вина. «Простите за неудобства«. Накинули 2000 бонусов, а после того как не получили моего согласия на «Отмену заказа» сами его отменили и все на этом.
Параллельно с этим пришел так же письменный ответ:
Меня почему то смутила статья на которую они ссылаются. Начинаю искать пруфы, вдруг меня пытаются просто взять на слабо статьями из Гражданского кодекса. Юрист подсказал, что статья 416 часть 1 в данной ситуации никак не относиться к моему заказу. После этого я решаю обратиться в Роспотребнадзор. 02.02.2021 было сформировано два обращения в Управления по Московской и Омской области, т.к. сам живу в Омске, приложил к обращениям все чеки, переписки и статью в Гражданском кодексе на которую ссылается «Эльдорадо».
Так же дополнительно написал в оф.группу в VK «Xbox Россия», но там уточнили лишь номер заказа и пропали.
Спустя чуть больше недели (11 февраля) поступил ответ от Роспотребнадзора и «Xbox Россия». В один день.
В принципе оба управления ответили примерно одинаково. Ниже ответ от Управления по Московской обл.
Xbox лишь спросили: «Скажите, пожалуйста, вам помогли решить проблему с заказом?». С чего «Эльдорадо» мне помогать, если они уже отменили заказ? Странно, подумал я.
Уже начал собирать всю информацию воедино для подачи иска в суд. Как вдруг.
16 февраля 19:42 по Омску мне поступает звонок с незнакомого номера.
Представились «Эльдорадо», сказали, что звонят по поводу моего заказа. Извинились за предоставленные неудобства. Спросили какой магазин я указывал как точку самовывоза.
И тут задают вопрос после которого меня как обухом по голове: «Вы готовы в течении пяти дней получить Xbox?». Я несколько раз переспросил кто и откуда звонит. Не мог поверить что вот из неоткуда они «родили» консоль, хотя до этого уверяли меня, что все консоли уже распроданы, а те, что не забрали по предзаказу ушли на исполнение других заказов. В общем согласовали доставку по точки самовывоза, сказали в течении пяти дней ждать звонка от директора магазина из которого нужно будет забрать Xbox (уточнили в каком будет удобно).
Оказалось, что консоль все это время была, и из-за какой-то ошибки она так и осталась на складе, в то время как все остальные поехали по регионам. Лежала там почти месяц, одна, представляете? Мне в это трудно верится. Но это, увы, никак не проверить.
Через четыре дня мне позвонили из магазина, сказали подойти забрать.
Я не стал задерживаться. Пришёл, оплатил, забрал =)
Не знаю, получил бы я Xbox если бы смирился с отменой заказа. Может помогли мои обращения, а может просто повезло. Но долгожданный заказ получен! Потраченных времени и нервов не жалею)) Но осадочек на душе остался и мое отношения к «Эльдорадо» (та и к МВидео) в целом изменилось не в лучшую сторону.
Терафлопсы и гигафлопсы: что это такое, как они рассчитываются, сравнение мощностей консолей
Компания Microsoft во всех рекламных материалах об игровой приставке Xbox One X сообщает, что это самая мощная консоль, которая может похвастаться производительностью в 6,6 Терафлопс. Это действительно самая мощная приставка на данный момент из когда-либо созданных, и ресурс Gamespot решил наглядно показать это на цифрах.
Журналисты портала Gamespot провели интересное сравнение консолей по производительности в терафлопсах. Первым делом стоит отметить, что в терафлопсах, а также в гигафлопсах, измеряется максимальный графический потенциал консоли. В гигафлопс входит один миллиард флопс, а в терафлопс входит один триллион флопс. Для вычисления количества терафлопс графического процессора число параллельных ядер обработки GPU умножается на пиковую тактовую частоту в мегагерцах, умножается на два, и делится на 1 миллион. Цифра два в данном случае появляется из предположения того, что за цикл графический процессор может выполнять две операции.
Пример расчета для Xbox One:
Графический чип имеет 768 параллельных процессорных ядер. Максимальная частота графического ядра составляет 853 Мгц. Мы умножаем 768 на 853, потом умножаем на 2 и делим на 1 миллион. Получается 1,31 Терафлопс.
А теперь о самом сравнении консолей, которое провели журналисты ресурса Gamespot. Следующей мощностью обладали самые популярные консоли последних лет:
Консоль | FLOPS | Дата выхода |
Dreamcast | 1.4 GFLOPS | 1998 |
PlayStation 2 | 6.2 GFLOPS | 2000 |
GameCube | 9.4 GFLOPS | 2001 |
Xbox | 20 GFLOPS | 2001 |
Xbox 360 | 240 GFLOPS | 2005 |
PlayStation 3 | 230.4 GFLOPS | 2006 |
Wii | 12 GFLOPS | 2006 |
Wii U | 352.0 GFLOPS | 2012 |
PlayStation 4 | 1.843 TFLOPS | 2013 |
Xbox One | 1.310 TFLOPS | 2013 |
Xbox One S | 1.4 TFLOPS | 2016 |
PlayStation 4 Pro | 4.2 TFLOPS | 2016 |
Nintendo Switch | 1 TFLOPS | 2017 |
Xbox One X | 6 TFLOPS | 2017 |
Следующим образом это выглядит на инфографике:
Как и зачем мерить FLOPSы
Как известно, FLOPS – это единица измерения вычислительной мощности компьютеров в (
попугаях) операциях с плавающей точкой, которой часто пользуются, чтобы померить у кого больше. Особенно важно померяться FLOPS’ами в мире Top500 суперкомпьютеров, чтобы выяснить, кто же среди них самый-самый. Однако, предмет измерения должен иметь хоть какое-нибудь применение на практике, иначе какой смысл его замерять и сравнивать. Поэтому для выяснения возможностей супер- и просто компьютеров существуют чуть более приближенные к реальным вычислительным задачам бенчмарки, например, SPEC: SPECint и SPECfp. И, тем не менее, FLOPS активно используется в оценках производительности и публикуется в отчетах. Для его измерения давно уже использовали тест Linpack, а сейчас применяют открытый стандартный бенчмарк из LAPACK. Что эти измерения дают разработчикам высокопроизводительных и научных приложений? Можно ли легко оценить производительность реализации своего алгоритма в FLOPSaх? Будут ли измерения и сравнения корректными? Обо всем этом мы поговорим ниже.
Давайте сначала немного разберемся с терминами и определениями. Итак, FLOPS – это количество вычислительных операций или инструкций, выполняемых над операндами с плавающей точкой (FP) в секунду. Здесь используется слово «вычислительных», так как микропроцессор умеет выполнять и другие инструкции с такими операндами, например, загрузку из памяти. Такие операции не несут полезной вычислительной нагрузки и поэтому не учитываются.
Значение FLOPS, опубликованное для конкретной системы, – это характеристика прежде всего самого компьютера, а не программы. Ее можно получить двумя способами – теоретическим и практическим. Теоретически мы знаем сколько микропроцессоров в системе и сколько исполняемых устройств с плавающей точкой в каждом процессоре. Все они могут работать одновременно и начинать работу над следующей инструкцией в конвеере каждый цикл. Поэтому для подсчета теоретического максимума для данной системы нам нужно только перемножить все эти величины с частотой процессора – получим количество FP операций в секунду. Все просто, но такими оценками пользуются, разве что заявляя в прессе о будущих планах по построению суперкомпьютера.
Практическое измерение заключается в запуске бенчмарка Linpack. Бенчмарк осуществляет операцию умножения матрицы на матрицу несколько десятков раз и вычисляет усредненное значение времени выполнения теста. Так как количество FP операций в имплементации алгоритма известно заранее, то разделив одно значение на другое, получим искомое FLOPS. Библиотека Intel MKL (Math Kernel Library) содержит пакет LAPAСK, — пакет библиотек для решения задач линейной алгебры. Бенчмарк построен на основе этого пакета. Cчитается, что его эффективность находится на уровне 90% от теоретически возможной, что позволяет бенчмарку считаться «эталонным измерением». Отдельно Intel Optimized LINPACK Benchmark для Windows, Linux и MacOS можно качать здесь, либо взять в директории composerxe/mkl/benchmarks, если у вас установлена Intel Parallel Studio XE.
Очевидно, что разработчики высокопроизводительных приложений хотели бы оценить эффективность имплементации своих алгоритмов, используя показатель FLOPS, но уже померянный для своего приложения. Сравнение измеренного FLOPS с «эталонным» дает представление о том, насколько далека производительность их алгоритма от идеальной и каков теоретический потенциал ее улучшения. Для этого всего-навсего нужно знать минимальное количество FP операций, требуемое для выполнения алгоритма, и точно измерить время выполнения программы (ну или ее части, выполняющей оцениваемый алгоритм). Такие результаты, наряду с измерениями характеристик шины памяти, нужны для того, чтобы понять, где реализация алгоритма упирается в возможности аппаратной системы и что является лимитирующим фактором: пропускная способность памяти, задержки передачи данных, производительность алгоритма, либо системы.
Ну а теперь давайте покопаемся в деталях, в которых, как известно, все зло. У нас есть три оценки/измерения FLOPS: теоретическая, бенчмарк и программа. Рассмотрим особенности вычисления FLOPS для каждого случая.
Теоретическая оценка FLOPS для системы
Чтобы понять, как подсчитывается количество одновременных операций в процессоре, давайте взглянем на устройство блока out-of-order в конвеере процессора Intel Sandy Bridge.
Здесь у нас 6 портов к вычислительным устройствам, при этом, за один цикл (или такт процессора) диспетчером может быть назначено на выполнение до 6 микроопераций: 3 операции с памятью и 3 вычислительные. Одновременно могут выполняться одна операция умножения (MUL ) и одна сложения (ADD ), как в блоках x87 FP, так и в SSE, либо AVX. С учетом ширины SIMD регистров 256 бит мы может получить следующие результаты:
8 MUL (32-bit) и 8 ADD (32-bit): 16 SP FLOP/cycle, то есть 16 операций с плавающей точкой одинарной точности за один такт.
4 MUL (64-bit) и 4 ADD (64-bit): 8 DP FLOP/cycle, то есть 8 операций с плавающей точкой двойной точности за один такт.
Теоретическое пиковое значение FLOPS для доступного мне 1-сокетного Xeon E3-1275 (4 cores @ 3.574GHz) составляет:
16 (FLOP/cycle)*4*3.574 (Gcycles/sec)= 228 GFLOPS SP
8 (FLOP/cycle)*4*3.574 (Gcycles/sec)= 114 GFLOPS DP
Запуск бенчмарка Linpack
Запускам бенчмарк из пакета Intel MKL на системе и получаем следующие результаты (порезано для удобства просмотра):
Здесь нужно сказать, как именно учитываются FP операции в бенчмарке. Как уже упоминалось, тест заранее «знает» количество операций MUL и ADD, которые необходимы для перемножения матриц. В упрощенном представлении: производится решение системы линейных уравнений Ax=b (несколько тысяч штук) путем перемножения плотных матриц действительных чисел (real8) размером MxK, а количество операций сложения и умножения, необходимых для реализации алгоритма, считается (для симметричной матрицы) Nflop = 2*(M^3)+(M^2). Вычисления производятся для чисел с двойной точностью, как и для большинства бенчмарков. Сколько операций с плавающей точкой действительно выполняется в реализации алгоритма, пользователей не волнует, хотя они догадываются, что больше. Это связано с тем, что выполняется декомпозиция матриц по блокам и преобразование (факторизация) для достижения максимальной производительности алгоритма на вычислительной платформе. То есть нам нужно запомнить, что на самом деле значение физических FLOPS занижено за счет неучитывания лишних операций преобразования и вспомогательных операций типа сдвигов.
Оценка FLOPS программы
Чтобы исследовать соизмеримые результаты, в качестве нашего высокопроизводительного приложения будем использовать пример перемножения матриц, сделанный «своими руками», то есть без помощи математических гуру из команды разработчиков MKL Performance Library. Пример реализации перемножения матриц, написанный на языке С, можно найти в директории Samples пакета Intel VTune Amplifier XE. Воспользуемся формулой Nflop=2*(M^3) для подсчета FP операций (исходя из базового алгоритма перемножения матриц) и померим время выполнения перемножения для случая алгоритма multiply3 при размере симметричных матриц M=4096. Для того, чтобы получить эффективный код, используем опции оптимизации –O3 (агрессивная оптимизация циклов) и –xavx (использовать инструкции AVX) С-компилятора Intel для того, чтобы сгенерировались векторные SIMD-инструкции для исполнительных устройств AVX. Компилятор нам поможет узнать, векторизовался ли цикл перемножения матрицы. Для этого укажем опцию –vec-report3. В результатах компиляции видим сообщения оптимизатора: «LOOP WAS VECTORIZED» напротив строки с телом внутреннего цикла в файле multiply.c.
На всякий случай проверим, какие инструкции сгенерированы компилятором для цикла перемножения.
$icl –g –O3 –xavx –S
По тэгу __tag_value_multiply3 ищем нужный цикл — инструкции правильные.
$vi muliply3.s
Результат выполнения программы (
7 секунд)
нам дает следующее значение FLOPS = 2*4096*4096*4096/7[s] = 19.6 GFLOPS
Результат, конечно, очень далек от того, что получается в Linpack, что объясняется исключительно квалификционной пропастью между автором статьи и разработчиками библиотеки MKL.
Ну, а теперь дессерт! Собственно то, ради чего я затеял свое исследование этой, вроде бы скучной и давно избитой, темы. Новый метод измерения FLOPS.
Измерение FLOPS программы
Существуют задачи в линейной алгебре, программную имплементацию решения которых очень сложно оценить в количестве FP операций, в том смысле, что нахождение такой оценки само является нетривиальной математической задачей. И тут мы, что называется, приехали. Как считать FLOPS для программы? Есть два пути, оба экспериментальных: трудный, дающий точный результат, и легкий, но обеспечивающий приблизительную оценку. В первом случае нам придется взять некую базовую программную имплементацию решения задачи, скомпилировать ее в ассемблерные инструкции и, выполнив их на симуляторе процессора, посчитать количество FP операций. Звучит так, что резко хочется пойти легким, но недостоверным путем. Тем более, что если ветвление исполнения задачи будет зависеть от входных данных, то вся точность оценки сразу поставится под сомнение.
Идея легкого пути состоит в следующем. Почему бы не спросить сам процессор, сколько он выполнил FP инструкций. Процессорный конвеер, конечно же, об этом не ведает. Зато у нас есть счетчики производительности (PMU – вот тут про них интересно), которые умеют считать, сколько микроопераций было выполнено на том или ином вычислительном блоке. С такими счетчиками умеет работать VTune Amplifier XE.
Несмотря на то, что VTune имеет множество встроенных профилей, специального профиля для измерения FLOPS у него пока нет. Но никто не мешает нам создать наш собственный пользовательский профиль за 30 секунд. Не утруждая вас основами работы с интерфейсом VTune (их можно изучить в прилагающимся к нему Getting Started Tutorial), сразу опишу процесс создания профиля и сбора данных.
Далее мы просто подсчитываем значения FLOPS по формулам. Данные у нас были собраны для всех процессоров, поэтому умножение на их количество здесь не требуется. Операции данными двойной точности выполняются одновременно над четырмя 64-битными DP операндами в 256-битном регистре, поэтому умножаем на коэффициент 4. Данные с одинарной точностью, соответственно, умножаем на 8. В последней формуле не умножаем количество инструкций на коэффициент, так как операции сопроцессора x87 выполняются только со скалярными величинами. Если в программе выполняется несколько разных типов FP операций, то их количество, умноженное на коэффициенты, суммируется для получения результирующего FLOPS.
FLOPS = 4 * SIMD_FP_256.PACKED_DOUBLE / Elapsed Time
FLOPS = 8 * SIMD_FP_256.PACKED_SINGLE / Elapsed Time
FLOPS = (FP_COMP_OPS_EXE.x87) / Elapsed Time
В нашей программе выполнялись только AVX инструкции, поэтому в результатах есть значение только одного счетчика SIMD_FP_256.PACKED_DOUBLE.
Удостоверимся, что данные события собраны для нашего цикла в функции multiply3 (переключившись в Source View):
FLOPS = 4 *34.6Gops/7s = 19.7 GFlops
Значение вполне соответствует оценочному, подсчитанному в предыдущем пункте. Поэтому с достаточной долей точности можно говорить о том, что результаты оценочного метода и измерительного совпадают. Однако, существуют случаи, когда они могут не совпадать. При определенном интересе читателей, я могу заняться их исследованием и рассказать, как использовать более сложные и точные методы. А взамен очень хочется услышать о ваших случаях, когда вам требуется измерение FLOPS в программах.
Заключение
FLOPS – единица измерения производительности вычислительных систем, которая характеризует максимальную вычислительную мощность самой системы для операций с плавающей точкой. FLOPS может быть заявлена как теоретическая, для еще не существующих систем, так и измерена с помощью бенчмарков. Разработчики высокопроизводительных программ, в частности, решателей систем линейных дифференциальных уравнений, оценивают производительность реализации своих алгоритмов в том числе и по значению FLOPS программы, вычисленному с помощью теоретически/эмпирически известного количества FP операций, необходимых для выполнения алгоритма, и измеренному времени выполнения теста. Для случаев, когда сложность алгоритма не позволяет оценить количество FP операций алгоритма, их можно измерить с помощью счетчиков производительности, встроенных в микропроцессоры Intel.