Demo: Advantage of Westmere Crypto Acceleration Engine

Published: 05/23/2012, Last Updated: 05/23/2012

Download demo package



Use of the Intel IPP samples is subject to the terms and conditions of the Intel End User License Agreement (EULA).


Purpose of this demo is to show an advantage of Westmere Crypto Acceleration Engine. 

For visualization of cipher functions, speedup the rotating box was used. The source of encrypted and decrypted image is mapped on box faces. The revolution of the rotating box is being changed according to the performance of Intel® Advanced Encryption Standard New Instructions(AES-NI) optimized Intel IPP crypto functions and internal threading. The revolution is directly proportional to performance and number of threads used.

When demo is running on "Intel® Xeon® Processor 56xx Series (code-named "Westmere"), because of AES NI optimization, the box revolution is faster compare to other CPU types.


To view a scene

Click on the ‘OpenFile' button on the toolbar and select the JPEG file to view. At this stage the scene is created (it is the box) based on JPEG picture.

To run/stop a ray tracing of current scene

By clicking  ‘Play' button on the toolbar. You will see the rotated box. This will rotate with the revo (revolutions per minute) in directly proportion to IPP AES functionality performance on current CPU and number of threads being used(see the field "Revo").

To stop click on ‘Pause' button on the toolbar.

As in the above picture, following information fields are there in the main toolbar (that can be changed through ‘Control’ button):

- The first filed is ‘CPU type', this demo will automatically detect runtime processor and dispatches automatically the optimal version of IPP function. For more information refer to IPP Dispatcher Control article. To understand CPU bit name like ippCpuAES or ippCpuSSE42, refer to IPP user manual or Knowledge base article.

- Second filed is ‘crypto function name’ used for benchmarking, e.g. ippsRijndael128EncryptECB. See next section to get more information on crypto functions.


Maximum number of threads available on the machine (equal to the number of physical or logical cores)


Current number of threads. It should be ≤ MaxNumThreads. Intel IPP is threaded using OpenMP API, the OpenMP run time will create number of threads equal to number of cores on your system


Revolutions per minute of rotating box


Performance of the current Encrypt functions


Performance of the current Decrypt functions


Frame per second, this is performance of Ray Tracing

By selecting 'Control' button, you will get following selection options


Cipher Functions

Function Name



Encrypts plaintext message using Rijndael128 algorithm in the ECB encryption mode


Decrypts byte data stream using Rijndael128 algorithm in the ECB mode


Encrypts byte data stream according to Rijndael128 in the CBC mode


Decrypts byte data stream according to Rijndael128 in the CBC mode


Encrypts byte data stream according to Rijndael128 in the CFB mode


Decrypts byte data stream according to Rijndael128 in the CFB mode


Encrypts byte data stream according to Rijndael128 in the OFB mode


Decrypts byte data stream according to Rijndael128 in the OFB mode


Encrypts a variable length data stream according to Rijndael128 in the CTR mode


Decrypts a variable length data stream according to Rijndael128 in the CTR mode

Affinity Settings

This will set the parameter for functions ippSetAffinity(IppAffinityType aType, int offset); This functions basically binds OpenMP* threads to OS processors. This function use Intel OpenMP low-level affinity API, and it takes effect if OMP_AFFINITY environment variable is not set to disabled.

In accordance with the values of the parameter aType, the following thread affinity types are possible:


If HT is enabled, and OMP parallel regions don't use all available OpenMP threads, the adjacent threads use the shared cache on two cores and do not compete for resources on the same core leaving other core not used. This is equal to the following OpenMP settings: KMP_AFFINITY=granularity=fine,compact,1,offset [ICCC]. If HT is disabled, two adjacent threads are bound to cores with shared cache


OpenMP thread <n>+1 is assigned to the free thread from the OS thread context closest to those OS thread context, where the OpenMP thread <n> is assigned. This is equal to the following OpenMP settings: KMP_AFFINITY=granularity=fine,compact,0,offset [ICCC].


all OpenMP threads have access to all OS processors. This is equal to the following OpenMP settings: KMP_AFFINITY=respect [ICCC].


sets thread affinity, which is set before machine topology initialization.

When you click 'About', following information will be get displayed(as in the below picture)


For more information, refer to AES-NI support in Intel® IPP.

Product and Performance Information


Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804