second day of the conference, details about the platform C ++ AMP, a lot of pictures

This is a continuation of the story about the
AMD Fusion 11 Developer Summit conference, which was held last week in Bellevue, USA. The beginning of the story can be read
here (in abbreviated technical form) or here (the
beginning and
continuation in the expanded personal form).
In the first part of the story I talked about the first days of the conference, plenary reports of AMD and ARM companies, new technologies and products presented at the conference. In this part of the story we will discuss the second day of the conference, the plenary report of Microsoft and the announcement of C ++ AMP technology.
')
This is an abbreviated version of my conference report. Here you will find only information about the event, announcements and technologies. If you are interested in my personal feelings, thoughts and other extraneous information about the trip, then follow
this link to a more advanced version of the article.
The second day of the conference began with a Microsoft plenary report on heterogeneous and parallel computing technologies. The report was read by Gerb Satter, one of the product architects at the company.
Microsoft Plenary Report


The main topic of the report was the evolution of computing and the current state of development, when huge computational capacities consisting of multicore CPUs and GPUs appeared in users' computers. Microsoft is confident that the future of development is the efficient use of heterogeneous resources. At the same time, according to Satter, there is no need to consider different trends: multicore CPUs, GPGPU and cloud computing separately. There is only one trend - heterogeneous parallel computing, that is, the consumption of all resources available on the platform, regardless of its type: phone, tablet, laptop, computer or cloud.


Sutter talked a lot about the current state of the hardware and current programming languages and models.


After that, a big announcement was made of a new platform for developing heterogeneous C ++ AMP applications. I already wrote about this announcement in hot pursuit. In short, C ++ AMP is Microsoft’s open initiative to create full possibilities for working in a heterogeneous environment for C ++, with the possibility of uniform use of all available hardware capacities: APU, CPU, GPU.
C ++ AMP is a small set of extensions for the C ++ language (functions, data types), which allows using the power of parallel heterogeneous programming to any C ++ developer without a long study of any special technologies. The C ++ AMP platform is based on the new C ++ standard and uses lambda expressions. It will be included in the next version of the Microsoft Visual Studio development environment.


During the plenary report demonstrated the practical application of C ++ AMP. For the demonstration, we used simulation of the interaction of particles with each other. With the help of C ++ AMP, outstanding results were demonstrated, so on a regular laptop with a discrete video card tens of gigaflops were obtained. A more powerful desktop system equipped with two video cards made it possible to get the same code with much more power, about 815 gigaflops.




After a spectacular demonstration, the plenary report continued with a story about the new C ++ AMP platform. The main reasons for creating the library were expressed:
- C ++ (and not C) as the most common language for creating application applications;
- heterogeneous computing should become mainstream, accessible to all;
- minimal language extension for ease of entry;
- portability, one code consumes all possible resources available on the platform where it is launched;
- aiming for the future, the platform is designed for the future and cloud computing, when the developers of the future will have access to hundreds of millions of computing GPU units in the cloud;
- open specification.

Next came the announcement that the new platform will be part of the next-generation Visual Studio, the platform will be released under the open specification and Microsoft will make efforts to implement this platform by other vendors.
Another major announcement of this plenary report was the announcement of editing tools, debugging, profiling code on the GPU in the next version of Visual Studio.

This is where Microsoft’s plenary report was completed. For the press, followed by a question and answer session, at which Herb Sutter answered specific questions. I asked a question that interests me about the implementation of the C ++ AMP platform or its similarity for managed code, for the .NET platform. To which he received the answer that the company has nothing to announce in this regard. And the use of C ++ AMP in managed code is available in the same way as any unmanaged code, for example, through P / Invoke.
For the most interested developers, Microsoft organized a private demonstration of new development tools, which could be visited by signing a non-disclosure agreement. At this demonstration, anyone could try the new tools themselves in action and leave their feedback and share their impressions with the developers from Microsoft.
Reports
After the plenary report and a series of questions and answers, I decided to visit the reports noted in advance. The first was the report Developing Scalable Applications with Microsoft's C ++ Concurrency Runtime, which covered in detail the capabilities of Visual Studio 2010, Visual C ++ and Parallel Patterns Library to create parallel and asynchronous applications.
This session was about the tools and experience of developers to create them. Demonstrated use cases for developing effective parallel applications, debugging and profiling them in Visual Studio 2010.


