Preparing for the Intel® Many Integrated Core Architecture

Compiler Methodology for Intel® MIC Architecture

Preparing for the Intel® Many Integrated Core Architecture

The Intel® Many Integrated Core Architecture (Intel® MIC Architecture) provides a product family optimized to deliver performance for highly parallel applications or highly parallel kernels within applications.  The Intel® Xeon Phi™ coprocessor is a member of this product family.

Overview

The Intel® C++ Compiler and Intel® Fortran Compiler, along with the Intel® Performance Libraries, assist developers to build applications and libraries for use on the Intel® MIC Architecture product family. This guide is intended as a supplement to the compiler documentation distributed with the Intel compilers. This guide contains recommendations and techniques that are specific to the Intel® Xeon Phi™ coprocessor. This guide was created to assist the user in porting suitable applications from Intel® Xeon® processors to the Intel® Xeon Phi™ coprocessor, and to provide in-depth tuning techniques necessary to get application performance on the Intel® Xeon Phi™ coprocessor. This guide ONLY covers concepts in compiler optimization and does not cover all possible optimization topics for the Intel® MIC Architecture. Specifically, this guide will not cover all possible environment settings, data movement concepts and concerns, and runtime configuration or settings.

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

Goals

This chapter provides information on preparing applications for optimal performance for Intel® Xeon® processors and the Intel® Many Integrated Core Architecture (Intel® MIC Architecture). Specifically, this chapter addresses considerations for algorithms and general coding techniques for performance. This chapter highlights key aspects of an application that need to be considered.  Topics include:

  • Preliminary Information: Finding documentation and your support community and basic development environment requirements

  • Application Analysis for Intel® MIC Architecture Suitability

  • Expectations for User Source Code Changes

  • Memory Access and Loop Transformations (cache blocking, loop unrolling)

  • Data Structure Transformations ( AoS to SoA transformations, pointer chasing )

  • Large Pages Optimization

Topics

Preliminary Information:  Finding Documentation and Support

