25 June 2011

AMD Fusion 11 Developer Summit — как это было, ч.2 (подробности о платформе C++ AMP)

CPU
второй день конференции, подробности про платформу C++ AMP, очень много картинок

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 можно получить по следующим ссылкам:

Заключение


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

Хотелось бы поблагодарить компанию AMD, как за саму конференцию так и за шанс побывать на ней лично. На сайте конференции уже есть форма для получения новостей о следующей конференции в будущем году. Я подписался, уверен будет очень круто.
Tags:amdamd fusionamd fusion summitgpuгетерогенные вычисленияmicrosoftC++C++ AMP
Hubs: CPU
+25
1.3k 6
Comments 7
Popular right now
C++ Developer
from 130,000 to 180,000 ₽QuadcodeСанкт-Петербург
Разработчик C++
from 90,000 ₽ТакскомМосква
C++ разработчик
from 80,000 ₽TRUSTSOFTКраснодар
Разработчик C++/Python
from 120,000 to 170,000 ₽L3 TechnologiesМосква
Senior C++/Python Developer
from 2,800 to 3,200 $Nitka Technologies, Inc.Remote job