forked from browndeer/coprthr
-
Notifications
You must be signed in to change notification settings - Fork 0
Co-Processing Threads SDK - latest release is v1.4.0 (echo)
License
jar/coprthr
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
COPRTHR version 1.4 (echo) Release Notes Copyright © 2011-2012 Brown Deer Technology, LLC Verbatim copying and distribution of this entire document is permitted in any medium, provided this notice is preserved. ------------------------------------------------------------------------ The CO-PRocessing THReads (COPRTHR) SDK provides several OpenCL related libraries and tools for developers targeting many-core compute technology and hybrid CPU/GPU/APU computing architectures. ------------------------------------------------------------------------ * 1 New in version 1.4 (echo) release * 2 Support and Requirements * 3 Important Notes * 4 Frequently Asked Questions * 5 More Information ------------------------------------------------------------------------ 1 New In Version 1.4 (echo release) * Offline OpenCL compiler supporting a real compilation model (clcc,clld,clnm) - Supports cross-platform multi-device compilation using an open ELF-based specification (CL-ELF) - Compile multiple OpenCL kernel files for multiple devices into a single linkable ELF object file - Redesigned STDCL dynamic loader makes embedded kernels available with a single call * Redesigned OpenCL implementation for x86_64 (libcoprthr) - Eliminates complex dependencies, requires only GCC for compilation - Light-weight, high-performance design faster than vendor SDKs on some HPC benchmarks * OpenCL implementation for multicore ARM processors (libcoprthr) - Includes NEON SIMD instructions with GCC vectorization - Includes full COPRTHR port to Linux Angstrom for embedded processors * Preview of replacement for Khronos ICD loader (libocl) - Open specification with flexible system configuration options - Backward compatibility with libOpenCL.so * Improved build system * Updated examples and documentation * Supports Linux, FreeBSD and Windows 7 with MSVS 2010 * STDCL is tested against AMD SDK v2.4/v2.5, Nvidia CUDA 4.0, and Intel OCL SDK v1.5 ------------------------------------------------------------------------ 2 Support and Requirements Support continues for most modern Linux distributions including CentOS 5/6, and OpenSuSE 11.3. Full support for FreeBSD-8 also continues. The basic functionality provided by the STDCL interface is provided for Windows 7 using MSVS 2010. Specific feature support by operating system is shown in the table below. COPRTHR Feature Description Linux FreeBSD Windows libstdcl STDCL interface x x x libcoprthr OpenCL implementation x x libocl OpenCL platform loader x x clcc,clld,clnm Offline OpenCL compiler x cltrace Tracing tool x x This release is compatible with OpenCL implementations provided by AMD APP v2.4/2.5, Nvidia CUDA-4 and Intel OCL SDK v1.5. In addition, an open-source OpenCL run-time implementation for x86_64 and ARM multi-core processors is provided as part of the COPRTHR SDK, which may be used on platforms for which no vendor support is available. The COPRTHR OpenCL implementation may also be of interest since it exhibits better performance than vendor implementations on some real-world benchmarks. This release supports x86_64 CPUs from AMD and Intel as well as GPUs from AMD and Nvidia, and has been tested successfully on the following graphics cards: AMD Radeon HD 5870, 5970, 6970, AMD FirePro V8800, Nvidia Tesla S1070, C2050, and C2070. AMD A-series APUs are also supported. Support has been extended to include multicore ARM processors running Linux Angstrom. The table below provides a comprehensive matrix of optional and required packages matched to a specific platform and feature set. Please take note that libelf 1.x branch found on most Linux distributions is not a valid substitute for libelf-0.8.13 since they lack the required features and exhibit undocumented broken behavior. *Linux CentOS 5/6, OpenSuSE 11.3* (O) AMD APP v2.4/2.5 (developer.amd.com/sdks/AMDAPPSDK/downloads) (O) Nvidia CUDA 4 (developer.nvidia.com/cuda-toolkit-40) (O) Intel OCL 1.5 (software.intel.com/en-us/articles/vcsource-tools-opencl-sdk) (R) libelf 0.8.13 (www.mr511.de/software/libelf-0.8.13.tar.gz) (R) libssl (www.openssl.org) *FreeBSD-8* (R) libelf 0.8.13 (www.mr511.de/software/libelf-0.8.13.tar.gz) (R) libssl (www.openssl.org) *Windows 7* (O) AMD APP v2.4/2.5 (developer.amd.com/sdks/AMDAPPSDK/downloads) (O) Nvidia CUDA 4 (developer.nvidia.com/cuda-toolkit-40) (O) Intel OCL 1.5 (software.intel.com/en-us/articles/vcsource-tools-opencl-sdk) O=Optional, R=Required ------------------------------------------------------------------------ 3 Important Notes * On Windows 7 platforms the function init_stdcl() must be called to initialize the STDCL API. This call is unnecessary for Linux and FreeBSD, but there is no harm in including it since it will default to an empty macro. * The libraries libstdcl, libcoprthr and libocl are provided with debug versions libstdcl_d, libcoprthr_d and libocl_d, respectively. Linking against these libraries can be very useful for debugging as well as understanding how each library operates. * The platform that you select may not support certain types of devices, e.g., the Nvidia SDK does not suport CPUs. This may cause problems with some configurations. The easiest solution is to disable the context for which no devices are supported, e.g., setting the environment variable STDCPU=0 will cause the runtime to ignore the CPU context. For vendor implementations that incur a non-negligible cost for creating contexts, this can also improve the start-up performance of some applications. * The version of the boost library (1.47.0) used here for development unfortunately has a very minor bug that prevents it from working with MSVS 2010. A fix to the boost package is provided in this release. Just follow the instructions under the msvs2010/boost_1_47_0-multi_array-iterator-fix/ directory. (All you need to do is copy over a replacement for iterator.hpp.) * Configure script options have been revised to provide better automatic platform detection and better user control over platform selection. Additionally, the libelf dependency is more carefully checked to avoid a previously common installation error. * A new platform selection policy is used that allows a priority-ordered comma separated list of platform names that are used to determine which platform should be used for default contexts. The new policy is more robust and will only fail if no platform is found capable of supporting at least one context device type. * The operations CL_MCTL_SET_USERFLAGS and CL_MCTL_CLR_USERFLAGS have been added to the clmctl() call to allow setting vendor/device specific additional cl_mem_flags not directly controlled by STDCL. These operations cna only be performed on a detached allocation and will be applied by the calls clmattach() or clmrealloc(). The behavior of the specified flags is not checked therefore these operations should be used with caution. * Fortran bindings for STDCL require GCC 4.4 or later since they utilize the ISO C binding support. * Optimial performance using the COPRTHR OCL implementation (libcoprthr) requires GCC 4.6 and the 'no-template' model. This can be configured using --enable-libcoprthr --with-libcoprthr-cc=gcc46 --with-libcoprthr-cxx=g++46 --with-libcoprthr-model=no-template . * Some example kernels include the stdcl.h header. Including this header for OpenCL kernels allows the use of alternate syntax that avoids breaking C. Programmers are encouraged to begin this practice now. A future release will formalize syntax corrections to OpenCL to produce a C compliant language for programming thread functions (kernels). The alternate syntax will be completely backward compatable with OpenCL. ------------------------------------------------------------------------ 4 Frequently Asked Questions Below are answers to frequently asked questions regarding COPRTHR SDK and STDCL. Does STDCL require the BDT OpenCL run-time? No. The basic installation of libstdcl.so will work with any compliant OpenCL installation including the latest implementations from AMD, Nvidia and Intel. Will using STDCL reduce performance or limit access to OpenCL functionality? No. STDCL is implemented as a very light-weight interface, does not restrict access to direct OpenCL and fully supports asynchronous operations across multiple devices. Are STDCL calls simply wrappers for OpenCL calls? No. There is a bit more to the interface than wrapping OpenCL calls. For the curious, take a look at the source code. ------------------------------------------------------------------------ 5 More Information Additional information including installation instructions and examples may be found in The COPRTHR Primer revision 1.4 along with more detailed documentation and examples. ------------------------------------------------------------------------ revised 3 March 2012 by DAR
About
Co-Processing Threads SDK - latest release is v1.4.0 (echo)
Resources
License
Stars
Watchers
Forks
Packages 0
No packages published
Languages
- C 69.0%
- C++ 19.3%
- Perl 10.5%
- Fortran 0.4%
- Shell 0.4%
- Objective-C 0.2%
- Assembly 0.2%