On Sep 6, 2023, at 12:15 PM, David Alayachew <davidal...@gmail.com> wrote:
Hello Paul,
Thanks for posting this and the attached videos! I'm very excited for the possibilities that this project Babylon will bring about, but I do have a handful of initial questions.
1 - Can you help differentiate the goals between Babylon and Panama's FFI/M? I don't understand either project very well, and (from my ignorant perspective) there seems to be a lot of overlap. What separates them?
2 - I read a little about Project Sumatra, and other attempts for Java to interact with the GPU. While this project has a bigger end goal, will it be Java's current, main attempt to tackle GPU in the programming language?
2.1 - If yes, what lessons have we learned from the past projects? Clearly, this is coming from a wildly different direction, but hearing about some motivations might help us understand the WHY along with the WHAT.
3 - Just flipping through the slides and having watched the videos, that is an intimidating amount of complexity. It intimidated me at least. Who is the target audience for this project, and what steps are needed to get them equipped to use these tools effectively? To give an example of the second question, String templates are clearly a needed and valuable feature, but it has become clear that the use cases and intended semantics for it aren't exactly clear to all Java developers. After extended discussion on the mailing lists and various social media threads, there's talk about a user guide for String templates being created. A similar thing was done for Text Blocks, if I'm not mistaken. I guess a better way of restating question 2 is, do you foresee difficulties in getting developers to see the use cases and intended semantics of the code reflection you spoke of? And if so, what steps do you plan to take to "nip it in the bud", so to speak?
4 - Why Babylon?
Hi Paul,
I think this is a great initiative and very well-needed in the
Java world. I have a few questions.
1)
> Babylon will ensure that code reflection is fit for
purpose by creating a GPU programming model for Java that
leverages code reflection and is implemented as a Java library.
Does this mean that one of the goals of the project is to define
how GPUs should be programmed using the Code Reflection API, or
for Java in General? Is Babylon limited to GPUs? Are you also
considering other types of accelerators (e.g., AI accelerators,
RISC-V accelerators, etc).
We have other programming models such as TornadoVM [1], which can
be programmed using different styles (e.g., loop parallel programs
and kernel APIs). How the new model/s will accommodate existing
solutions? Is this to be defined?
2)
> We do not currently plan to deliver the GPU programming
model into the JDK. However, work on that model could identify
JDK features and enhancements of general utility which could be
addressed in future work.
Does this mean that the GPU programming model will be only used as
a motivation to develop the Code Reflection APIs for different use
cases?
3) Is there any intent to support JVM languages with these models
(e.g., R, Scala, etc), or will it be specific for the Java
language?
4) I believe we also need new types. As we discussed in JVMLS this
year, we will also need NDArray and Tensor types, Vector types and
Panama-based types for AI and Heterogeneous Computing. This is
aligned to the Gary's talk at JVMLS [2] in which he proposed the
HAT initiative (Heterogeneous Accelerator Toolkit) and
Panama-based types. Will be this also part of the Babylon
project?
[1] https://tornadovm.readthedocs.io/en/latest/programming.html#core-programming
[2] https://www.youtube.com/watch?v=lbKBu3lTftc
Thanks
Juan
On Sep 13, 2023, at 10:03 AM, Juan Fumero <juan....@paravox.ai> wrote:
Hi Paul,
I think this is a great initiative and very well-needed in the Java world. I have a few questions.
1)
> Babylon will ensure that code reflection is fit for purpose by creating a GPU programming model for Java that leverages code reflection and is implemented as a Java library.
Does this mean that one of the goals of the project is to define how GPUs should be programmed using the Code Reflection API, or for Java in General?
Is Babylon limited to GPUs? Are you also considering other types of accelerators (e.g., AI accelerators, RISC-V accelerators, etc).
We have other programming models such as TornadoVM [1], which can be programmed using different styles (e.g., loop parallel programs and kernel APIs). How the new model/s will accommodate existing solutions? Is this to be defined?
2)
> We do not currently plan to deliver the GPU programming model into the JDK. However, work on that model could identify JDK features and enhancements of general utility which could be addressed in future work.
Does this mean that the GPU programming model will be only used as a motivation to develop the Code Reflection APIs for different use cases?
3) Is there any intent to support JVM languages with these models (e.g., R, Scala, etc), or will it be specific for the Java language?
4) I believe we also need new types. As we discussed in JVMLS this year, we will also need NDArray and Tensor types, Vector types and Panama-based types for AI and Heterogeneous Computing. This is aligned to the Gary's talk at JVMLS [2] in which he proposed the HAT initiative (Heterogeneous Accelerator Toolkit) and Panama-based types. Will be this also part of the Babylon project?
Hi Paul,
This sounds great. We (the TornadoVM team at the University of
Manchester) would like to collaborate and support this project
moving forward.
Juan
-- CTO, Paravox Ltd