Re:An Introduction to GPU Programming in Julia
by why_only_15 on Thursday October 18, 2018 @04:43PM
(#18251939)
Are you sure? I'm pretty sure I can branch on core-specific measures like (in CUDA) TheadIdx and BlockIdx
[ Parent
| on HN ]
Re:An Introduction to GPU Programming in Julia
by gpuhacker on Thursday October 18, 2018 @06:29PM
(#18252749)
It's true that the programming model allows that, but underneath all threads within the warp will execute the same instructions. However if there is a branch, some threads can be predicated so their instructions have no effect. This is called warp divergence and can become a performance issue. If possible branch only on threadidx using multiples of the warp size. There's a cool slide deck on implementing a parallel sum algorithm that explains this really well.
Re:An Introduction to GPU Programming in Julia
by dialecticDolt on Friday October 19, 2018 @12:43AM
(#18254294)
Do you have any idea what the source of the slide deck could have been? It sounds very interesting and I'd love to see it.
Re:An Introduction to GPU Programming in Julia
by gpuhacker on Friday October 19, 2018 @01:44AM
(#18254448)
Sure! I meant this one: https://developer.download.nvidia.com/assets/cuda/files/redu...
Re:An Introduction to GPU Programming in Julia
by 0-_-0 on Friday October 19, 2018 @06:15AM
(#18255560)
Yes but can you do that from Julia without writing CUDA/OpenCL code?
I'm happy that Julia supports GPU programming for simple code, but I don't see how you can run algorithms with inter-thread communication.
Re:An Introduction to GPU Programming in Julia
by simondanisch on Friday October 19, 2018 @10:59AM
(#18257134)
That's how you do it:
https://github.com/JuliaGPU/GPUArrays.jl/blob/master/src/lin...
Or directly with cuda shfl intrinsics: https://github.com/JuliaGPU/CUDAnative.jl/blob/b249dfd145501...