We had an ask from one of the various “Birds of a Feather” meetings Intel® holds at venues such as at the Super Computing* (SC) and International Super Computing* (ISC) conferences. The customer wanted to know BKMs (Best Known Methods) on the proper usage of the new OpenMP* 4.0 / Intel® Cilk™ Plus SIMD directive. I volunteered to create such a list. Investigating the topic more thoroughly, I discovered that there is already a vast amount of resources on vectorization and the use of the SIMD directive.
I started and then restarted writing this BKM list literally three times before giving up. The existing material out there is just too comprehensive. In addition, most of it is well written though without that certain embarrassing panache that I bring to the table.
I came to realize that I could not contribute anything to the conversation; any BKM list I came up with would be incomplete compared to what was already available.
So what was to be a series of 4 blogs is now simply a list of the resources I found particularly informative and useful along with a short description of why. It is not comprehensive, and does not give credit to all the other excellent material that is out there.
If you continue to have questions about the use of the SIMD directive, write them in the comment section and I’ll find answers.
REFERENCES:
Reference: Intel Corporation (not dated) “Intel Vectorization Tools,” http://software.intel.com/en-us/intel-vectorization-tools. Downloaded February 28th, 2014. This is a good reference page leading to a lot of other resources.
Reference: Intel Corporation (2012) “A Guide to Vectorization with Intel® C++ Compilers,” http://download-software.intel.com/sites/default/files/8c/a9/CompilerAutovectorizationGuide.pdf. Downloaded March 4th, 2014. Take a look at section 7.2, “User-mandated Vectorization (pragma simd)”. This section not only discusses the use of the directive but also presents examples of correct and incorrect usage along with machine code. You can find it under the “Intel Vectorization Tools” page above.
Reference: Intel Corporation (2012) “An Introduction to Vectorization with the Intel® Fortran Compiler,” http://software.intel.com/en-us/intel-vectorization-tools. Downloaded February 28th, 2014.
Reference: Wang, Abby (2013) “Vectorization Essentials 08 - Pragma SIMD I,” http://software.intel.com/en-us/videos/vectorization-essentials-08-pragma-simd-i. Downloaded February 28, 2014. This is a good summary and pretty comprehensive explanation of the SIMD directive and its modifiers. And no, I couldn’t find a “SIMD II” video either.