MIC Processor Engine Properties

TIBCO GridServer® supports Intel Many Integrated Cores (MIC) coprocessors. This includes MIC detection and Engine properties that provide information that can be used for discrimination.

Intel MIC coprocessors, such as the Xeon PHI, are a multi-core processor architecture capable of running a large number of tasks in parallel due to a large number of physical cores available in the card. MIC coprocessors support two execution models: native, where programs are executed directly in the co-processor; and offload, where programs are executed in the host machine and some parts are executed in the coprocessor. Support for the MIC coprocessor in GridServer is restricted to the offload model.

Requirements

Support for MIC coprocessors requires the following:

Linux on X86_64

The following compilers are supported:

Intel Composer XE 13

MIC support has the following limitations:

The Engine requires a pre-load of shared libraries to run Services with offload code.
Services with offload code share global objects across Service instances. This is a limitation due to how Intel handles shared libraries with offload code.
The availability of the MIC coprocessor is determined at Engine Daemon startup time. Changes to the status of coprocessors are not visible to the Engines.

Properties

If the Engine Daemon detects a MIC device, it sets the following Engine properties:

MICDevices – The number of MIC devices enabled at the Engine Daemon startup time.
MICModel – The identifier of the coprocessor model. This information is based on information from the cpuid opcode.
MICCores – The number of logical cores.
MICMemory – The amount of memory in bytes.

MICModel, MICCores, and MICMemory refer to the oldest co-processor available in the host machine. Oldest is defined based on this information from the cpuid opcode.

Configuration

To use MIC in your Service, you must do the following:

Engine Configuration

To preload the required shared libraries:

1. In the TIBCO GridServer® Administration Tool, go to Grid Components > Engines> Engine Configurations and select the appropriate Engine configuration.
2. Set this value under Engine Daemon and Instance Process Settings: Environment Variables:
   LD_PRELOAD=libjsig.so liboffload.so.5

libjsig.so is part of the JRE and liboffload.so.5 is part of the Intel runtime libraries.

Service Type

Services with offload code require unloadNativeLibrary set to false in the Service Type registry.

Grid Libraries

Services with the above Service Type setting share global objects across Services. Use the <conflict> setting in your grid-library.xml to avoid sharing of global objects with other Services:

<?xml version="1.0" encoding="UTF-8"?>
<grid-library>
    ...
    <conflict>
        <grid-library-name>[name of grid-library that shares global objects]</grid-library-name>
    </conflict>
    ...
</grid-library>

See the MIC example in the GridServer SDK for more information.