Knights Corner: Open source software stack
As mentioned in “Knights Corner micro-architecture support” the open source software stack consists of an embedded Linux*, a minimally modified GCC, plus driver software. There is a package for GDB available separately as well. Links for these resources can be found at https://software.intel.com/en-us/mic-developer in the article titled “RESOURCES (including downloads).”
The full name for the software stack is the “Intel® Many Integrated Core (MIC) Platform Software Stack.” Users often call it MPSS for short. It is dependent on the 2.6.34 Linux kernel, and it has been tested to work with specific versions of 64-bit Red Hat Enterprise 6.0, 6.1, and 6.2, as well as SuSE Linux Enterprise Server (SLES) 11 SP1. The readme.txt file has more information on how to build and install the stack.
The open source updates Intel has made are in support of the instruction set, the ABI, initializing and controlling an SMP on-a-chip, and the glue software to support the coprocessor communication with the host system.
The Symmetric Communications Interface (SCIF) is included in the RPM bundle. SCIF provides a mechanism for inter-node communications within a single platform. A node, for SCIF purposes, is defined as either a Knights Corner device or the Intel Xeon processor. In particular, SCIF abstracts the details of communicating over the PCI Express bus. The SCIF APIs are callable from both user space (uSCIF) and kernel-space (kSCIF).
The MPSS team learned a few things in doing the first implementations of MPSS and looks forward to discussions with upstream projects about how MIC Architecture should be supported. What has been released now will be worthy of a “typical vendor code” label by the community, and Intel will work to upgrade from that. Naturally, the recommendation is not to check in the code as it exists today. Nevertheless, it is functional and ready for use. In fact, it has been being actively used on prototype and pre-production machines for many months already. Going forward Intel is looking into to utilizing the Yocto project for the build system, which may make it even easier for those that wish to experiment with and build upon the environment.
GCC: the basics are in
The changes to the GCC tool chain allow it to build the coprocessor’s Linux environment, including Intel drivers, for either the Knights Ferry prototype or Knights Corner coprocessor. The changes do not include support for Knights Corner vector instructions and related optimization improvements. GCC for Knights Corner is really only for building the kernel and related tools; it is not for building applications. Using GCC to build an application for Knights Corner will most often result in low performance code due its current inability to vectorize for the new Knights Corner vector instructions. Future changes to give full usage of Knights Corner vector instructions would require work on the GCC vectorizer to utilize those instructions’ masking capabilities. This is something that requires a broader discussion in the GCC community than simply changing the code generator.
GCC also does not include support for any offload directives at this point. While the Intel compiler has “LEO” (Language Extensions for Offload), Intel is hopeful of a standard that brings together the GPU-only OpenACC with the more flexible Intel LEO offload model for coprocessors. Intel is engaged in the OpenMP committee hoping to find such a combination to be generally applicable, integrated and fully compatible with OpenMP (including the ability to offload OpenMP code). Once that is achieved, it will likely make sense to see if GCC’s OpenMP support should be extended. Intel can then work with the GCC community to discuss and assist these potential future additions to GCC.
GDB: ready for C and C++ developers
GDB is great for C and C++ application debugging unless Intel® Language Extensions for Offload (LEO) are being used. The Intel debugger is still a better choice for Fortran application debugging and for debugging programs using offload. Intel is working to collaborate with the GDB community to enhance GDB for Fortran and for offload debugging.
Linux support for Knights Corner
The changes in the Linux kernel are primarily for three reasons:
- Numerous little changes to support the unique combination of an Intel® Pentium® processor core that also supports 64-bits including the Knights Corner vector instructions.
- Power management, which is a feature not associated with the original Pentium processors. Power management is much more important when you have more than fifty of them on a single die!
- The Knights Corner machine check architecture, also a feature not present in the original Pentium processor designs.
Join Intel in defining the environment!
Intel has it up and running, and has been told it rates as “typical vendor code” by open source community members who have seen it. Intel looks forward to working with the community, to merge these concepts into the open source projects through the normal community review, feedback and assistance process. Some code is ready, and some needs a little work, and some needs a rewrite to take advantage of standard methods that were overlooked in the initial implementation. This is true of kernel changes, drivers, as well as the modifications to GCC and GDB.
The choice of an open software stack, running on an SMP on-a-chip, is very exciting. The discussion forum Intel® Many Integrated Core (MIC) Architecture Forum is available to join to discuss this further. The opportunities for innovation seem limitless.