📜 ⬆️ ⬇️

AMD Fusion 11 Developer Summit - as it was, part 2 (details about the C ++ AMP platform)

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

AMD_AFDS_logo3

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


WP_000301WP_000310

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.

WP_000313WP_000318

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

WP_000325WP_000330

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.

WP_000333image

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.

WP_000338image

WP_000344image

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:image

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.

image

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.

WP_000378image

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.

WP_000386WP_000388

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: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.

imageimage

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.

WP_000411WP_000413

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.

imageimage

During the presentation, CPU and GPU were compared today:

WP_000416WP_000419

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

imageimage

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

imageimageimageimage

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

image

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).

imageimage

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

image

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:

image

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

imageimage

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.

imageimage

Results of the report:

WP_000446

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.

Source: https://habr.com/ru/post/122679/


All Articles