Intel® C++ Compiler XE 13.1 User and Reference Guides

About Intel® Many Integrated Core (Intel® MIC) Class Libraries

This topic only applies to Intel® MIC Architecture.

These class libraries include:

You can find the definitions for these classes in the header file: micvec.h.

Details About the Class Libraries

These class libraries for SIMD operations provide a convenient interface to access the underlying instructions for processors as specified in Processor Requirements for Use of Class Libraries. These processor-instruction extensions enable parallel processing using the single instruction-multiple data (SIMD) technique as illustrated in the following figure:

SIMD Data Flow
SIMD Data Flow

Performing sixteen operations with a single instruction improves efficiency by a factor of sixteen for that particular instruction.

These new processor instructions can be implemented using assembly inlining, intrinsics, or Intel® Many Integrated Core (Intel® MIC) SIMD classes. Compare the coding required to add sixteen 32-bit floating-point values, using each of the available interfaces:

The following table shows an addition of two single-precision floating-point values using assembly inlining, intrinsics, and the libraries.

Comparison Between Inlining, Intrinsics and Class Libraries
Assembly Inlining Intrinsics SIMD Class Libraries
__m512 a,b,c;
__asm{ vloadd v0,b
       vloadd v1,c
       vaddps v0,v1
       vstored a, v0 }
#include <immintrin.h>
 ... 
__M512 a,b,c;
a = _mm512_add_ps(b,c);
 ... 
				  
#include <micvec.h>
 ... 
F32vec16 a,b,c;
a = b + c;
 ... 
				  

Submit feedback on this help topic