From f5327a14c9083a4ac8044b6ab449b6c6f1a17868 Mon Sep 17 00:00:00 2001 From: Juan Fumero Date: Wed, 17 Nov 2021 09:29:37 +0100 Subject: [PATCH] [Release] TornadoVM v0.12 CHANGELOG - New backend: initial support for SPIR-V and Intel Level Zero - Level-Zero dispatcher for SPIR-V integrated - SPIR-V Code generator framework for Java - Benchmarking framework improved to accommodate all three backends - Driver metrics, such as kernel time and data transfers included in the benchmarking framework - TornadoVM profiler improved: - Command line options added: `--enableProfiler ` and `--dumpProfiler ` - Logging improve for debugging purposes. JIT Compiler, JNI calls and code generation - New math intrinsincs operations supported - Several bug fixes: - Duplicated barriers removed. TornadoVM BARRIER bytecode fixed when running multi-context - Copy in when having multiple reductions fixed - TornadoVM profiler fixed for multiple context switching (device switching) - Pretty printer for device information --- INSTALL.md | 5 +- README.md | 6 +- assembly/pom.xml | 2 +- assembly/src/bin/tornadoLocalInstallMaven | 6 +- assembly/src/docs/1_INSTALL.md | 5 +- assembly/src/docs/6_TORNADO_FLAGS.md | 4 +- assembly/src/docs/CHANGELOG.md | 285 ++++++++++-------- assembly/src/docs/Releases.md | 24 +- benchmarks/pom.xml | 2 +- drivers/drivers-common/pom.xml | 2 +- drivers/opencl-jni/pom.xml | 2 +- drivers/opencl/pom.xml | 2 +- drivers/pom.xml | 2 +- drivers/ptx-jni/pom.xml | 2 +- drivers/ptx/pom.xml | 2 +- drivers/spirv-levelzero-jni/pom.xml | 2 +- drivers/spirv/pom.xml | 2 +- examples/pom.xml | 2 +- matrices/pom.xml | 2 +- pom.xml | 4 +- runtime/pom.xml | 2 +- .../runtime/common/TornadoOptions.java | 2 +- tornado-annotation/pom.xml | 2 +- tornado-api/pom.xml | 4 +- unittests/pom.xml | 2 +- 25 files changed, 210 insertions(+), 165 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 3fae5dbcb8..876cef3a1c 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -241,13 +241,13 @@ To use the TornadoVM API in your projects, you can checkout our maven repository tornado tornado-api - 0.11 + 0.12 tornado tornado-matrices - 0.11 + 0.12 ``` @@ -256,6 +256,7 @@ Notice that, for running with TornadoVM, you will need either the docker images #### Versions available +* 0.12 * 0.11 * 0.10 * 0.9 diff --git a/README.md b/README.md index b6d291940e..974e7548f9 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ GPUs (NVIDIA, AMD), integrated GPUs (Intel HD Graphics and ARM Mali), and FPGAs For a quick introduction please read the following [FAQ](assembly/src/docs/15_FAQ.md). -**Current Release:** TornadoVM 0.11 - 29/09/2021 : See [CHANGELOG](assembly/src/docs/CHANGELOG.md#tornadovm-0.11) +**Current Release:** TornadoVM 0.12 - 17/11/2021 : See [CHANGELOG](assembly/src/docs/CHANGELOG.md#tornadovm-0.12) Previous Releases can be found [here](assembly/src/docs/Releases.md) @@ -175,12 +175,12 @@ You can import the API and start using TornadoVM. Set this in the `pom.xml` file tornado tornado-api - 0.11 + 0.12 tornado tornado-matrices - 0.11 + 0.12 ``` diff --git a/assembly/pom.xml b/assembly/pom.xml index a83a7ecf66..40c3ff9275 100644 --- a/assembly/pom.xml +++ b/assembly/pom.xml @@ -5,7 +5,7 @@ tornado tornado - 0.12-dev + 0.12 tornado-assembly pom diff --git a/assembly/src/bin/tornadoLocalInstallMaven b/assembly/src/bin/tornadoLocalInstallMaven index 81c8b6e49f..08b5ebad89 100755 --- a/assembly/src/bin/tornadoLocalInstallMaven +++ b/assembly/src/bin/tornadoLocalInstallMaven @@ -29,7 +29,7 @@ cd $TORNADO_SDK cd share/java/tornado/ -TORNADOVM_VERSION="0.11" +TORNADOVM_VERSION="0.12" read -ra selected_backends < "${TORNADO_SDK}/etc/tornado.backend" @@ -46,6 +46,10 @@ if [[ ${selected_backends} == *"ptx-backend"* ]]; then mvn install:install-file -Dfile=tornado-drivers-ptx-${TORNADOVM_VERSION}.jar -DgroupId=tornado -DartifactId=tornado-drivers-ptx -Dversion=${TORNADOVM_VERSION} -Dpackaging=jar mvn install:install-file -Dfile=tornado-drivers-ptx-jni-${TORNADOVM_VERSION}-libs.jar -DgroupId=tornado -DartifactId=tornado-drivers-ptx-jni -Dversion=${TORNADOVM_VERSION} -Dpackaging=jar fi +if [[ ${selected_backends} == *"spirv-backend"* ]]; then + mvn install:install-file -Dfile=tornado-drivers-spirv-${TORNADOVM_VERSION}.jar -DgroupId=tornado -DartifactId=tornado-drivers-spirv -Dversion=${TORNADOVM_VERSION} -Dpackaging=jar + mvn install:install-file -Dfile=tornado-drivers-spirv-levelzero-jni-${TORNADOVM_VERSION}-libs.jar -DgroupId=tornado -DartifactId=tornado-drivers-spirv-levelzero-jni -Dversion=${TORNADOVM_VERSION} -Dpackaging=jar +fi mvn install:install-file -Dfile=tornado-annotation-${TORNADOVM_VERSION}.jar -DgroupId=tornado -DartifactId=tornado-annotation -Dversion=${TORNADOVM_VERSION} -Dpackaging=jar echo "Tornado SDK installed locally with maven" diff --git a/assembly/src/docs/1_INSTALL.md b/assembly/src/docs/1_INSTALL.md index 27b9fbb749..4cf1878764 100644 --- a/assembly/src/docs/1_INSTALL.md +++ b/assembly/src/docs/1_INSTALL.md @@ -249,13 +249,13 @@ To use the TornadoVM API in your projects, you can checkout our maven repository tornado tornado-api - 0.11 + 0.12 tornado tornado-matrices - 0.11 + 0.12 ``` @@ -264,6 +264,7 @@ Notice that, for running with TornadoVM, you will need either the docker images #### Versions available +* 0.12 * 0.11 * 0.10 * 0.9 diff --git a/assembly/src/docs/6_TORNADO_FLAGS.md b/assembly/src/docs/6_TORNADO_FLAGS.md index 56a5e3046a..c9b2f26a67 100644 --- a/assembly/src/docs/6_TORNADO_FLAGS.md +++ b/assembly/src/docs/6_TORNADO_FLAGS.md @@ -82,6 +82,6 @@ It enables the compiler to force partial unroll on counted loops with a factor o ##### Mathematical Native Functions -* `-Dtornado.enable.nativeFunctions=True`: -It enables the utilization of native mathematical functions, in case that the selected backend (OpenCL, PTX) suports native functions. This option is enabled by default. +* `-Dtornado.enable.nativeFunctions=False`: +It enables the utilization of native mathematical functions, in case that the selected backend (OpenCL, PTX, SPIR-V) suports native functions. This option is disabled by default. diff --git a/assembly/src/docs/CHANGELOG.md b/assembly/src/docs/CHANGELOG.md index 1f27902264..7c0cea4e6a 100644 --- a/assembly/src/docs/CHANGELOG.md +++ b/assembly/src/docs/CHANGELOG.md @@ -1,208 +1,245 @@ # TornadoVM Changelog + This file summarizes the new features and major changes for each *TornadoVM* version. -## CHANGELOG 0.11 -29/09/2021 +## TornadoVM 0.12 + +17/11/2021 + +- New backend: initial support for SPIR-V and Intel Level Zero + - Level-Zero dispatcher for SPIR-V integrated + - SPIR-V Code generator framework for Java +- Benchmarking framework improved to accommodate all three backends +- Driver metrics, such as kernel time and data transfers included in the benchmarking framework +- TornadoVM profiler improved: + - Command line options added: `--enableProfiler ` and `--dumpProfiler ` + - Logging improve for debugging purposes. JIT Compiler, JNI calls and code generation +- New math intrinsincs operations supported +- Several bug fixes: + - Duplicated barriers removed. TornadoVM BARRIER bytecode fixed when running multi-context + - Copy in when having multiple reductions fixed + - TornadoVM profiler fixed for multiple context switching (device switching) +- Pretty printer for device information + +## TornadoVM 0.11 + +29/09/2021 - TornadoVM JIT Compiler upgrade to work with Graal 21.2.0 and JDK 8 with JVMCI 21.2.0 - Refactoring of the Kernel Parallel API for Heterogeneous Programming: - - Methods `getLocalGroupSize(index)` and `getGlobalGroupSize` moved to public fields to keep consistency with the rest of the thread properties within the `KernelContext` class. - - Changeset: https://github.com/beehive-lab/TornadoVM/commit/e1ebd66035d0722ca90eb0121c55dbc744840a74 -- Compiler update to register the global number of threads: https://github.com/beehive-lab/TornadoVM/pull/133/files -- Simplification of the TornadoVM events handler: https://github.com/beehive-lab/TornadoVM/pull/135/files -- Renaming the Profiler API method from `event.getExecutionTime` to `event.getElapsedTime`: https://github.com/beehive-lab/TornadoVM/pull/134 -- Deprecating `OCLWriteNode` and `PTXWriteNode` and fixing stores for bytes: https://github.com/beehive-lab/TornadoVM/pull/131 + - Methods `getLocalGroupSize(index)` and `getGlobalGroupSize` moved to public fields to keep consistency with the + rest of the thread properties within the `KernelContext` class. + - Changeset: https://github.com/beehive-lab/TornadoVM/commit/e1ebd66035d0722ca90eb0121c55dbc744840a74 +- Compiler update to register the global number of threads: https://github.com/beehive-lab/TornadoVM/pull/133/files +- Simplification of the TornadoVM events handler: https://github.com/beehive-lab/TornadoVM/pull/135/files +- Renaming the Profiler API method from `event.getExecutionTime` + to `event.getElapsedTime`: https://github.com/beehive-lab/TornadoVM/pull/134 +- Deprecating `OCLWriteNode` and `PTXWriteNode` and fixing stores for + bytes: https://github.com/beehive-lab/TornadoVM/pull/131 - Refactoring of the FPGA IR extensions, from the high-tier to the low-tier of the JIT compiler - - Utilizing the FPGA Thread-Attributes compiler phase for the FPGA execution - - Using the `GridScheduler` object (if present) or use a default value (e.g., 64, 1, 1) for defining the FPGA OpenCL local workgroup + - Utilizing the FPGA Thread-Attributes compiler phase for the FPGA execution + - Using the `GridScheduler` object (if present) or use a default value (e.g., 64, 1, 1) for defining the FPGA OpenCL + local workgroup - Several bugs fixed: - - Codegen for sequential kernels fixed - - Function parameters with non-inlined method calls fixed + - Codegen for sequential kernels fixed + - Function parameters with non-inlined method calls fixed +## TornadoVM 0.10 -## TornadoVM 0.10 29/06/2021 -- TornadoVM JIT Compiler sync with Graal 21.1.0 -- Experimental support for OpenJDK 16 -- Tracing the TornadoVM thread distribution and device information with a new option `--threadInfo` instead of `--debug` +- TornadoVM JIT Compiler sync with Graal 21.1.0 +- Experimental support for OpenJDK 16 +- Tracing the TornadoVM thread distribution and device information with a new option `--threadInfo` instead + of `--debug` - Refactoring of the new API: - - `TornadoVMExecutionContext` renamed to `KernelContext` - - `GridTask` renamed to `GridScheduler` + - `TornadoVMExecutionContext` renamed to `KernelContext` + - `GridTask` renamed to `GridScheduler` - AWS F1 AMI version upgraded to 1.10.0 and automated the generation of AFI image - Xilinx OpenCL backend expanded with: - - a) Initial integration of Xilinx OpenCL attributes for loop pipelining in the TornadoVM compiler - - b) Support for multiple compute units + - a) Initial integration of Xilinx OpenCL attributes for loop pipelining in the TornadoVM compiler + - b) Support for multiple compute units - Logging FPGA compilation option added to dump FPGA HLS compilation to a file - TornadoVM profiler enhanced for including data transfers for the stack-frame and kernel dispatch time - Initial support for 2D Arrays added - Several bug fixes and stability support for the OpenCL and PTX backends - ## TornadoVM 0.9 + 15/04/2021 -- Expanded API for expressing kernel parallelism within Java. It can work with the existing loop parallelism in TornadoVM. - - Direct access to thread-ids, OpenCL local memory (PTX shared memory), and barriers - - `TornadoVMContext` added: - - See https://github.com/beehive-lab/TornadoVM/blob/5bcd3d6dfa2506032322c32d72b7bbd750623a95/tornado-api/src/main/java/uk/ac/manchester/tornado/api/TornadoVMContext.java  - - Code examples: - - https://github.com/beehive-lab/TornadoVM/tree/master/examples/src/main/java/uk/ac/manchester/tornado/examples/tornadovmcontext - - Documentation: - - https://github.com/beehive-lab/TornadoVM/blob/master/assembly/src/docs/21_TORNADOVM_CONTEXT.md +- Expanded API for expressing kernel parallelism within Java. It can work with the existing loop parallelism in + TornadoVM. + - Direct access to thread-ids, OpenCL local memory (PTX shared memory), and barriers + - `TornadoVMContext` added: + - + See https://github.com/beehive-lab/TornadoVM/blob/5bcd3d6dfa2506032322c32d72b7bbd750623a95/tornado-api/src/main/java/uk/ac/manchester/tornado/api/TornadoVMContext.java + - Code examples: + - https://github.com/beehive-lab/TornadoVM/tree/master/examples/src/main/java/uk/ac/manchester/tornado/examples/tornadovmcontext + - Documentation: + - https://github.com/beehive-lab/TornadoVM/blob/master/assembly/src/docs/21_TORNADOVM_CONTEXT.md - Profiler integrated with Chrome debug: - - Use flags: `-Dtornado.chrome.event.tracer.enabled=True -Dtornado.chrome.event.tracer.filename=userFile.json` - - See https://github.com/beehive-lab/TornadoVM/pull/41 + - Use flags: `-Dtornado.chrome.event.tracer.enabled=True -Dtornado.chrome.event.tracer.filename=userFile.json` + - See https://github.com/beehive-lab/TornadoVM/pull/41 - Added support for Windows 10: - - See https://github.com/beehive-lab/TornadoVM/blob/develop/assembly/src/docs/20_INSTALL_WINDOWS_WITH_GRAALVM.md + - See https://github.com/beehive-lab/TornadoVM/blob/develop/assembly/src/docs/20_INSTALL_WINDOWS_WITH_GRAALVM.md - TornadoVM running with Windows JDK 11 supported (Linux & Windows) -- Xilinx FPGAs workflow supported for Vitis 2020.2 +- Xilinx FPGAs workflow supported for Vitis 2020.2 - Pre-compiled tasks for Xilinx/Intel FPGAs fixed - Slambench fixed when compiling for PTX and OpenCL backends - Several bug fixes for the runtime, JIT compiler and data management. ## TornadoVM 0.8 + 19/11/2020 - Added PTX backend for NVIDIA GPUs - - Build TornadoVM using `make BACKEND=ptx,opencl` to obtain the two supported backends. -- TornadoVM JIT Compiler aligned with Graal 20.2.0 + - Build TornadoVM using `make BACKEND=ptx,opencl` to obtain the two supported backends. +- TornadoVM JIT Compiler aligned with Graal 20.2.0 - Support for other JDKs: - - Red Hat Mandrel 11.0.9 - - Amazon Coretto 11.0.9 - - GraalVM LabsJDK 11.0.8 - - OpenJDK 11.0.8 - - OpenJDK 12.0.2 - - OpenJDK 13.0.2 - - OpenJDK 14.0.2 + - Red Hat Mandrel 11.0.9 + - Amazon Coretto 11.0.9 + - GraalVM LabsJDK 11.0.8 + - OpenJDK 11.0.8 + - OpenJDK 12.0.2 + - OpenJDK 13.0.2 + - OpenJDK 14.0.2 - Support for hybrid (CPU-GPU) parallel reductions - New API for generic kernel dispatch. It introduces the concept of `WorkerGrid` and `GridTask` - - A `WorkerGrid` is an object that stores how threads are organized on an  OpenCL device: + - A `WorkerGrid` is an object that stores how threads are organized on an OpenCL device: ```java WorkerGrid1D worker1D = new WorkerGrid1D(4096); ``` - - A `GridTask` is a map that relates a task-name with a worker-grid.  + - A `GridTask` is a map that relates a task-name with a worker-grid. ```java GridTask gridTask = new GridTask(); gridTask.set("s0.t0", worker1D); ``` - - A TornadoVM Task-Schedule can be executed using a `GridTask`: + - A TornadoVM Task-Schedule can be executed using a `GridTask`: ```java ts.execute(gridTask); ``` - - More info: [link](https://github.com/beehive-lab/TornadoVM/commit/6191720fd947d3102e784dade9e576ed8af11068) -- TornadoVM profiler improved - - Profiler metrics added - - Code features per task-graph + - More info: [link](https://github.com/beehive-lab/TornadoVM/commit/6191720fd947d3102e784dade9e576ed8af11068) +- TornadoVM profiler improved + - Profiler metrics added + - Code features per task-graph - Lazy device initialisation moved to early initialisation of PTX and OpenCL devices -- Initial support for Atomics (OpenCL backend) - [Link to examples](https://github.com/beehive-lab/TornadoVM/blob/master/unittests/src/main/java/uk/ac/manchester/tornado/unittests/atomics/TestAtomics.java) +- Initial support for Atomics (OpenCL backend) + - [Link to examples](https://github.com/beehive-lab/TornadoVM/blob/master/unittests/src/main/java/uk/ac/manchester/tornado/unittests/atomics/TestAtomics.java) - Task Schedules with 11-14 parameters supported - Documentation improved -- Bug fixes for code generation,  numeric promotion, basic block traversal, Xilinx FPGA compilation. +- Bug fixes for code generation, numeric promotion, basic block traversal, Xilinx FPGA compilation. ## TornadoVM 0.7 -22/06/2020 - * Support for ARM Mali GPUs. See documentation [here](17_MALI.md) - * Support parallel reductions on FPGAs - * Agnostic FPGA vendor compilation via [configuration files](7_FPGA.md#step-1-updatecreate-the-fpgas-configuration-file) (Intel & Xilinx) - * Support for AWS on Xilinx FPGAs [link](16_AWS.md) - * Recompilation for different input data sizes supported - * New TornadoVM API calls: - a) Update references for re-compilation: - `taskSchedule.updateReferences(oldRef, newRef);` - b) Use the default OpenCL scheduler: - `taskSchedule.useDefaultThreadScheduler(true);` - * Use of JMH for benchmarking - * Support for Fused Multiply-Add (FMA) instructions - * Easy-selection of different devices for unit-tests - `tornado-test.py -V --debug -J"-Dtornado.unittests.device=0:1"` - * Bailout mechanism improved from parallel to sequential - * Improve thread scheduling - * Support for private memory allocation - * Assertion mode included - * Documentation improved - * Several bug fixes +22/06/2020 +* Support for ARM Mali GPUs. See documentation [here](17_MALI.md) +* Support parallel reductions on FPGAs +* Agnostic FPGA vendor compilation + via [configuration files](7_FPGA.md#step-1-updatecreate-the-fpgas-configuration-file) (Intel & Xilinx) +* Support for AWS on Xilinx FPGAs [link](16_AWS.md) +* Recompilation for different input data sizes supported +* New TornadoVM API calls: + a) Update references for re-compilation: + `taskSchedule.updateReferences(oldRef, newRef);` + b) Use the default OpenCL scheduler: + `taskSchedule.useDefaultThreadScheduler(true);` +* Use of JMH for benchmarking +* Support for Fused Multiply-Add (FMA) instructions +* Easy-selection of different devices for unit-tests + `tornado-test.py -V --debug -J"-Dtornado.unittests.device=0:1"` +* Bailout mechanism improved from parallel to sequential +* Improve thread scheduling +* Support for private memory allocation +* Assertion mode included +* Documentation improved +* Several bug fixes ## TornadoVM 0.6 -21/02/2020 - * TornadoVM compatible with GraalVM 19.3.0 using JDK 8 and JDK 11 - * TornadoVM compiler update for using Graal 19.3.0 compiler API - * Support for dynamic languages on top of Truffle - [examples](https://github.com/beehive-lab/TornadoVM/tree/master/examples/src/main/java/uk/ac/manchester/tornado/examples/polyglot) - * Support for multiple tasks per task-schedule on FPGAs (Intel and Xilinx) - * Support for OSX Mojave and Catalina - * Task-schedule name handling for FPGAs improved - * Exception handling improved - * Reductions for `long` type supported - * Bug fixes for ternary conditions, reductions and code generator - * Documentation improved +21/02/2020 +* TornadoVM compatible with GraalVM 19.3.0 using JDK 8 and JDK 11 +* TornadoVM compiler update for using Graal 19.3.0 compiler API +* Support for dynamic languages on top of Truffle + - [examples](https://github.com/beehive-lab/TornadoVM/tree/master/examples/src/main/java/uk/ac/manchester/tornado/examples/polyglot) +* Support for multiple tasks per task-schedule on FPGAs (Intel and Xilinx) +* Support for OSX Mojave and Catalina +* Task-schedule name handling for FPGAs improved +* Exception handling improved +* Reductions for `long` type supported +* Bug fixes for ternary conditions, reductions and code generator +* Documentation improved ## TornadoVM 0.5 -16/12/2019 - * Initial support for Xilinx FPGAs - * TornadoVM API classes are now `Serializable` - * Initial support for local memory for reductions - * JVMCI built with local annotation patch removed. Now TornadoVM requires unmodified JDK8 with JVMCI support - * Support of multiple reductions within the same `task-schedules` - * Emulation mode on Intel FPGAs is fixed - * Fix reductions on Intel Integrated Graphics - * TornadoVM driver OpenCL initialization and OpenCL code cache improved - * Refactoring of the FPGA execution modes (full JIT and emulation modes improved). +16/12/2019 +* Initial support for Xilinx FPGAs +* TornadoVM API classes are now `Serializable` +* Initial support for local memory for reductions +* JVMCI built with local annotation patch removed. Now TornadoVM requires unmodified JDK8 with JVMCI support +* Support of multiple reductions within the same `task-schedules` +* Emulation mode on Intel FPGAs is fixed +* Fix reductions on Intel Integrated Graphics +* TornadoVM driver OpenCL initialization and OpenCL code cache improved +* Refactoring of the FPGA execution modes (full JIT and emulation modes improved). ## TornadoVM 0.4 + 14/10/2019 - * Profiler supported (See [PROFILER](9_PROFILER.md)) +* Profiler supported (See [PROFILER](9_PROFILER.md)) * Use `-Dtornado.profiler=True` to enable profiler * Use `-Dtornado.profiler=True -Dtornado.profiler.save=True` to dump the profiler logs - * Feature extraction added (See [PROFILER](9_PROFILER.md)) +* Feature extraction added (See [PROFILER](9_PROFILER.md)) * Use `-Dtornado.feature.extraction=True` to enable code extraction features - * Mac OSx support (See [INSTALL](1_INSTALL.md)) - * Automatic reductions composition (map-reduce) within the same task-schedule - * Bug related to a memory leak when running on GPUs solved - * Bug fixes and stability improvements - +* Mac OSx support (See [INSTALL](1_INSTALL.md)) +* Automatic reductions composition (map-reduce) within the same task-schedule +* Bug related to a memory leak when running on GPUs solved +* Bug fixes and stability improvements ## TornadoVM 0.3 + 22/07/2019 - * New Matrix 2D and Matrix 3D classes with type specializations. - * New API-call `TaskSchedule#batch` for batch processing. It allows programmers to run with more data than the maximum capacity of the accelerator by creating batches of executions. - * FPGA full automatic compilation pipeline. - * FPGA options simplified: - * `-Dtornado.precompiled.binary=` for loading the bitstream. - * `-Dtornado.opencl.userelative=True` for using relative addresses. - * `-Dtornado.opencl.codecache.loadbin=True` *removed*. - * Reductions support enhanced and fully automated on GPUs and CPUs. - * Initial support for reductions on FPGAs. - * Initial API for profiling tasks integrated. +* New Matrix 2D and Matrix 3D classes with type specializations. +* New API-call `TaskSchedule#batch` for batch processing. It allows programmers to run with more data than the maximum + capacity of the accelerator by creating batches of executions. +* FPGA full automatic compilation pipeline. +* FPGA options simplified: + * `-Dtornado.precompiled.binary=` for loading the bitstream. + * `-Dtornado.opencl.userelative=True` for using relative addresses. + * `-Dtornado.opencl.codecache.loadbin=True` *removed*. +* Reductions support enhanced and fully automated on GPUs and CPUs. +* Initial support for reductions on FPGAs. +* Initial API for profiling tasks integrated. ## TornadoVM 0.2 + 25/02/2019 - * Rename to TornadoVM - * Device selection for better performance (CPU, multi-core, GPU, FPGA) via an API for Dynamic Reconfiguration - * Added methods `executeWithProfiler` and `executeWithProfilerSequential` with an input policy. - * Policies: `Policy.PERFORMANCE`, `Policy.END_2_END`, and `Policy.LATENCY` implemented. - * Basic heuristic for predicting the highest performing target device with Dynamic Reconfiguration - * Initial FPGA integration for Altera FPGAs: + +* Rename to TornadoVM +* Device selection for better performance (CPU, multi-core, GPU, FPGA) via an API for Dynamic Reconfiguration + * Added methods `executeWithProfiler` and `executeWithProfilerSequential` with an input policy. + * Policies: `Policy.PERFORMANCE`, `Policy.END_2_END`, and `Policy.LATENCY` implemented. +* Basic heuristic for predicting the highest performing target device with Dynamic Reconfiguration +* Initial FPGA integration for Altera FPGAs: * Full JIT compilation mode * Ahead of time compilation mode * Emulation/debug mode - * FPGA JIT compiler specializations - * Added support for Java reductions: +* FPGA JIT compiler specializations +* Added support for Java reductions: * Compiler specializations for CPU and GPU reductions - * Performance and stability fixes +* Performance and stability fixes ## Tornado 0.1.0 + 07/09/2018 - * Initial Implementation of the Tornado compiler - * Initial GPU/CPU code generation for OpenCL - * Initial support in the runtime to execute OpenCL programs generated by the Tornado JIT compiler - * Initial Tornado-API release (@Parallel annotation and TaskSchedules) - * Multi-GPU enabled through multiple tasks-schedules +* Initial Implementation of the Tornado compiler +* Initial GPU/CPU code generation for OpenCL +* Initial support in the runtime to execute OpenCL programs generated by the Tornado JIT compiler +* Initial Tornado-API release (@Parallel annotation and TaskSchedules) +* Multi-GPU enabled through multiple tasks-schedules diff --git a/assembly/src/docs/Releases.md b/assembly/src/docs/Releases.md index 1bab69013c..857a4c261e 100644 --- a/assembly/src/docs/Releases.md +++ b/assembly/src/docs/Releases.md @@ -1,12 +1,14 @@ # Releases - * TornadoVM 0.11 - 29/09/2021 : See [CHANGELOG](CHANGELOG.md#tornadovm-0.11) - * TornadoVM 0.10 - 29/06/2021 : See [CHANGELOG](CHANGELOG.md#tornadovm-0.10) - * TornadoVM 0.9 - 15/04/2021 : See [CHANGELOG](CHANGELOG.md#tornadovm-09) - * TornadoVM 0.8 - 19/11/2020 : See [CHANGELOG](CHANGELOG.md#tornadovm-08) - * TornadoVM 0.7 - 22/06/2020 : See [CHANGELOG](CHANGELOG.md#tornadovm-07) - * TornadoVM 0.6 - 21/02/2020 : See [CHANGELOG](CHANGELOG.md#tornadovm-06) - * TornadoVM 0.5 - 16/12/2019 : See [CHANGELOG](CHANGELOG.md#tornadovm-05) - * TornadoVM 0.4 - 14/10/2019 : See [CHANGELOG](CHANGELOG.md#tornadovm-04) - * TornadoVM 0.3 - 22/07/2019 : See [CHANGELOG](CHANGELOG.md#tornadovm-03) - * TornadoVM 0.2 - 25/02/2019 : See [CHANGELOG](CHANGELOG.md#tornadovm-02) - * Tornado 0.1.0 - 07/09/2018 : See [CHANGELOG](CHANGELOG.md#tornadovm-010) + +* TornadoVM 0.12 - 17/11/2021 : See [CHANGELOG](CHANGELOG.md#tornadovm-012) +* TornadoVM 0.11 - 29/09/2021 : See [CHANGELOG](CHANGELOG.md#tornadovm-011) +* TornadoVM 0.10 - 29/06/2021 : See [CHANGELOG](CHANGELOG.md#tornadovm-010) +* TornadoVM 0.9 - 15/04/2021 : See [CHANGELOG](CHANGELOG.md#tornadovm-09) +* TornadoVM 0.8 - 19/11/2020 : See [CHANGELOG](CHANGELOG.md#tornadovm-08) +* TornadoVM 0.7 - 22/06/2020 : See [CHANGELOG](CHANGELOG.md#tornadovm-07) +* TornadoVM 0.6 - 21/02/2020 : See [CHANGELOG](CHANGELOG.md#tornadovm-06) +* TornadoVM 0.5 - 16/12/2019 : See [CHANGELOG](CHANGELOG.md#tornadovm-05) +* TornadoVM 0.4 - 14/10/2019 : See [CHANGELOG](CHANGELOG.md#tornadovm-04) +* TornadoVM 0.3 - 22/07/2019 : See [CHANGELOG](CHANGELOG.md#tornadovm-03) +* TornadoVM 0.2 - 25/02/2019 : See [CHANGELOG](CHANGELOG.md#tornadovm-02) +* Tornado 0.1.0 - 07/09/2018 : See [CHANGELOG](CHANGELOG.md#tornadovm-010) diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index 7931ca34a3..5c4139ba91 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -6,7 +6,7 @@ tornado tornado - 0.12-dev + 0.12 tornado-benchmarks tornado-benchmarks diff --git a/drivers/drivers-common/pom.xml b/drivers/drivers-common/pom.xml index bb7617ab8c..3dc9955640 100644 --- a/drivers/drivers-common/pom.xml +++ b/drivers/drivers-common/pom.xml @@ -5,7 +5,7 @@ tornado tornado-drivers - 0.12-dev + 0.12 4.0.0 diff --git a/drivers/opencl-jni/pom.xml b/drivers/opencl-jni/pom.xml index bcf45b6770..f799b51530 100644 --- a/drivers/opencl-jni/pom.xml +++ b/drivers/opencl-jni/pom.xml @@ -6,7 +6,7 @@ tornado tornado-drivers - 0.12-dev + 0.12 tornado-drivers-opencl-jni tornado-drivers-opencl-jni diff --git a/drivers/opencl/pom.xml b/drivers/opencl/pom.xml index 3f5d5f4b5f..aaeab4e2d5 100644 --- a/drivers/opencl/pom.xml +++ b/drivers/opencl/pom.xml @@ -6,7 +6,7 @@ tornado tornado-drivers - 0.12-dev + 0.12 tornado-drivers-opencl tornado-drivers-opencl diff --git a/drivers/pom.xml b/drivers/pom.xml index d56793d2dc..c0bd15fe5f 100644 --- a/drivers/pom.xml +++ b/drivers/pom.xml @@ -5,7 +5,7 @@ tornado tornado - 0.12-dev + 0.12 tornado-drivers tornado-drivers diff --git a/drivers/ptx-jni/pom.xml b/drivers/ptx-jni/pom.xml index 2744b484ea..4c5e6c2961 100644 --- a/drivers/ptx-jni/pom.xml +++ b/drivers/ptx-jni/pom.xml @@ -6,7 +6,7 @@ tornado tornado-drivers - 0.12-dev + 0.12 tornado-drivers-ptx-jni tornado-drivers-ptx-jni diff --git a/drivers/ptx/pom.xml b/drivers/ptx/pom.xml index 48d2b4cf31..cd31f521b4 100644 --- a/drivers/ptx/pom.xml +++ b/drivers/ptx/pom.xml @@ -7,7 +7,7 @@ tornado-drivers tornado - 0.12-dev + 0.12 tornado-drivers-ptx tornado-drivers-ptx diff --git a/drivers/spirv-levelzero-jni/pom.xml b/drivers/spirv-levelzero-jni/pom.xml index 27b23fcf2d..2f8f994707 100644 --- a/drivers/spirv-levelzero-jni/pom.xml +++ b/drivers/spirv-levelzero-jni/pom.xml @@ -6,7 +6,7 @@ tornado tornado-drivers - 0.12-dev + 0.12 tornado-drivers-spirv-levelzero-jni tornado-drivers-spirv-levelzero-jni diff --git a/drivers/spirv/pom.xml b/drivers/spirv/pom.xml index a94184fb24..203538ca22 100644 --- a/drivers/spirv/pom.xml +++ b/drivers/spirv/pom.xml @@ -6,7 +6,7 @@ tornado tornado-drivers - 0.12-dev + 0.12 tornado-drivers-spirv tornado-drivers-spirv diff --git a/examples/pom.xml b/examples/pom.xml index f36c8f9d7c..9467dcc26e 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -5,7 +5,7 @@ tornado tornado - 0.12-dev + 0.12 tornado-examples tornado-examples diff --git a/matrices/pom.xml b/matrices/pom.xml index dcd6aa6669..2fecb0e4d8 100644 --- a/matrices/pom.xml +++ b/matrices/pom.xml @@ -5,7 +5,7 @@ tornado tornado - 0.12-dev + 0.12 tornado-matrices tornado-matrices diff --git a/pom.xml b/pom.xml index de5bbd57e7..a45e2a83af 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ tornado tornado - 0.12-dev + 0.12 pom tornado https://github.com/beehive-lab/tornadovm @@ -17,7 +17,7 @@ - 0.12-dev + 0.12 21.2.0 UTF-8 ${platform} diff --git a/runtime/pom.xml b/runtime/pom.xml index b8323c3f99..2d8bc1746e 100644 --- a/runtime/pom.xml +++ b/runtime/pom.xml @@ -5,7 +5,7 @@ tornado tornado - 0.12-dev + 0.12 tornado-runtime tornado-runtime diff --git a/runtime/src/main/java/uk/ac/manchester/tornado/runtime/common/TornadoOptions.java b/runtime/src/main/java/uk/ac/manchester/tornado/runtime/common/TornadoOptions.java index a63e49aff6..4862986cd4 100644 --- a/runtime/src/main/java/uk/ac/manchester/tornado/runtime/common/TornadoOptions.java +++ b/runtime/src/main/java/uk/ac/manchester/tornado/runtime/common/TornadoOptions.java @@ -252,6 +252,6 @@ private static boolean getBooleanValue(String property, String defaultValue) { /** * It enables native math functions for the code generation. */ - public static final boolean ENABLE_NATIVE_FUNCTION = getBooleanValue("tornado.enable.nativeFunctions", "True");; + public static final boolean ENABLE_NATIVE_FUNCTION = getBooleanValue("tornado.enable.nativeFunctions", "False");; } diff --git a/tornado-annotation/pom.xml b/tornado-annotation/pom.xml index 48ee2d23a9..d77035e6a1 100644 --- a/tornado-annotation/pom.xml +++ b/tornado-annotation/pom.xml @@ -6,7 +6,7 @@ tornado tornado - 0.12-dev + 0.12 tornado-annotation diff --git a/tornado-api/pom.xml b/tornado-api/pom.xml index 6982292095..504c2578cf 100644 --- a/tornado-api/pom.xml +++ b/tornado-api/pom.xml @@ -5,12 +5,12 @@ tornado tornado - 0.12-dev + 0.12 tornado tornado-api - 0.12-dev + 0.12 tornado-api https://tornadovm.org diff --git a/unittests/pom.xml b/unittests/pom.xml index 430494f51d..adb198cf82 100644 --- a/unittests/pom.xml +++ b/unittests/pom.xml @@ -5,7 +5,7 @@ tornado tornado - 0.12-dev + 0.12 tornado-unittests tornado-unittests