I have three more patches here and there descriptions below. Lrb2mic_cmake_build.patch depends on lrb2mic_make_build.patch so it must go after. But the ittnotify_fixes.patch is independent of the rest.
Lrb2mic_make_build.patch – This patch (and the similarly named lrb2mic_cmake_build.patch) gets rid of all the references to lrb when building for Intel® Many Integrated Core Architecture. I know most people aren’t compiling for this architecture and this patch is somewhat invasive, but it does not affect the Intel® 64 or IA-32 builds, nor any other architecture’s build. Here are the main features this patch fixes:
exports directory renamed to lin_knc, depending on which MIC flavor you are compiling for,
The internal perl scripts and library modules now have a variable $target_mic_arch which holds the value of “knc”, “knf”, (“knl” in the future) for Knights Corner, Knights Ferry, and Knights Landing.
tools used for checks are properly named to use MIC specific tools (e.g., instead of objcopy use x86_64-k1om-linux-objcopy)
build.pl doesn’t take os=lrb, but instead takes arch=mic & mic_arch=knc. This is done under the hood of the top level Makefile. You still build using the top level Makefile by typing $ make compiler=icc arch=mic
During this change, I got rid of some extraneous build.pl options (e.g., tcheck, target-compiler, etc.) which aren’t used anymore.
Lrb2mic_cmake_build.patch – This patch is the CMake changes that correspond to the above patch. This patch is built off the last one and is only the CMake files that are affected. This patch also does a few other things:
I changed some compiler flag settings for icc only that were wrong for MIC builds.
Instead of explicit linking to –ldl , I changed cmake to use CMAKE_DL_LIBS which links the –ldl library if it exists on platform you are compiling for.
Now to compile for MIC you specify –Dos=lin –Darch=mic instead of –Dos=mic ; it is an architecture after all that runs Linux as the os.
Ittnotify_fixes.patch – This patch fixes a few things concerning the ittnotify interface.
Metadata for single construct used to be reported from all threads. This was fixed to be reported only by the master.
Region-begin was mistakenly saved for any active level but had to be saved only for the first level.
Added code to report location for #omp single metadata.
To apply patches:
$ patch –p0 < lrb2mic_make_build.patch
$ patch –p0 < lrb2mic_cmake_build.patch
$ patch –p0 < ittnotify_fixes.patch
Comments or Questions?
lrb2mic_make_build.patch (44 KB)
lrb2mic_cmake_build.patch (22.5 KB)
ittnotify_fixes.patch (5.76 KB)