diff --git a/docs/ReleaseNotes.txt b/docs/ReleaseNotes.txt index 4c6e8d41..5581b81c 100644 --- a/docs/ReleaseNotes.txt +++ b/docs/ReleaseNotes.txt @@ -1,3 +1,24 @@ +=== v1.9.0 === (12 Feb 2016) + +An ISPC release with AVX512 (KNL flavor) support and a number of bug fixes, +based on fresh LLVM 3.8 backend. + +For AVX512 two modes are supported - generic and native. For instructions on how +to use them, please refer to the wiki. Going forward we assume that native mode +is the primary way to get AVX512 support and that generic mode will be deprecated. +If you observe significantly better performance in generic mode, please report +it via github issues. + +Starting this release we are shipping two versions on Windows: +(1) for VS2013 and earlier releases +(2) for VS2015 and newer releases +The reason for doing this is the redesigned C run-time library in VS. +An implementation of "print" ISPC standard library function relies on C runtime +library, which has changed. If you are not using "print" function in your code, +you are safe to use either version. + +A new options was introduced to improve debugging: --no-omit-frame-pointer. + === v1.8.2 === (29 May 2015) An ISPC update with several important stability fixes and an experimental diff --git a/docs/ispc.rst b/docs/ispc.rst index 26aaec5c..28dd9806 100644 --- a/docs/ispc.rst +++ b/docs/ispc.rst @@ -52,6 +52,7 @@ Contents: + `Updating ISPC Programs For Changes In ISPC 1.6.0`_ + `Updating ISPC Programs For Changes In ISPC 1.7.0`_ + `Updating ISPC Programs For Changes In ISPC 1.8.2`_ + + `Updating ISPC Programs For Changes In ISPC 1.9.0`_ * `Getting Started with ISPC`_ @@ -63,7 +64,8 @@ Contents: + `Basic Command-line Options`_ + `Selecting The Compilation Target`_ + `Generating Generic C++ Output`_ - + `Compiling For The Intel® Xeon Phi™ Architecture`_ + + `Compiling For The Intel® Xeon Phi™ Architecture (codename Knights Corner)`_ + + `Compiling For The Intel® Xeon Phi™ Architecture (codename Knights Landing)`_ + `Selecting 32 or 64 Bit Addressing`_ + `The Preprocessor`_ + `Debugging`_ @@ -337,6 +339,12 @@ older versions. Though you may want be aware of the following: may use uniform structures and pointers to uniform types as return types in export functions in multi-target compilation. +Updating ISPC Programs For Changes In ISPC 1.9.0 +------------------------------------------------ + +The release doesn't contains language changes, which may affect compatibility with +older versions. It introduces new AVX512 target: avx512knl-i32x16. + Getting Started with ISPC ========================= @@ -563,16 +571,17 @@ a mask size of 32 bits, and a gang size of 16. The following target ISAs are supported: -============ ========================================== +============ ========================================================= Target Description ------------- ------------------------------------------ +------------ --------------------------------------------------------- avx, avx1 AVX (2010-2011 era Intel CPUs) avx1.1 AVX 1.1 (2012 era "Ivybridge" Intel CPUs) avx2 AVX 2 target (2013- Intel "Haswell" CPUs) +avx512knl AVX 512 target (Xeon Phi chips codename Knights Landing) neon ARM NEON sse2 SSE2 (early 2000s era x86 CPUs) sse4 SSE4 (generally 2008-2010 Intel CPUs) -============ ========================================== +============ ========================================================= Consult your CPU's manual for specifics on which vector instruction set it supports. @@ -682,11 +691,12 @@ C++ file; this can be used to easily include specific implementations of the vector types and functions. -Compiling For The Intel® Xeon Phi™ Architecture ----------------------------------------------------------- +Compiling For The Intel® Xeon Phi™ Architecture (codename Knights Corner) +-------------------------------------------------------------------------- ``ispc`` has beta-level support for compiling for the many-core Intel® -Xeon Phi™ architecture (formerly, "Many Integrated Cores" / MIC). +Xeon Phi™ architecture (formerly, "Many Integrated Cores" / MIC, codename +Knights Corner). This support is based on the "generic" C++ output, described in the previous section. @@ -745,6 +755,22 @@ If you do use the current version of ``ispc`` on Intel Xeon Phi™, please let us know of any bugs or unexpected results. (Also, any interesting results!). +Compiling For The Intel® Xeon Phi™ Architecture (codename Knights Landing) +--------------------------------------------------------------------------- + +``ispc`` starting from v1.9.0 has support for compiling for the second +generation of Intel® Xeon Phi™ architecture (codename Knights Landing). +Two compilation paths are supported - generic (similar to KNC support) and +native. + +To compile using generic path, follow KNC instructions, but use knl.h, instead +of knc.h and use -xMIC-AVX512 for ICPC instead of -mmic. + +To compile using native path, just set --target=avx512knl-i32x16. + +Going forward, generic path will be deprecated, so using native target is +preferable way to get AVX512 support. + Selecting 32 or 64 Bit Addressing --------------------------------- @@ -781,7 +807,7 @@ preprocessor runs: * - ISPC - 1 - Detecting that the ``ispc`` compiler is processing the file - * - ISPC_TARGET_{NEON_8,NEON_16,NEON_32,SSE2,SSE4,AVX,AVX11,AVX2,GENERIC} + * - ISPC_TARGET_{NEON_8,NEON_16,NEON_32,SSE2,SSE4,AVX,AVX11,AVX2,AVX512KNL,GENERIC} - 1 - One of these will be set, depending on the compilation target. * - ISPC_POINTER_SIZE @@ -5131,7 +5157,7 @@ countries. * Other names and brands may be claimed as the property of others. -Copyright(C) 2011-2015, Intel Corporation. All rights reserved. +Copyright(C) 2011-2016, Intel Corporation. All rights reserved. Optimization Notice diff --git a/docs/news.rst b/docs/news.rst index ce90bdb4..305e4240 100644 --- a/docs/news.rst +++ b/docs/news.rst @@ -2,6 +2,16 @@ ispc News ========= +ispc 1.9.0 is Released +---------------------- + +An ``ispc`` release with AVX512 (KNL flavor) support and a number of bug fixes, +based on fresh LLVM 3.8 backend. + +For more details, please check `Release Notes`_. + +.. _Release Notes: https://github.com/ispc/ispc/blob/master/docs/ReleaseNotes.txt + ispc 1.8.2 is Released ---------------------- diff --git a/docs/perfguide.rst b/docs/perfguide.rst index b1d110b2..13264db2 100644 --- a/docs/perfguide.rst +++ b/docs/perfguide.rst @@ -786,7 +786,7 @@ countries. * Other names and brands may be claimed as the property of others. -Copyright(C) 2011, Intel Corporation. All rights reserved. +Copyright(C) 2011-2016, Intel Corporation. All rights reserved. Optimization Notice diff --git a/docs/template-news.txt b/docs/template-news.txt index a49ee9d3..5dc827d6 100644 --- a/docs/template-news.txt +++ b/docs/template-news.txt @@ -57,7 +57,7 @@ %(body)s
- diff --git a/docs/template-perf.txt b/docs/template-perf.txt index 772e4859..1f263514 100644 --- a/docs/template-perf.txt +++ b/docs/template-perf.txt @@ -57,7 +57,7 @@ %(body)s - diff --git a/docs/template.txt b/docs/template.txt index 25d54a2b..3f9a889d 100644 --- a/docs/template.txt +++ b/docs/template.txt @@ -57,7 +57,7 @@ %(body)s - diff --git a/doxygen.cfg b/doxygen.cfg index ffd58d1e..efdc82ce 100644 --- a/doxygen.cfg +++ b/doxygen.cfg @@ -31,7 +31,7 @@ PROJECT_NAME = "Intel SPMD Program Compiler" # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 1.8.3dev +PROJECT_NUMBER = 1.9.0 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. diff --git a/ispc.cpp b/ispc.cpp index 8b6b300a..14bb1f02 100644 --- a/ispc.cpp +++ b/ispc.cpp @@ -1217,7 +1217,7 @@ Target::ISAToString(ISA isa) { return "avx2"; #if ISPC_LLVM_VERSION >= ISPC_LLVM_3_7 // LLVM 3.7+ case Target::KNL_AVX512: - return "avx512knl-i32x16"; + return "avx512knl"; #endif case Target::SKX: return "skx"; diff --git a/ispc_version.h b/ispc_version.h index 098128b2..ede662a9 100644 --- a/ispc_version.h +++ b/ispc_version.h @@ -38,7 +38,7 @@ #ifndef ISPC_VERSION_H #define ISPC_VERSION_H -#define ISPC_VERSION "1.8.3dev" +#define ISPC_VERSION "1.9.0" #include "llvm/Config/llvm-config.h" #define ISPC_LLVM_VERSION ( LLVM_VERSION_MAJOR * 10000 + LLVM_VERSION_MINOR * 100 )