Bolt
1.1
C++ template library with support for OpenCL
|
Bolt is a runtime library that also contains dependencies on other runtimes. For instance, if the project is built with the OpenCL ™ backend, Bolt contains a dependency on the OpenCL ™ runtime. If the project is built with the AMP backend, Bolt contains a dependency on the AMP runtime. Likewise for a project that wishes Bolt to use TBB support. Each of these runtimes includes DLLs that must be found on the machine that is executing at runtime. For each backend Bolt provides, instructions are provided to help Bolt users understand what the dependencies are and how to properly package an application to resolve all runtime dependencies.
A Bolt application that is built with the OpenCL backend will have a runtime dependency on OpenCL.dll, which is the ICD library provided by the Khronos Group. More information about the ICD file is available at http://www.khronos.org/registry/cl/. When a Bolt application executes, the ICD is expected to be found on the users machine or else the Bolt application will fail to load and the OS will provide an exception message stating that the .DLL is missing. The ICD file is typically installed on user's computers through the AMD CatalystTM software package; more information can found at http://www.amd.com/us/products/technologies/amd-catalyst/pages/catalyst.aspx .
If the Bolt application can require that the AMD Catalyst software be installed on all user machines, no further action is necessary. The OpenCL.dll will be pre-installed on user's machines. However, if this guarantee cannot be made, then it must be the responsibility for the Bolt application to bundle the OpenCL.dll into the Bolt package. This is required even if Bolt is only expected to run on CPU cores, because Bolt needs OpenCL.dll to query the platform to determine if any heterogeneous cores are available. TBB support is discussed in the TBB section of this document.
A Bolt application that is built with the AMP backend will have a runtime dependency on vcamp110.dll, which is runtime component of Microsoft's C++AMP runtime. Further information can be found in this blog entry http://blogs.msdn.com/b/nativeconcurrency/archive/2012/03/12/deploying-apps-built-with-c-amp.aspx. The recommended solution from the blog is to install the Visual Studio redistributable package on the target machine. As no current operations systems by Microsoft deploys with this file pre-installed at this time, if the Bolt application can require that Visual Studio 2012 be present on the users machine, then no further action is necessary. However, if this guarantee cannot be made, then it must be the responsibility for the Bolt applications installer to either install the correct Visual Studio redistributable or do prompt the user to do so. Failure to do so will cause the Bolt application to fail to load and the OS will provide an exception message stating that the .DLL is missing.
TBB can optionally be built into Bolt, such that the Bolt application can split the work across the homogeneous CPU cores. If Bolt is built with the optional TBB, a runtime dependency is created with TBB.dll or TBB_debug.dll, depending on the build configuration. TBB cannot in general be expected to be on any user's machine, so it must be the responsibility for the Bolt application to bundle the TBB dependencies into the Bolt package. TBB is provided as both open source or with a commercial license attached. More information about TBB can be found at http://threadingbuildingblocks.org/