Bolt Open Sourced to make Compute acceleration easy to use, cross platform and future proof
For the many of you who have already been using Bolt, and for those of you who have yet to dabble, let me introduce you to the Bolt Beta. Bolt is all about improving accessibility to compute acceleration and open-sourcing the Beta represents a major step forward in this direction. With Bolt, you don’t have to be a “Ninja” programmer to get the benefits of compute acceleration! C++ (and OpenCL) developers everywhere can now easily embed accelerated compute kernels directly into their C++ source files.
Bolt provides an STL compatible library of high level constructs for creating accelerated data parallel applications. Code written using STL or other STL compatible libraries (example: TBB) can be converted to Bolt in minutes. In its open-source debut, Bolt supports C++ AMP in addition to OpenCL™ as underlying supported compute technologies. With Bolt, kernel code to be accelerated is written in-line in the C++ source file. No OpenCL™ or C++ AMP API calls are required since all initialization of and communication with the OpenCL™ or C++ AMP device is handled by the library.
By being independent of underlying compute technologies, Bolt is architected to be both cross-platform and future proof! With Bolt you will need just one code path. If the platform executing your application supports accelerated compute using C++ AMP or OpenCL™, Bolt will use it1. If not, Bolt will use the CPU. There is no need to write a separate code path to fall back to the CPU. Using Bolt instead of TBB gets you the best of both worlds! Also, by developing your applications now using Bolt, they will work transparently and and fully take advantage of compute acceleration in future HSA platforms.
In addition to adding support for C++ AMP and CPU-only systems, the Bolt Beta also broadens the array of Bolt capabilities by including support for additional iterators, sort, and scan operations. Additionally you will find performance improvements, and we will continue to improve performance throughout the Beta phase.
AMD is committed to open standards and open software, and as promised back in our developer summit last year (AFDS 2012), we have made Bolt available as an open source community project. We did this as soon as possible at a Beta stage to promote early usage, invite developer feedback and motivate contributions to the project. We feel this will accelerate Bolt’s evolution by keeping it tightly aligned with developer needs and actual usage thus helping achieve its full value. Of course AMD will continue to actively drive contributions and manage the project. The source to Bolt is now available on the open source social programming platform GitHub: https://github.com/HSA-Libraries/Bolt
We welcome the community to help build the Bolt ecosystem by becoming a contributor to the Bolt project. We also invite you to help promote Bolt by submitting Bolt sample application code to the samples repository on GitHub. We’re looking for well written example code that highlights Bolt’s ability to deliver high performance with ease of programming. As a special thank-you for contributing compelling samples, AMD will be evaluating contributions to identify samples that can be used in developer SDKs and promotional campaigns. If your contribution is selected, you will receive a gift (a laptop computer with an AMD APU) and have an opportunity to showcase your work to the Heterogeneous Compute developer community. See here for rules and additional details.
Bolt represents a big step toward AMD’s ultimate vision of making heterogeneous computing a ubiquitous, easy to use component of all mainstream programming environments. Here is your chance to be part of this industry movement by joining the Beta program, contributing to the open source project and developing innovative accelerated applications using Bolt! And as always, please send us your feedback and code with us to take Bolt to the next level.
1 Selection of C++ AMP or OpenCL™ as the underlying compute technology is made at development time.
Marty Johnson is a Director of Product Management at AMD. His postings are his own opinions and may not represent AMD’s positions, strategies or opinions. Links to third party sites, and references to third party trademarks, are provided for convenience and illustrative purposes only. Unless explicitly stated, AMD is not responsible for the contents of such links, and no third party endorsement of AMD or any of its products is implied.