AMD Fusion 11 Developer Summit - как это было, ч.2

AMD_AFDS_logo3

Это продолжение рассказа про конференцию AMD Fusion 11 Developer Summit, которая прошла на прошлой неделе в городе Белвью, США. Начало рассказа можно прочитать здесь (в сокращенной технической форме) или здесь (начало и продолжение в расширенной личной форме).

В первой части рассказа я говорил про первые дни конференции, пленарные доклады компаний AMD и ARM, новые технологии и продукты, представленные на конференции. В этой части рассказа речь пойдет про второй день конференции, пленарный доклад компании Microsoft и анонс технологии С++ AMP.

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

Второй день конференции начался с пленарного доклада Microsoft на тему технологий гетерогенных и параллельных вычислений. Доклад читал Герб Саттер, один из архитекторов продуктов в компании.

Пленарный доклад Microsoft

WP_000301 WP_000310

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

WP_000313 WP_000318

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

WP_000325 WP_000330

После этого был сделан большой анонс новой платформы разработки гетерогенных приложений С++ AMP. Я уже писал по про этот анонс по горячим следам. Если коротко, то С++ AMP – это открытая инициатива Microsoft по созданию для языка С++ полных возможностей работы в гетерогенной среде с возможностью однообразного использования всех доступных аппаратных мощностей: APU, CPU, GPU.

C++ AMP – это небольшой набор расширений для языка С++ (функций, типов данных), который позволяет использовать мощности параллельного гетерогенного программирования любому разработчику на С++ без долгого изучения каких либо специальных технологий. Платформа С++ AMP основывается на новом стандарте С++ и использует лямбда-выражения. Она будет включена в следующую версию среды разработки Microsoft Visual Studio.

WP_000333 image

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

WP_000338 image

WP_000344 image

После эффектной демонстрации пленарный доклад продолжился рассказом про новую платформу С++ AMP. Были высказаны основные причины создания библиотеки:

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

image 

Далее прозвучал анонс о том, что новая платформа станет частью Visual Studio следующего поколения, платформа будет выпущена под открытой спецификацией и Microsoft приложит усилия в реализации данной платформы другими вендорами.

Еще одним крупным анонсом этого пленарного доклада стал анонс инструментов редактирования, отладки, профилирования кода на GPU в следующей версии Visual Studio.

 image

На этом пленарный доклад компании Microsoft был завершен. Для прессы последовала сессия вопросов и ответов, на которой Герб Саттер отвечал на конкретные вопросы. Я задал интересующий меня вопрос по поводу реализации платформы С++ AMP или ее подобия для управляемого кода, для платформы .NET. На что получил ответ, что компании пока нечего анонсировать в этом плане. А использование С++ AMP в управляемом коде доступно точно так же как и любой неуправляемый код, например, через P/Invoke.

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

Доклады

После пленарного доклада и серии вопросов и ответов я решил посетить отмеченные заранее доклады. Первым был доклад Developing Scalable Applications with Microsoft’s C++ Concurrency Runtime, на котором подробно освещались возможности Visual Studio 2010, Visual C++ и Parallel Patterns Library по созданию параллельных и асинхронных приложений.

На этой сессии рассказывалось про инструменты и опыт разработчиков по их созданию. Демонстрировались примеры использования для разработки эффективных параллельных приложений, их отладки и профилирования в Visual Studio 2010.

WP_000378 image

После этого доклада я попал на доклад The Future of Parallel and Asynchronous Programming with the .NET Framework, в котором рассказывалось про инструменты параллельной разработки уже для управляемого кода. Доклад освещал две новые библиотеки написания параллельного и асинхронного кода для .NET: TPL и TDL Dataflow.

WP_000386 WP_000388

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

Вообще чтобы оценить размах и степень насыщенности конференции AMD Fusion 11 техническими докладами стоит взглянуть на их список хотя бы за один день:

  • Face Detection: Performance Opportunities for CPU-GPU Kernel Migration in Fusion Architecture
  • Next-Generation Matrix 3D Immersive User Interface
  • GPU Accelerated Databases
  • Using the AMD FirePro V9800 to Accelerate EDEM Simulations
  • APU/GPGPU-Based Security Solutions
  • The Future of Parallel and Asynchronous Programming with the .NET Framework
  • Towards High-Productivity on Heterogeneous Systems
  • Multi-GPUs, OpenCL, and Graphics Programming
  • Advanced Rendering Effects Using OpenCL and APU
  • Altair RADIOSS Solver Porting Using an AMD GPU
  • High Performance Video Processing for Military Applications
  • Computer Vision Acceleration Using GPUs
  • Leveraging Hybrid Computing: Challenges and Opportunities for the PLM Industry
  • The Next Generation of Richly Interactive, Multi-device Applications
  • Gesture Control and Motion Capture Interfaces
  • Developing Scalable Applications with Microsoft’s C++ Concurrency Runtime
  • Computational Challenges in Image Retrieval
  • Gestural and Cinematic interfaces
  • GPU Processing for Video Enhancement and Stereo Conversion
  • Advanced Graphics Functionality on Windows Using DirectX
  • Blazing-fast code using GPUs and more, with Microsoft Visual C++
  • Natural, Analog Interactions with Surface Computing, Depth Cameras and Beyond
  • The SHOC Benchmark Suite // Performance Analysis of AMD Multi-core Processor and Graphical Processing Units // Architecture-Aware Mapping and Optimization of a 1600-Core GPU
  • Heterogeneous Computing Topics: Simplified CPU-GPU Logical Data Sharing // HMTS-A Parallel Building Block Library // Advanced OpenCL Debugging and Profiling - A Case Study
  • Scaling DGEMM to Multiple Cayman GPUs and Interlagos Many-core CPUs for HPL // Optimizing SpMV for Diagonal Sparse Matrices On OpenCL
  • Heterogeneous Computing with Multi-core Processors, GPUs and FPGAs // Braided Parallelism for Heterogeneous Systems // Making OpenCL Simple with Haskell
  • Find a Face: OpenCl Persistent Threads, Queues, Workload Rebalancing and Other Pursuits. // GPU Accelerated Face Recognition in Photo and Video Using OpenCL
  • Aparapi: Java’s ‘Write Once Run Anywhere’ Now Includes the GPU
  • Heterogeneous Computing for Finance Using Mathematica and OpenCL // The MOSIX Virtual OpenCL (VCL) Cluster Platform // Fast Fourier Transform on AMD GPUs

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