After this report, I got to the report The Future of Parallel and Asynchronous Programming with the .NET Framework, which told about parallel development tools already for managed code. The report covered two new libraries for writing parallel and asynchronous code for .NET: TPL and TDL Dataflow.


Both reports were moderately technical and moderately popular so that they could be understood by developers who did not deal with parallel programming before. I like it.
In general, to evaluate the scope and degree of saturation of the AMD Fusion 11 conference, technical reports should look at their list at least in one day:
- Face Detection: CPU Optics 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
- 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 // 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 for Multiple Cayman GPUs and Interlagos Multi-core CPUs for HPL // Optimizing SpMV for Diagonal Sparse Matrices On OpenCL
- 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
- Cluster Platform // The MOSIX Virtual OpenCL (VCL) Cluster Platform // Fast Fourier Transform on AMD GPUs
Just a wealth of information for developers on topics of parallel development, the use of heterogeneous resources, programming on the GPU, and so on. We can safely say that the conference was extremely useful for developers and was focused only on them.
Corel Plenary Report
On the second day of the conference there was another plenary report from Corel. In its report, the company talked about its history and the successful application of image processing optimization technology and OpenCL.


In general, this plenary report was interesting, but did not announce anything loud. You can read it on the conference website at
this address .
Detailed report on C ++ AMP
After the Corel plenary report, I with pleasure and interest attended a detailed technical presentation of the new C ++ AMP platform. On it, Daniel Mot told various details about the platform and revealed the secrets of its work.


An impressive demonstration of the calculation of the interaction of bodies in C ++ AMP was shown here, but with new figures: 1522 gigaflops on a desktop with low CPU consumption.


During the presentation, CPU and GPU were compared today:


Finally, the details of C ++ AMP with code examples were announced.


New data types presented in the platform for working with data files in a heterogeneous environment were shown.




And presented the only new function parallel_for_each, which takes over all the work on the distribution of calculations between the available capacities.

Microsoft for the new heterogeneous computing platform offers a new language extension that allows you to specify restrictions on the execution of code on certain platforms. This innovation is the only extension of the language in the new platform. A developer can explicitly indicate on which platform he orients his code. For example, it could be direct3d, cpu, or other keywords describing where the required code should be executed. Thanks to this extension, compilers will be able to correctly translate the code into the required form for execution at the necessary capacities (APU, CPU, GPU, cloud).


Next came the examples of using C ++ AMP. Matrix multiplication on GPU in C ++ program:

As you can see, the code increases slightly compared to the old sequential code. This is one of the advantages and goals of C ++ AMP - ease of entry for developers and ease of use.
Total C ++ AMP adds the following elements:

For more productive calculations and the use of specific features of calculations on the GPU, types will be introduced for operating data fragments.


After the story about C ++ AMP, it was once again told about the appearance in the next version of Visual Studio of extensions for working, profiling and debugging the GPU and heterogeneous code.


Results of the report:

More information about C ++ AMP can be obtained from the following links:
Conclusion
At this point, I would like to complete my story about the AMD Fusion 11 conference. The event turned out to be very rich, well-organized, and extremely interesting for developers. At the conference was presented a lot of material and many interesting announcements. I participated in the conference as a press, but I am sure that the developers who visited it were delighted. It is enough to get acquainted with the list of reports prepared for them in order to evaluate the high level of the conference.
I would like to thank AMD, both for the conference itself and for the chance to attend it personally. The conference site already has a
form for receiving news about the next conference next year. I signed up, sure will be very cool.