From 203ed3aa51f07fd9eb79e6f5aa151f53e5dbda92 Mon Sep 17 00:00:00 2001 From: Juan Fumero Date: Tue, 5 Dec 2023 12:15:33 +0100 Subject: [PATCH] [Release] TornadoVM 1.0 Improvements ================= - Brand-new API for allocating off-heap objects and array collections using the Panama Memory Segment API. - New Arrays, Matrix and Vector type objects are allocated using the Panama API. - Migration of existing applications to use the new Panama-based types: https://tornadovm.readthedocs.io/en/latest/offheap-types.html - Handling of the TornadoVM's internal bytecode improved to avoid write-only copies from host to device. - `cospi` and `sinpi` math operations supported for OpenCL, PTX and SPIR-V. - Vector 16 data types supported for `float`, `double` and `int`. - Support for Mesa's `rusticl`. - Device default ordering improved based on maximum thread size. - Move all the installation and configuration scripts from Bash to Python. - The installation process has been improved for Linux and OSx with M1/M2 chips. - Documentation improved. - Add profiling information for the testing scripts. Compatibility/Integration ========================== - Integration with the Graal 23.1.0 JIT Compiler. - Integration with OpenJDK 21. - Integration with Truffle Languages (Python, Ruby and Javascript) using Graal 23.1.0. - TornadoVM API Refactored. - Backport bug-fixes for branch using OpenJDK 17: `master-jdk17` Bug fixes: ================= - Multiple SPIR-V Devices fixed. - Runtime Exception when no SPIR-V devices are present. - Issue with the kernel context API when invoking multiple kernels fixed. - MTMD mode is fixed when running multiple backends on the same device. - `long` type as a constant parameter for a kernel fixed. - FPGA Compilation and Execution fixed for AWS and Xilinx devices. - Batch processing fixed for different data types of the same size. --- README.md | 6 +- bin/tornadovm-installer | 4 +- docs/source/CHANGELOG.rst | 104 ++++++++++++++------ docs/source/installation.rst | 5 +- pom.xml | 2 +- tornado-annotation/pom.xml | 2 +- tornado-api/pom.xml | 4 +- tornado-assembly/pom.xml | 2 +- tornado-benchmarks/pom.xml | 4 +- tornado-drivers/drivers-common/pom.xml | 4 +- tornado-drivers/opencl-jni/pom.xml | 2 +- tornado-drivers/opencl/pom.xml | 2 +- tornado-drivers/pom.xml | 2 +- tornado-drivers/ptx-jni/pom.xml | 4 +- tornado-drivers/ptx/pom.xml | 4 +- tornado-drivers/spirv-levelzero-jni/pom.xml | 2 +- tornado-drivers/spirv/pom.xml | 2 +- tornado-examples/pom.xml | 2 +- tornado-matrices/pom.xml | 2 +- tornado-runtime/pom.xml | 2 +- tornado-unittests/pom.xml | 2 +- 21 files changed, 103 insertions(+), 60 deletions(-) diff --git a/README.md b/README.md index 363b5a6f01..1859836e29 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Developers can choose which backends to install and run. For a quick introduction please read the following [FAQ](https://tornadovm.readthedocs.io/en/latest/). -**Latest Release:** TornadoVM 0.15.2 - 26/07/2023 : See [CHANGELOG](https://tornadovm.readthedocs.io/en/latest/CHANGELOG.html). +**Latest Release:** TornadoVM 1.0 - 05/12/2023 : See [CHANGELOG](https://tornadovm.readthedocs.io/en/latest/CHANGELOG.html). ---------------------- @@ -222,12 +222,12 @@ You can import the TornadoVM API by setting this the following dependency in the tornado tornado-api - 0.15.2 + 1.0 tornado tornado-matrices - 0.15.2 + 1.0 ``` diff --git a/bin/tornadovm-installer b/bin/tornadovm-installer index b537685621..fb07869a0a 100755 --- a/bin/tornadovm-installer +++ b/bin/tornadovm-installer @@ -343,10 +343,10 @@ def listSupportedJDKs(): zulu-jdk-21 : Install TornadoVM with Azul Zulu JDK 21" Usage: - $ ./scripts/tornadovm-installer --jdk --backend + $ ./bin/tornadovm-installer --jdk --backend If you want to select another version of OpenJDK, you can use --javaHome="" and install as follows: - $ ./scripts/tornadovm-installer --backend --javaHome= + $ ./bin/tornadovm-installer --backend --javaHome= """ ) diff --git a/docs/source/CHANGELOG.rst b/docs/source/CHANGELOG.rst index 12d970930c..55d164eb75 100644 --- a/docs/source/CHANGELOG.rst +++ b/docs/source/CHANGELOG.rst @@ -5,11 +5,53 @@ TornadoVM Changelog This file summarizes the new features and major changes for each *TornadoVM* version. +TornadoVM 1.0 +---------------- +05/12/2023 + +Improvements +~~~~~~~~~~~~~~~~~~ + +- Brand-new API for allocating off-heap objects and array collections using the Panama Memory Segment API. + - New Arrays, Matrix and Vector type objects are allocated using the Panama API. + - Migration of existing applications to use the new Panama-based types: https://tornadovm.readthedocs.io/en/latest/offheap-types.html +- Handling of the TornadoVM's internal bytecode improved to avoid write-only copies from host to device. +- ``cospi`` and ``sinpi`` math operations supported for OpenCL, PTX and SPIR-V. +- Vector 16 data types supported for ``float``, ``double`` and ``int``. +- Support for Mesa's ``rusticl``. +- Device default ordering improved based on maximum thread size. +- Move all the installation and configuration scripts from Bash to Python. +- The installation process has been improved for Linux and OSx with M1/M2 chips. +- Documentation improved. +- Add profiling information for the testing scripts. + + +Compatibility/Integration +~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Integration with the Graal 23.1.0 JIT Compiler. +- Integration with OpenJDK 21. +- Integration with Truffle Languages (Python, Ruby and Javascript) using Graal 23.1.0. +- TornadoVM API Refactored. +- Backport bug-fixes for branch using OpenJDK 17: ``master-jdk17`` + + +Bug fixes: +~~~~~~~~~~~~~~~~~ + +- Multiple SPIR-V Devices fixed. +- Runtime Exception when no SPIR-V devices are present. +- Issue with the kernel context API when invoking multiple kernels fixed. +- MTMD mode is fixed when running multiple backends on the same device. +- ``long`` type as a constant parameter for a kernel fixed. +- FPGA Compilation and Execution fixed for AWS and Xilinx devices. +- Batch processing fixed for different data types of the same size. + TornadoVM 0.15.2 ---------------- -26/07/2023 +26/07/2023 Improvements ~~~~~~~~~~~~~~~~~~ @@ -20,37 +62,37 @@ Improvements Compatibility/Integration -~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~ -- Initial integration with ComputeAorta (part of the Codeplay's oneAPI Construction Kit for RISC-V) to run on RISC-V with Vector Instructions (OpenCL backend) in emulation mode. +- Initial integration with ComputeAorta (part of the Codeplay's oneAPI Construction Kit for RISC-V) to run on RISC-V with Vector Instructions (OpenCL backend) in emulation mode. - Beehive SPIR-V Toolkit dependency updated. -- Tests for prebuilt SPIR-V kernels fixed to dispatch SPIR-V binaries through the Level Zero and OpenCL runtimes. -- Deprecated ``javac.py`` script removed. +- Tests for prebuilt SPIR-V kernels fixed to dispatch SPIR-V binaries through the Level Zero and OpenCL runtimes. +- Deprecated ``javac.py`` script removed. Bug fixes: ~~~~~~~~~~~~~~~~~ - TornadoVM OpenCL Runtime throws an exception when the detected hardware does not support FP64. -- Fix the installer for the older Apple with the x86 architecture using AMD GPUs. +- Fix the installer for the older Apple with the x86 architecture using AMD GPUs. - Installer for ARM based systems fixed. -- Installer fixed for Microsoft WSL and NVIDIA GPUs. +- Installer fixed for Microsoft WSL and NVIDIA GPUs. - OpenCL code generator fixed to avoid using the reserved OpenCL keywords from Java function parameters. -- Dump profiler option fixed. +- Dump profiler option fixed. TornadoVM 0.15.1 ---------------- -15/05/2023 +15/05/2023 Improvements ~~~~~~~~~~~~~~~~~~ -- Introduction of a device selection heuristic based on the computing capabilities of devices. TornadoVM selects, as the default device, the fastest device based on its computing capability. -- Optimisation of removing redundant data copies for Read-Only and Write-Only buffers from between the host (CPU) and the device (GPU) based on the Tornado Data Flow Graph. +- Introduction of a device selection heuristic based on the computing capabilities of devices. TornadoVM selects, as the default device, the fastest device based on its computing capability. +- Optimisation of removing redundant data copies for Read-Only and Write-Only buffers from between the host (CPU) and the device (GPU) based on the Tornado Data Flow Graph. - New installation script for TornadoVM. -- Option to dump the TornadoVM bytecodes for the unit tests. +- Option to dump the TornadoVM bytecodes for the unit tests. - Full debug option improved. Use ``--fullDebug``. @@ -58,43 +100,43 @@ Compatibility/Integration ~~~~~~~~~~~~~~~~~~~~~ - Integration and compatibility with the Graal 22.3.2 JIT Compiler. -- Improved compatibility with Apple M1 and Apple M2 through the OpenCL Backend. -- GraalVM/Truffle programs integration improved. Use ``--truffle`` in the ``tornado`` script to run guest programs with Truffle. - Example: ``tornado --truffle python myProgram.py`` - Full documentation: https://tornadovm.readthedocs.io/en/latest/truffle-languages.html +- Improved compatibility with Apple M1 and Apple M2 through the OpenCL Backend. +- GraalVM/Truffle programs integration improved. Use ``--truffle`` in the ``tornado`` script to run guest programs with Truffle. + Example: ``tornado --truffle python myProgram.py`` + Full documentation: https://tornadovm.readthedocs.io/en/latest/truffle-languages.html Bug fixes: ~~~~~~~~~~~~~~~~~ -- Documentation that resets the device's memory: https://github.com/beehive-lab/TornadoVM/blob/master/tornado-api/src/main/java/uk/ac/manchester/tornado/api/TornadoExecutionPlan.java#L282 -- Append the Java ``CLASSPATH`` to the ``cp`` option from the ``tornado`` script. +- Documentation that resets the device's memory: https://github.com/beehive-lab/TornadoVM/blob/master/tornado-api/src/main/java/uk/ac/manchester/tornado/api/TornadoExecutionPlan.java#L282 +- Append the Java ``CLASSPATH`` to the ``cp`` option from the ``tornado`` script. - Dependency fixed for the ``cmake-maven`` plugin fixed for ARM-64 arch. -- Fixed the automatic installation for Apple M1/M2 and ARM-64 and NVIDIA Jetson nano computing systems. -- Integration with IGV fixed. Use the ``--igv`` option for the ``tornado`` and ``tornado-test`` scripts. +- Fixed the automatic installation for Apple M1/M2 and ARM-64 and NVIDIA Jetson nano computing systems. +- Integration with IGV fixed. Use the ``--igv`` option for the ``tornado`` and ``tornado-test`` scripts. TornadoVM 0.15 ---------------- -27/01/2023 +27/01/2023 Improvements ~~~~~~~~~~~~~~~~~~ - New TornadoVM API: - + - API refactoring (``TaskSchedule`` has been renamed to ``TaskGraph``) - Introduction of the Immutable ``TaskGraphs`` - Introduction of the TornadoVM Execution Plans: (``TornadoExecutionPlan``) - - - The documentation of migration of existing TornadoVM applications to the new API can be found here: https://tornadovm.readthedocs.io/en/latest/programming.html#migration-to-tornadovm-v0-15 + + - The documentation of migration of existing TornadoVM applications to the new API can be found here: https://tornadovm.readthedocs.io/en/latest/programming.html#migration-to-tornadovm-v0-15 - Launch a new website https://tornadovm.readthedocs.io/en/latest/ for the documentation -- Improved documentation -- Initial support for Intel ARC discrete GPUs. -- Improved TornadoVM installer for Linux +- Improved documentation +- Initial support for Intel ARC discrete GPUs. +- Improved TornadoVM installer for Linux - ImprovedTornadoVM launch script with optional parameters - Support of large buffer allocations with Intel Level Zero. Use: ``tornado.spirv.levelzero.extended.memory=True`` @@ -102,7 +144,7 @@ Improvements Bug fixes: ~~~~~~~~~~~~~~~~~ -- Vector and Matrix types +- Vector and Matrix types - TornadoVM Floating Replacement compiler phase fixed - Fix ``CMAKE`` for Intel ARC GPUs - Device query tool fixed for the PTX backend @@ -462,7 +504,7 @@ TornadoVM 0.7 - Support for ARM Mali GPUs. - Support parallel reductions on FPGAs - Agnostic FPGA vendor compilation via configuration files (Intel & Xilinx) -- Support for AWS on Xilinx FPGAs +- Support for AWS on Xilinx FPGAs - Recompilation for different input data sizes supported - New TornadoVM API calls: @@ -538,7 +580,7 @@ TornadoVM 0.4 - Use ``-Dtornado.feature.extraction=True`` to enable code extraction features -- Mac OSx support +- Mac OSx support - Automatic reductions composition (map-reduce) within the same task-schedule - Bug related to a memory leak when running on GPUs solved @@ -609,4 +651,4 @@ Tornado 0.1.0 - Initial support in the runtime to execute OpenCL programs generated by the Tornado JIT compiler - Initial Tornado-API release (``@Parallel`` Java annotation and ``TaskSchedule`` API) -- Multi-GPU enabled through multiple tasks-schedules \ No newline at end of file +- Multi-GPU enabled through multiple tasks-schedules diff --git a/docs/source/installation.rst b/docs/source/installation.rst index 21ab36fc19..a86990ab6c 100644 --- a/docs/source/installation.rst +++ b/docs/source/installation.rst @@ -848,13 +848,13 @@ To use the TornadoVM API in your projects, you can checkout our maven repository tornado tornado-api - 0.15.2 + 1.0 tornado tornado-matrices - 0.15.2 + 1.0 @@ -865,6 +865,7 @@ Notice that, for running with TornadoVM, you will need either the docker images Versions available ------------------------------------ +* 1.0 * 0.15.2 * 0.15.1 * 0.15 diff --git a/pom.xml b/pom.xml index d4cea3b5aa..0a5650cd1f 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ tornado tornado - 0.16-dev + 1.0 pom tornado https://github.com/beehive-lab/tornadovm diff --git a/tornado-annotation/pom.xml b/tornado-annotation/pom.xml index 716a50a1df..a97bcec027 100644 --- a/tornado-annotation/pom.xml +++ b/tornado-annotation/pom.xml @@ -6,7 +6,7 @@ tornado tornado - 0.16-dev + 1.0 tornado-annotation diff --git a/tornado-api/pom.xml b/tornado-api/pom.xml index 7c9dd57fd8..755a6a5587 100644 --- a/tornado-api/pom.xml +++ b/tornado-api/pom.xml @@ -5,12 +5,12 @@ tornado tornado - 0.16-dev + 1.0 tornado tornado-api - 0.16-dev + 1.0 tornado-api https://tornadovm.org diff --git a/tornado-assembly/pom.xml b/tornado-assembly/pom.xml index 735a4c303d..47a5a72ef8 100644 --- a/tornado-assembly/pom.xml +++ b/tornado-assembly/pom.xml @@ -5,7 +5,7 @@ tornado tornado - 0.16-dev + 1.0 tornado-assembly pom diff --git a/tornado-benchmarks/pom.xml b/tornado-benchmarks/pom.xml index 250129669e..21f81cd27a 100644 --- a/tornado-benchmarks/pom.xml +++ b/tornado-benchmarks/pom.xml @@ -3,11 +3,11 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"> 4.0.0 - + tornado tornado - 0.16-dev + 1.0 tornado-benchmarks diff --git a/tornado-drivers/drivers-common/pom.xml b/tornado-drivers/drivers-common/pom.xml index 81966c9275..6d00dc87fe 100644 --- a/tornado-drivers/drivers-common/pom.xml +++ b/tornado-drivers/drivers-common/pom.xml @@ -5,11 +5,11 @@ tornado tornado-drivers - 0.16-dev + 1.0 4.0.0 tornado-drivers-common tornado-drivers-common - \ No newline at end of file + diff --git a/tornado-drivers/opencl-jni/pom.xml b/tornado-drivers/opencl-jni/pom.xml index 4beb2024d3..3885aac544 100644 --- a/tornado-drivers/opencl-jni/pom.xml +++ b/tornado-drivers/opencl-jni/pom.xml @@ -6,7 +6,7 @@ tornado tornado-drivers - 0.16-dev + 1.0 tornado-drivers-opencl-jni tornado-drivers-opencl-jni diff --git a/tornado-drivers/opencl/pom.xml b/tornado-drivers/opencl/pom.xml index 237f2c7126..d5c433ba2f 100644 --- a/tornado-drivers/opencl/pom.xml +++ b/tornado-drivers/opencl/pom.xml @@ -6,7 +6,7 @@ tornado tornado-drivers - 0.16-dev + 1.0 tornado-drivers-opencl tornado-drivers-opencl diff --git a/tornado-drivers/pom.xml b/tornado-drivers/pom.xml index a80fe31994..bbdaf2f9cf 100644 --- a/tornado-drivers/pom.xml +++ b/tornado-drivers/pom.xml @@ -5,7 +5,7 @@ tornado tornado - 0.16-dev + 1.0 tornado-drivers tornado-drivers diff --git a/tornado-drivers/ptx-jni/pom.xml b/tornado-drivers/ptx-jni/pom.xml index af49ac067d..86321f3185 100644 --- a/tornado-drivers/ptx-jni/pom.xml +++ b/tornado-drivers/ptx-jni/pom.xml @@ -6,7 +6,7 @@ tornado tornado-drivers - 0.16-dev + 1.0 tornado-drivers-ptx-jni tornado-drivers-ptx-jni @@ -126,4 +126,4 @@ - \ No newline at end of file + diff --git a/tornado-drivers/ptx/pom.xml b/tornado-drivers/ptx/pom.xml index b5e63a4e04..f25b9c809f 100644 --- a/tornado-drivers/ptx/pom.xml +++ b/tornado-drivers/ptx/pom.xml @@ -7,7 +7,7 @@ tornado-drivers tornado - 0.16-dev + 1.0 tornado-drivers-ptx tornado-drivers-ptx @@ -26,4 +26,4 @@ - \ No newline at end of file + diff --git a/tornado-drivers/spirv-levelzero-jni/pom.xml b/tornado-drivers/spirv-levelzero-jni/pom.xml index 86d4d0f33b..e8a857a076 100644 --- a/tornado-drivers/spirv-levelzero-jni/pom.xml +++ b/tornado-drivers/spirv-levelzero-jni/pom.xml @@ -6,7 +6,7 @@ tornado tornado-drivers - 0.16-dev + 1.0 tornado-drivers-spirv-levelzero-jni tornado-drivers-spirv-levelzero-jni diff --git a/tornado-drivers/spirv/pom.xml b/tornado-drivers/spirv/pom.xml index 9a562c0fb8..246e473cde 100644 --- a/tornado-drivers/spirv/pom.xml +++ b/tornado-drivers/spirv/pom.xml @@ -7,7 +7,7 @@ tornado tornado-drivers - 0.16-dev + 1.0 tornado-drivers-spirv tornado-drivers-spirv diff --git a/tornado-examples/pom.xml b/tornado-examples/pom.xml index d5312b6233..60a8dd8f6d 100644 --- a/tornado-examples/pom.xml +++ b/tornado-examples/pom.xml @@ -6,7 +6,7 @@ tornado tornado - 0.16-dev + 1.0 tornado-examples tornado-examples diff --git a/tornado-matrices/pom.xml b/tornado-matrices/pom.xml index ba02188a57..2db2a2b19a 100644 --- a/tornado-matrices/pom.xml +++ b/tornado-matrices/pom.xml @@ -5,7 +5,7 @@ tornado tornado - 0.16-dev + 1.0 tornado-matrices tornado-matrices diff --git a/tornado-runtime/pom.xml b/tornado-runtime/pom.xml index 65acb0800e..3761bcd9cd 100644 --- a/tornado-runtime/pom.xml +++ b/tornado-runtime/pom.xml @@ -6,7 +6,7 @@ tornado tornado - 0.16-dev + 1.0 tornado-runtime tornado-runtime diff --git a/tornado-unittests/pom.xml b/tornado-unittests/pom.xml index 4a6d6156a2..1f0e2cd8c1 100644 --- a/tornado-unittests/pom.xml +++ b/tornado-unittests/pom.xml @@ -6,7 +6,7 @@ tornado tornado - 0.16-dev + 1.0 tornado-unittests tornado-unittests