To be successful, it is essential that you are able to find documentation and support for the compiler and tools.  The following resources should be bookmarked or otherwise kept in a handy location for reference.  Or you may wish to bookmark this document for future reference.

  • Release Notes: ESSENTIAL to read this document with each compiler release.  The Intel MIC Architecture compiler is evolving, thus critical and timely information is captured in this document before it can make it into formal documentation.  The Release Notes document is available in your downloads on the Intel Registration Center (IRC  https://registrationcenter.intel.com) or in your My Downloads on Premier (http://premier.intel.com).  The Release Notes are also installed with the compiler package in <install dir>/composersxe/Documentation/en_US/ under filenames Release_Notes_F_XXXX_L_EN.pdf (Fortran) and Release_Notes_C_XXXX_L_EN.pdf (C/C++).  By default, <install path> is /opt/intel. The Intel compiler Release Notes are also available online (C++, Fortran).

  • Product documentation:  The compiler documentation is installed in the <install path>/composerxe/Documentation/en_US/ path and also online:  C++ Documentation and Fortran Documentation. You should begin with the "Getting Started section which has basic information on setting up the environment and using the compiler, along with hyperlinks to tutorials, samples, and documentation. You should bookmark these pages for quick reference. 

  • Online community:  Access to documentation, wikis, latest news and User Forums is provided by the Intel® MIC Architecture Developer Portal. Bookmark this page, it is your primary portal to all online support for Intel MIC Architecture. Take a few minutes to browse this portal and familiarize yourself with the resources available to assist your work.

  • Support General:  The Intel® MIC Architecture Developer Portal (http://software.intel.com/mic-developer) provides a wealth of support resources. If you cannot find help in the product documentation, the Release Notes, or from content on the Intel MIC Architecture Developer Portal, you still have several alternatives for support. For Intel MIC Architecture specific questions such as "how do I ...?" questions, installation or licensing questions, getting started help, programming techniques or help, or optimization tips please visit the Intel® Many Integrated Core Architecture User Forum.

    For general (not Intel MIC Architecture specific) help on Intel tools and technologies, visit the Intel Developer Zone Forums. The Intel compiler team has two forums for our compiler users:  The Intel C++ Compiler User Forum , the Intel Fortran Compiler for Linux* or Mac OS X* User Forum and theIntel® Visual Fortran for Windows* User Forum.

  • Support Bug Reports:  A "bug" occurs when the compiler crashes during compilation OR the compiler can be proven to be responsible for clearly incorrect behavior or results. Performance not up to expectation is NOT a bug in most cases. Numerical differences are also rarely actual compiler bugs. Be sure you have a clear test case exhibiting the problem before you create a bug report on Intel® Premier Support.

    To report issues that you believe are Intel software bugs, you can use the appropriate Developer Forums mentioned above.  If you have a Premier account, you may also report bugs in Premier. User Forums are preferred as it allows the developer community at large see all bug reports and allows users to suggest workarounds found by Intel or the community. Premier is preferable if you wish your issue to only be seen by you and Intel support engineers (although Forums do allow you or Intel to mark the issue 'Private' so that only the user and Intel can see this private thread). Issues coming into Premier that are of a 'getting started' nature or 'how do I' questions will be referred back to the appropriate User Forum, wiki, or online documentation. Premier should only be used for reporting bugs or for users requiring additional privacy.

  • Compiler, Debugger, and Libraries Downloads:  For access to the latest Intel software packages which include the compiler, debugger and libraries for both Intel® Xeon® processors and Intel® Xeon® Phi™ coprocessors, login to your account on the Intel Registration Center (IRC).  The Intel® Xeon Phi™ Platform Software Stack (MPSS) can be obtained for licensed users of Intel Developer Tools containing the Intel Compilers on the IRC. If you do not own a licensed version of Intel Compilers or Intel Peformance Libraries, you can obtain MPSS from HERE.

  • VIDEOS

Preliminary Work:  Build and Run with Intel Compilers version 13.0 or higher on Xeon

Support for the Intel® Xeon Phi™ coprocessor is provided by the Intel compilers and Intel Performance Libraries packaged with the Intel Composer XE 2013 (or newer) product family. This includes the Intel C/C++ and Fortran compilers and runtime libraries versions 13.x (or newer).  There is NO support for Intel MIC Architecture in compilers version 12.1 and older, packaged under the name Intel Composer XE 2011 SP1 (or older).  Thus, a first and necessary step is to obtain a supported package and establish a development environment as outlined in the online Quick Start Developer's Guide and your compiler and tools Release Notes documents.  Modify your makefile(s), cmake, or build scripts appropriately.  Build and run your application with this version of the Intel C/C++ or Fortran compilers and verify correct results.

Preliminary Work:  Configure Your Development Host

Configure a suitable development platform as described in the Quick Start Developer's GuideIf you have questions or issues with configuration of your host development platform, consult the Intel MIC Architecture Developer Community Forum.  You should run a few simple 'hello world' programs on the Intel Xeon processor to confirm proper compiler installation. Make sure you execute the 'source <install dir>/bin/compilervars.sh intel64' or 'source <install dir>/bin/compilervars.csh intel64' command prior to installation OR add this source statement to your startup ~/.bashrc file.

Common Best Known Methods for Parallel Performance

Read an overview of common techniques for improving parallel performance on Intel® Xeon ® processors and Intel® Xeon Phi™ coprocessors.

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™ architecture.  The paths provided in this guide reflect the steps necessary to get best application performance on the Intel® Xeon Phi™ coprocessor.

  1. Application Analysis for Intel® MIC Architecture Suitability, describes how to analyze your application(s) and establish a path to optimal performance on Intel® Xeon® processors and Intel® Xeon Phi™ coprocessors. 

  2. Expectations for User Source Code Changes presents some possible user-level optimizations that have been found effective for ultimate performance.  These advanced techniques are not essential, but are presented as some possible ways to extract additional performance of your application.  These topics are optional but should be kept in mind for those looking for every last bit of performance. The last topic below points out some ABI differences between Intel® 64 architecture and the Intel® MIC Architecture.

    1. Memory Access and Loop Transformations (cache blocking, loop unrolling)

    2. Data Structure Transformations ( AoS to SoA transformations)

    3. Large Pages Considerations

    4. Element-wise Alignment Requirements for Data Accesses

Take Aways

This chapter provided you with a wealth of resources for your application development environment configuration and use, resources for documentation and support, and topics to consider when you examine your applications in preparation for moving to the many core era. 

  • At this point you should have explored  online development community at the Intel® MIC Developer Portal (http://software.intel.com/mic-developer) (make sure you have bookmarked this page!). And you should know where to find your compiler documentation. In addition, you should know to always check the Release Notes for your compiler for new and timely information at each update. You should also have a bookmark to the Intel MIC Developer Community Forum for all your questions, tips, and bug reporting.

  • You should have completed the necessary step of verifying that your application builds and runs correctly with the latest Intel® Composer XE 2013 (or newer) compiler. Support for the Intel® MIC architecture is only available in these newer compiler packages from Intel.

  • You should have a completed configuration of a supported development host platform environment for Intel® MIC Architecture. 

  • Before continuing, you should have an understanding of application characteristics that make it suitable for a port to the Intel® MIC Architecture, such as to the Intel® Xeon Phi™ coprocessor. In case the application is not currently an ideal candidate, you should understand the steps necessary to either make it suitable or understand why the application will run with maximum efficiency on a general purpose architecture such as provided by the Intel® Xeon® processors.

  • We also covered various user source code techniques to optimize performance. These optional techniques can be used by those seeking to get every last bit of performance from their applications.

What's Next

New User Compiler Basic Usage chapter introduces the user to compiler options and usage. 

For more complete information about compiler optimizations, see our Optimization Notice.

Comments



Thank you for a great

Thank you for a great overview, Wendy! Could you please comment on the large page considerations paper. The article by Nikolay Serdjuk linked today discusses the use of the libhugetlbfs library and HUGETLB_MORECORE environment variable. Has this approach been made obsolete since the introduction of MIC_USE_2MB_BUFFERS in MPSS Gold, or does this new variable have a different domain of application?