News for hackers. Stuff that matters.
Re:GPU vendor-agnostic fluid dynamics solver in Julia by markkitti on Monday May 08, 2023 @05:46PM (#35867433)
You may be confusing front end APIs and the compiler backends.

Julia is flexible enough that you can essentially define domain specific languages within Julia for certain applications. In this case, we are using Julia as an abstract front end and then deferring the concrete interface to vendor specific GPU compilation drivers. Part of what permits this is that Julia is a LLVM front end and many of the vendor drivers include LLVM-based backends. With some transformation of the Julia abstract syntax tree and the LLVM IR we can connect the two.

That said we are mostly dependent on vendors providing the backend compiler technology. When they do, we can bridge Julia to use that interface. We can wrap Vulkan and technologies like oneAPI.

https://github.com/JuliaGPU/Vulkan.jl https://github.com/JuliaGPU/oneAPI.jl

As for syntax, Julia syntax scales from a scripting language to a fully typed language. You can write valid and performant code without specifying any types, but you can also specialize methods for specific types. The type notation uses `::`. The types also have parameters in the curly brackets. The other aspect that makes this specific example complicated is the use of Lisp-like macros which starts with `@`. These allow for code transformation as I described earlier. The last aspect is that the author is making extensive use of Unicode. This is purely optional as you can write Julia with just ASCII. Some authors like to use `ε` instead of `in`.

Re:GPU vendor-agnostic fluid dynamics solver in Julia by codedokode on Monday May 08, 2023 @07:29PM (#35868305)
Regarding syntax, I think there are too many weird character combinations (:., ==:, etc) like these:

    ex.head == :. && return union!(sym,[ex])
    start = ex.head==:(call) ? 2 : 1
    
Also I don't like |> combination because it is hard to type. Why not use just single pipe character.
Re:GPU vendor-agnostic fluid dynamics solver in Julia by webshit2 on Monday May 08, 2023 @08:15PM (#35868684)
The colon is a bit overused (ranges, ternary, quoting), but this would be pretty clear with parentheses and spacing, i.e. ex.head == :(.) and ex.head == :(call). Now you can see it's a comparison against the symbols '.' and 'call'. Kind of like saying C has too many weird character combinations because there's a "--> operator".
Re:GPU vendor-agnostic fluid dynamics solver in Julia by DNF2 on Tuesday May 09, 2023 @02:47AM (#35870946)
Indeed there are no special operators, :. and ==: etc. They are just :, . and ==

And macro definition code looks quite different from 'regular' code since it works so much with expressions and symbols.