<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Thanos Stratikopoulos on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/author/thanos-stratikopoulos/</link><description>Articles written by Thanos Stratikopoulos on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 30 Dec 2025 09:00:00 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/author/thanos-stratikopoulos/index.xml" rel="self" type="application/rss+xml"/><item><title>TornadoInsight - Compatibility with TornadoVM SDK 2.0+ &amp; Configuration Guide</title><link>https://foojayio.github.io/website/today/tornadoinsight-compatibility-with-tornadovm-sdk-2-0-configuration-guide/</link><pubDate>Tue, 30 Dec 2025 09:00:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/tornadoinsight-compatibility-with-tornadovm-sdk-2-0-configuration-guide/</guid><description>&lt;figure class="wp-block-image size-full is-resized"&gt;
 &lt;img fetchpriority="high" decoding="async" width="298" height="298" src="tornado-insight.webp" alt="" class="wp-image-106112" style="width:138px;height:auto"&gt;
&lt;/figure&gt;
&lt;p&gt;This blog updates the previously published &lt;strong&gt;TornadoInsight&lt;/strong&gt; configuration &lt;a href="https://www.tornadovm.org/post/introducing-tornadoinsight-unleashing-the-power-of-tornadovm-in-intellij-idea" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;++guidelines++&lt;/strong&gt;&lt;/a&gt;
 and explains how to configure the required environment variable to ensure that TornadoInsight correctly detects the TornadoVM SDK when IntelliJ IDEA is launched from a graphical environment.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="6bbq84970"&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;TornadoInsight requires access to a compatible Java Development Kit (JDK) and the TornadoVM SDK.{#o7o5c20810}&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Important update:&lt;/strong&gt;{#mvwo920904}&lt;/p&gt;
&lt;p&gt;Since version &lt;a href="https://github.com/beehive-lab/tornado-insight/releases/tag/v1.4.0" target="_blank" rel="noopener noreferrer"&gt;++v1.4.0++&lt;/a&gt;
, TornadoInsight can also use the &lt;strong&gt;JDK configured directly in IntelliJ IDEA&lt;/strong&gt; via &lt;strong&gt;Project Structure&lt;/strong&gt;. This means that, in many cases, users no longer need to configure the Java SDK in the plugins settings.{#welj420814}&lt;/p&gt;</description></item><item><title>Getting Started with TornadoVM 2.0 for Accelerating Java Applications</title><link>https://foojayio.github.io/website/today/getting-started-with-tornadovm-2-0/</link><pubDate>Mon, 22 Dec 2025 10:00:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/getting-started-with-tornadovm-2-0/</guid><description>&lt;p&gt;Starting with &lt;strong&gt;TornadoVM 2.0&lt;/strong&gt; , installing and using TornadoVM is easier than ever. The project now provides prebuilt SDKs for multiple operating systems, architectures, and accelerator backends, and is also available via &lt;strong&gt;Maven Central&lt;/strong&gt; for seamless integration with existing Java codebases.{#viewer-bsvyh182}&lt;/p&gt;
&lt;p&gt;This guide walks you through:{#viewer-aq221189}&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Installing the TornadoVM SDK&lt;/li&gt;
&lt;li&gt;Verifying your setup&lt;/li&gt;
&lt;li&gt;Integrating TornadoVM into Java projects using Maven&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="viewer-f868f305-69f0-46b4-bbc6-baaa3d02051b"&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;Before installing TornadoVM, ensure that your system has the following:{#viewer-k00hu10420}&lt;/p&gt;</description></item><item><title>Build and Run TornadoVM with IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/build-and-run-tornadovm-with-intellij-idea/</link><pubDate>Wed, 20 Nov 2024 19:08:13 +0000</pubDate><guid>https://foojayio.github.io/website/today/build-and-run-tornadovm-with-intellij-idea/</guid><description>&lt;p&gt;&lt;a href="https://www.tornadovm.org/" target="_blank" rel="noopener noreferrer"&gt;TornadoVM&lt;/a&gt;
 is an open-source Java technology that is developed to aid Java programmers in adapting their code bases for hardware acceleration.&lt;/p&gt;
&lt;p&gt;This blog aims to explain how Java programmers can build TornadoVM with IntelliJ IDEA, and how they can run TornadoVM unit-tests or other Java programs.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="h2-0-prerequisites"&gt;&lt;em&gt;Prerequisites&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;This blog uses IntelliJ IDEA 2024.2.4 version and the list of required plugins are as follows:{#r55ph1440}&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python &lt;a href="https://plugins.jetbrains.com/plugin/631-python" target="_blank" rel="noopener noreferrer"&gt;++plugin++&lt;/a&gt;
 to be installed in IntelliJ. This plugin allows python scripting from the IDE.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;{#x95ro33520}&lt;/p&gt;</description></item><item><title>Defining patterns of data transfers for Java applications with TornadoVM</title><link>https://foojayio.github.io/website/today/defining-patterns-of-data-transfers-for-java-applications-with-tornadovm/</link><pubDate>Thu, 15 Aug 2024 15:43:56 +0000</pubDate><guid>https://foojayio.github.io/website/today/defining-patterns-of-data-transfers-for-java-applications-with-tornadovm/</guid><description>&lt;p&gt;&lt;strong&gt;The TornadoVM API is designed to aid Java programmers in adapting their code bases for hardware acceleration. As explained in a previous &lt;a href="https://foojayio.github.io/website/today/migrating-applications-to-tornadovm-v0-15-part-1/"&gt;++article++&lt;/a&gt;
, the TornadoVM API exposes two key Java objects for programmers, the &lt;a href="https://github.com/beehive-lab/TornadoVM/blob/master/tornado-api/src/main/java/uk/ac/manchester/tornado/api/TaskGraph.java" target="_blank" rel="noopener noreferrer"&gt;++TaskGraph++&lt;/a&gt;
 and the &lt;a href="https://github.com/beehive-lab/TornadoVM/blob/master/tornado-api/src/main/java/uk/ac/manchester/tornado/api/TornadoExecutionPlan.java" target="_blank" rel="noopener noreferrer"&gt;++TornadoExecutionPlan++&lt;/a&gt;
. The former is used to define which methods should be offloaded on an accelerator as well as how often the data will flow. The latter is used to configure how the execution will take place (e.g., with a warmup, with a specific grid, with a profiler, etc.) and contains a method that actually invokes the execution. More information about how to use those objects are provided &lt;a href="https://tornadovm.readthedocs.io/en/latest/programming.html#selecting-the-methods-to-be-accelerated-using-a-task-graph-api" target="_blank" rel="noopener noreferrer"&gt;++here++&lt;/a&gt;
.&lt;/strong&gt;{#viewer-foo}&lt;/p&gt;</description></item><item><title>TornadoInsight: Harness the Power of TornadoVM from IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/tornadoinsight-an-intellij-plugin-for-tornavovm/</link><pubDate>Fri, 08 Mar 2024 11:59:07 +0000</pubDate><guid>https://foojayio.github.io/website/today/tornadoinsight-an-intellij-plugin-for-tornavovm/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/tornadoinsight-an-intellij-plugin-for-tornavovm/tornado-insight.webp" alt="" loading="lazy"&gt;
&lt;br&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TornadoInsight is an open-source IntelliJ IDEA plugin for enhancing the developer experience when working with TornadoVM.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It provides a built-in on-the-fly static checker, empowering developers to identify unsupported Java features in TornadoVM and understand the reasons behind these limitations.&lt;/p&gt;
&lt;p&gt;Additionally, TornadoInsight introduces a dynamic testing framework that enables developers to easily test individual TornadoVM tasks. It automatically wraps TornadoVM tasks, invoking the native TornadoVM runtime on the developer&amp;rsquo;s machine for seamless debugging and testing. In this blog, we expand on TornadoInsight by:&lt;/p&gt;</description></item><item><title>TornadoVM: Code Interoperability Mode</title><link>https://foojayio.github.io/website/today/code-interoperability-mode-for-opencl-portability-across-various-programming-languages-with-tornadovm/</link><pubDate>Thu, 11 May 2023 07:54:04 +0000</pubDate><guid>https://foojayio.github.io/website/today/code-interoperability-mode-for-opencl-portability-across-various-programming-languages-with-tornadovm/</guid><description>&lt;p&gt;&lt;a href="https://www.tornadovm.org/" target="_blank" rel="noopener noreferrer"&gt;TornadoVM&lt;/a&gt;
 is a programming framework for accelerating Java applications on heterogeneous devices, like multi-core CPUs, GPUs and FPGAs.&lt;/p&gt;
&lt;p&gt;Java developers can use the TornadoVM API to prototype Java methods within their code bases for hardware acceleration.&lt;/p&gt;
&lt;p&gt;TornadoVM is hardware-agnostic, but the generated code (i.e., kernels) for acceleration can be executed only through the TornadoVM runtime.&lt;/p&gt;
&lt;p&gt;This blog outlines the key changes in TornadoVM to &lt;strong&gt;enable code interoperability of kernels with other programming languages beyond Java&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Foojay Podcast #17: Execute Java Code with TornadoVM</title><link>https://foojayio.github.io/website/today/foojay-podcast-17/</link><pubDate>Mon, 27 Mar 2023 08:45:20 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-17/</guid><description>&lt;p&gt;TornadoVM is a programming and execution framework for offloading and running JVM applications on multi-core CPUs, GPUs, and FPGAs.&lt;/p&gt;
&lt;p&gt;With the same code, some of your existing program code can be executed hundreds of times faster!&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/4Y-3qZNSkfM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;h2 id="h2-1--odcast-pps"&gt;Podcast Apps&lt;/h2&gt;
&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;</description></item><item><title>Migrating Applications to TornadoVM v0.15 (Part 2)</title><link>https://foojayio.github.io/website/today/migrating-applications-to-tornadovm-v0-15-part-2/</link><pubDate>Sat, 04 Mar 2023 18:38:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/migrating-applications-to-tornadovm-v0-15-part-2/</guid><description>&lt;p&gt;In the &lt;a href="https://foojayio.github.io/website/today/migrating-applications-to-tornadovm-v0-15-part-1/"&gt;previous blog&lt;/a&gt;
, we discussed the TornadoVM programming model and showed how programmers can define the parts of their Java applications to be offloaded for hardware acceleration via the TornadoVM API (v0.15).&lt;/p&gt;
&lt;p&gt;In this article, we will spotlight all the TornadoVM configurations/operations that regard the execution on the hardware device.&lt;/p&gt;
&lt;p&gt;In particular, this blog has the following objectives:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provide guidelines regarding how programmers can trigger TornadoVM-specific configurations that regard the execution on hardware accelerators.&lt;/li&gt;
&lt;li&gt;Provide examples on how to exploit the new operations that are exposed by the new TornadoVM API.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;Prerequisites {#h2-0-1-prerequisites}&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;This blog begins with a prerequisite that a snapshot of a user-defined TaskGraph is captured to an immutable state. This was the final point of the &lt;a href="https://foojayio.github.io/website/today/migrating-applications-to-tornadovm-v0-15-part-1/"&gt;previous blog&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Migrating Applications to TornadoVM v0.15 (Part 1)</title><link>https://foojayio.github.io/website/today/migrating-applications-to-tornadovm-v0-15-part-1/</link><pubDate>Thu, 16 Feb 2023 07:58:43 +0000</pubDate><guid>https://foojayio.github.io/website/today/migrating-applications-to-tornadovm-v0-15-part-1/</guid><description>&lt;p&gt;TornadoVM 0.15 introduced changes at the API level with the aim of making the exposed operations more comprehensive to the programmers.&lt;/p&gt;
&lt;p&gt;It is imperative after all to get an understanding of how to use the TornadoVM API, as it includes very powerful operations, such as expressing parallelism, chaining Java methods (tasks) for deployment on heterogeneous hardware, configuration of the data transfers, etc.&lt;/p&gt;
&lt;p&gt;This article has the following objectives:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Give an overview of the TornadoVM programming model.&lt;/li&gt;
&lt;li&gt;Provide guidelines on how to define what to run on a device.&lt;/li&gt;
&lt;li&gt;Provide guidelines on how existing TornadoVM programs can migrate to use the TornadoVM v0.15 API.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;TornadoVM Programming Model {#h2-0-1-tornadovm-programming-model}&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;TornadoVM uses a programming model that derives from the state-of-the-art programming models of heterogeneous hardware accelerators, such as OpenCL, Level Zero, and CUDA. A key aspect for software applications that require to offload computations for hardware acceleration is that they are composed of two parts:&lt;/p&gt;</description></item><item><title>A Flavour of TornadoVM on Apple M1 Pro</title><link>https://foojayio.github.io/website/today/a-flavour-of-tornadovm-on-apple-m1-pro/</link><pubDate>Tue, 02 Aug 2022 08:21:12 +0000</pubDate><guid>https://foojayio.github.io/website/today/a-flavour-of-tornadovm-on-apple-m1-pro/</guid><description>&lt;p&gt;This article aims to describe the main steps required to install and run &lt;a href="https://foojayio.github.io/website/today/hardware-acceleration-for-java-tornadovm-can-do-it/"&gt;TornadoVM&lt;/a&gt;
 on Apple M1 Pro.&lt;/p&gt;
&lt;h4 id="steps"&gt;Steps&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Install Prerequisites&lt;/li&gt;
&lt;li&gt;Run TornadoVM Installer&lt;/li&gt;
&lt;li&gt;Execute Unit Tests&lt;/li&gt;
&lt;li&gt;Performance Evaluation: Running Matrix-Multiplication on Apple M1 GPU&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="h3-0-1-install-prerequisites"&gt;1. Install Prerequisites&lt;/h3&gt;
&lt;p&gt;To install TornadoVM, it is necessary to have some packages installed. For instance, you will have to install &lt;a href="https://maven.apache.org/" target="_blank" rel="noopener noreferrer"&gt;Maven&lt;/a&gt;
 and &lt;a href="https://mac.install.guide/homebrew/index.html" target="_blank" rel="noopener noreferrer"&gt;wget&lt;/a&gt;
 in order to enable the TornadoVM installer to be functional.&lt;/p&gt;
&lt;p&gt;Assuming that Homebrew is installed in your system, you can open a terminal and execute the following commands:&lt;/p&gt;</description></item><item><title>Hardware Acceleration For Java? TornadoVM Can Do It!</title><link>https://foojayio.github.io/website/today/hardware-acceleration-for-java-tornadovm-can-do-it/</link><pubDate>Fri, 01 Apr 2022 07:37:03 +0000</pubDate><guid>https://foojayio.github.io/website/today/hardware-acceleration-for-java-tornadovm-can-do-it/</guid><description>&lt;p&gt;Java programs can primarily run on x86 and Arm platforms and recent efforts focus on ports to PowerPC and RISC-V.&lt;/p&gt;
&lt;p&gt;Despite the diverse range of ISAs, contemporary computers are equipped with heterogeneous devices, such as Graphics Processing Units (GPUs), Field Programmable Gate Arrays (FPGAs), and Tensor Processing Units (TPUs), which operate as co-processors that offload data processing from the main processor.&lt;/p&gt;
&lt;p&gt;A question that rises is whether such compute power can be utilized by Java programs. The answer is that several frameworks have been created to address this challenge. For instance, &lt;a href="https://www.ibm.com/docs/en/sdk-java-technology/7?topic=i-j9-virtual-machine-jvm-1" target="_blank" rel="noopener noreferrer"&gt;IBM J9&lt;/a&gt;
, &lt;a href="https://aparapi.github.io/" target="_blank" rel="noopener noreferrer"&gt;Aparapi&lt;/a&gt;
, and &lt;a href="https://www.tornadovm.org/" target="_blank" rel="noopener noreferrer"&gt;TornadoVM&lt;/a&gt;
, are frameworks that aid Java programmers to accelerate their programs on heterogeneous hardware devices.&lt;/p&gt;</description></item></channel></rss>