Native and Offload Programming Models

By Ronald W Green, Published: 09/09/2012, Last Updated: 09/26/2014

Compiler Methodology for Intel® MIC Architecture

Native and Offload Programming Models

Overview

This chapter details the various programming models available on the Intel® MIC Architecture. These include the Native programming model, the Heterogeneous Offload model, and the Cilk_Offoad model. Because of the high overhead associated with data movement to/from the Intel® Xeon Phi™ coprocessor, this chapter also covers concepts in data movement and transfer and how to manage data offload.

Note that OpenMP 4.0 includes new directives for offloading execution to attached devices. The Intel Compiler supports the following OpenMP 4.0 features in the latest releases:

Goals

It is important to understand the three programming models (Native, Offload, Cilk_Offload) for the Intel® Xeon Phi™ coprocessor to determine which is the best match for your application. As part of this understanding and analysis, you need to understand the overheads associated with data movement and how to avoid unnecessary data movement and how to get peak transfer rates.

Topics

Goals for this chapter are to explore the offload models and data movement topics to determine which may be useful for your application:

  • How to Achieve Peak Transfer Rate (covers data movement optimization) (C++,  Fortran)

  • Techniques to Reduce Offload-related Memory Allocation Overheads (C++, Fortran)

  • Taking Advantage of Offload Pointer Association and alloc/into Keywords (C++, Fortran)

NEXT STEPS

It is essential that you read this guide from start to finish using the built-in hyperlinks to guide you along a path to a successful port and tuning of your application(s) on Intel® Xeon Phi™ coprocessors. The paths provided in this guide reflect the steps necessary to get best possible application performance.

Back to the Index for Compiler Methodology for Intel® MIC Architecture

Product and Performance Information

1

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