<story><title>Julia GPU</title><url>https://notamonadtutorial.com/julia-gpu-98a461d33e21</url></story><parent_chain></parent_chain><comment><author>MayeulC</author><text>I was really confused for a moment, because the article mention CUDA a lot, which is a nvidia-specific API&amp;#x2F;framework&amp;#x2F;language. I guess that&amp;#x27;s mainly to appeal to the CUDA crowd? However, Julia being seemingly based on LLVM, interfacing it with AMD GPUs should be quite doable:&lt;p&gt;&amp;gt; Much of the initial work focused on developing tools that make it possible to write low-level code in Julia. For example, we developed the LLVM.jl package that gives us access to the LLVM APIs. Recently, our focus has shifted towards generalizing this functionality so that other GPU back-ends, like AMDGPU.jl or oneAPI.jl can benefit from developments to CUDA.jl. Vendor-neutral array operations, for examples, are now implemented in GPUArrays.jl whereas shared compiler functionality now lives in GPUCompiler.jl. That should make it possible to work on several GPU back-ends, even though most of them are maintained by only a single developer.&lt;p&gt;This is the takeaway to me. First-class access to GPU accelerators using the same syntax, regardless of the vendor :)</text></comment>
<story><title>Julia GPU</title><url>https://notamonadtutorial.com/julia-gpu-98a461d33e21</url></story><parent_chain></parent_chain><comment><author>Athas</author><text>I&amp;#x27;m not sure I understand the bounds checking example.  Can someone shed some light on how CUDA.jl does bounds checking?  It&amp;#x27;s not entirely straightforward to do on a GPU.</text></comment>