Пленарный доклад Corel

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

image image

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

Подробный доклад про C++ AMP

После пленарного доклада Corel я с удовольствием и интересом посетил подробную техническую презентацию новой платформы С++ AMP. На ней Дениел Мот рассказывал разные подробности о платформе и раскрывал секреты ее работы.

WP_000411 WP_000413

Впечатляющая демонстрация расчета взаимодействия тел на С++ AMP была показана и здесь, но уже с новыми цифрами: 1522 гигафлопс на десктопе с низким потреблением CPU.

image image

В ходе презентации сравнивались CPU и GPU сегодня:

WP_000416 WP_000419

И наконец, были озвучены детали C++ AMP c примерами кода.

image image

Были показаны новые типы данных представленные в платформе для работы с массивами данных в гетерогенной среде.

image image image image

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

image 

Microsoft для новой платформы гетерогенных вычислений предлагает новое расширение языка, позволяющее указывать ограничения по выполнению кода на определенных платформах. Это нововведение – единственное расширение языка в новой платформе. Разработчик может явно указать на какую платформу он ориентируется в своем коде. Например, это может быть direct3d, cpu или другие ключевые слова описывающие то, где должен выполняться требуемый код. Благодаря этому расширению компиляторы смогут правильно перевести код в требуемый вид для выполнения на нужных мощностях (APU, CPU, GPU, облако).

image image

Далее пошли примеры использования C++ AMP. Перемножение матриц на GPU в C++ программе:

image

Как можно заметить код незначительно увеличивается по сравнению со старым последовательным кодом. Это одно из преимуществ и целей C++ AMP – легкость вхождения для разработчиков и простота использования.

Всего C++ AMP добавляет следующие элементы:

 image 

Для более производительных расчетов и использования специфических особенностей вычислений на GPU будут введены типы для оперирования фрагментами данных.

image image

После рассказа о C++ AMP было еще раз сказано о появлении в следующей версии Visual Studio расширений по работе, профилированию и отладке GPU и гетерогенного кода.

image image

Итоги доклада:

WP_000446

Больше информации о C++ AMP можно получить по следующим ссылкам:

После конференции

После завершения второго дня конференции у меня было некоторое время для прогулок по городу. А затем нас ждала интересная поездка на бейсбольный матч на стадион Safeco Field в Сиэтле.

Хотел бы обратить ваше внимание на остановки в Белвью. По моему очень классно сделано: большие высокие крыши, классная инфографика на щитах и досках объявлений. Еще очень понравилось наличие на каждом перекрестке кнопки запроса зеленого цвета для каждого пути. Эти кнопки находятся на столбах стоящих на перекрестках.

WP_000447

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

Результатом моего похода по городу стало неожиданное приобретение гибридного планшета Acer Iconia Tab W500.

image

Планшет обошелся мне в $600 включая налоги. По итогам недельного использования я остаюсь им очень доволен, но это история для отдельного рассказа.

День завершился для нас (прессы) организованной поездкой на бейсбольный матч между местной командой из Сиэтла Seattle Mariners и командой Los Angeles Angels. Матч проводился на стадионе Safeco Field в Сиэтле.

WP_000448 WP_000452

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

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

И должен сказать, бейсбол – это невыносимо унылая игра. Большую часть времени на поле не происходит ничего, игроки меняют друг-друга, кидаются мячи и их пытаются отбить. Если вы думаете, что отбить мяч просто, то это совсем не так. Хорошо, если будет отбит каждый десятый мяч и хорошо, если хотя бы половина отбиваний будет выполнена в поле, а не на трибуны. Вам приходится минут 15 ждать пока что-то произойдет в бейсболе. И даже после этого момент действия длится в лучшем случае 30 секунд. В общем, я не понял этой игры, слишком уж мало в ней действий.

WP_000455 WP_000467

Впрочем, несмотря на унылое действие игры “наши” победили. На том все и закончилось.

День подошел к концу. Через 6 часов меня ждал самолет до Нью-Йорка, затем в Москву, затем в Екатеринбург. До свидания, Белвью.

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

WP_000478 WP_000474

Самолет мне понравился, шум, уровень кондиционирования на таком же или лучшем уровне по сравнению с Boeing 737 и соответствующем Airbus. Зато расстояние между креслами у Сухого несколько больше, так что мои колени чувствовали себя гораздо лучше в SuperJet 100, чем в 737. В общем самолет хороший, я рад за нашу страну.

Заключение

На этом я хотел бы завершить свой рассказ про конференцию AMD Fusion 11. Мероприятие получилось очень насыщенным, отлично организованным, крайне интересным для разработчиков. На конференции была представлена масса материала и много интересных анонсов. Я участвовал в конференции в качестве прессы, но уверен, что разработчики, которые посетили ее остались в восторге. Достаточно лишь ознакомиться со списком докладов подготовленных для них, чтобы оценить высокий уровень конференции.

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