
	       README for Intel(R) Offload Runtime Library
	       ===========================================

How to Build Documentation
==========================

The main documentation is in Doxygen* format, and this distribution
should come with pre-built PDF documentation in doc/Reference.pdf.
However, an HTML version can be built by executing:

% doxygen doc/doxygen/config

in this directory.

That will produce HTML documentation in the doc/doxygen/generated
directory, which can be accessed by pointing a web browser at the
index.html file there.

If you don't have Doxygen installed, you can download it from
www.doxygen.org.


Software Requirements
=====================

Intel(R) Offload Runtime Library requires additional software:

1) Intel(R) OpenMP* Runtime Library.  You can either download the source
code for that (from openmprtl.org or openmp.llvm.org) or simply use the
compiled version distributed with the Intel compilers.
2) Intel(R) COI Runtime Library and Intel(R) MYO Runtime Library.  These
libraries are part of Intel(R) Manycore Platform Software Stack (MPSS).  You
can download MPSS source code or binaries from
software.intel.com/en-us/articles/intel-manycore-platform-software-stack-mpss.
Binaries include host libraries for Intel(R) 64 Architecture and target
libraries for Intel(R) Many Integrated Core Architecture.

Also you will require all of the libraries that enable the target code to run
on device.  If you target the Intel(R) Xeon Phi (TM) coprocessor, these
libraries can be taken from MPSS too.


How to Build the Intel(R) Offload Runtime Library
=================================================

The Makefile at the top-level will attempt to detect what it needs to
build the Intel(R) Offload Runtime Library.  To see the default settings,
type:

make info

You can change the Makefile's behavior with the following options:

root_dir:	      The path to the top-level directory containing the
		      top-level Makefile.  By default, this will take on the
		      value of the current working directory.

build_dir:	      The path to the build directory.  By default, this will
		      take on value [root_dir]/build.

mpss_dir:	      The path to the Intel(R) Manycore Platform Software
		      Stack install directory.  By default, this will take on
		      the value of operating system's root directory.

libiomp_host_dir:     The path to the host Intel(R) OpenMP* Runtime Library.
		      This option is required when the host compiler is other
		      than icc.

libiomp_target_dir:   The path to the target Intel(R) OpenMP* Runtime
		      Library.  This option is required when the target
		      compiler is other than icc.

omp_header_dir:       The path to the header file <omp.h> of Intel(R) OpenMP*
		      Runtime Library.  This option is required if either host
		      or target compiler is other than icc.

os_host:	      Operating system on host.  Currently supports only
		      "linux" which is set by default.

os_target:	      Operating system on target device.  Currently supports
		      only "linux" which is set by default.

compiler_host:	      Which compiler to use for the build of the host part.
		      Defaults to "gcc"*.  Also supports "icc" and "clang"*.
		      You should provide the full path to the compiler or it
		      should be in the user's path.

compiler_host:	      Which compiler to use for the build of the target part.
		      Defaults to "gcc"*.  Also supports "icc" and "clang"*.
		      You should provide the full path to the compiler or it
		      should be in the user's path.

options_host:	      Additional options for the host compiler.

options_target:       Additional options for the target compiler.

To use any of the options above, simple add <option_name>=<value>.  For
example, if you want to build with icc instead of gcc, type:

make compiler_host=icc compiler_target=icc


Supported RTL Build Configurations
==================================

Supported Architectures: Intel(R) 64, and Intel(R) Many Integrated
Core Architecture

	      ---------------------------------------------
	      |   icc/icl     |    gcc      |    clang    |
--------------|---------------|---------------------------|
| Linux* OS   |      Yes      |     Yes(1)  |     Yes(1)  |
| OS X*       |       No      |      No     |      No     |
| Windows* OS |       No      |      No     |      No     |
-----------------------------------------------------------

(1) Liboffload requires _rdtsc intrinsic, which may be unsupported by some
    versions of compiler.  In this case you need to include src/rdtsc.h
    manually by using Makefile options options_host and options_target:

    make options_host="-include src/rdtsc.h" options_target="-include src/rdtsc.h"

-----------------------------------------------------------------------

Notices
=======

*Other names and brands may be claimed as the property of others.
