TL;DR:
Can i use Kernels written in GCN Assembly with HSA? I like to have the
feature of persistent kernels and feed them work if needed.
Hi,
im planning a project and for preperation i was reading a lot about
gcn and the ways of programming it.
I came to the conclusion that HSA is the way to go, my plan is to
write some kernels, load them to the GPU and give them some work
when needed.
But right now im a little bit unhappy with hsail, writing kernels this way
does not give me the feeling of full control. I gues because im still not
100 % confident with the platform.
I think writing kernels in GCN Assembly directly will help me understand
whats going on and how this translates over to hsail.
Can i use Kernels written in GCN Assembly with HSA? I like to have the
feature of persistent kernels and feed them work if needed. Maybe im just
missing somthing. To be honest, at the moment it is not easy to get through
all this GPUOpen stuff, but keep up the good work who every is part of all
this.
The target platform will be Kaveri in the beginning and later i will move on
to Bristol Ridget, if everything works well.
BR
Simon
Solved! Go to Solution.
Thanks for you Answer.
I was missing some basic knowledge.
You can use HSA to load a hsaco file.
Those hsaco Files can be created in many ways.
Its possible to use OpenCL, HCC, HSAIL or GCN Assembly to write kernels
which you then can turn into hsaco files.
Then you can use 'hsa_executable_load_code_object' to load the hsaco file.
Hi,
I think you're looking for this: http://gpuopen.com/amdgcn-assembly/
Also there are more unofficial ways to produce ELF kernels from GCN asm. For example the CLRadeonExtender, or my thing: hetpas. The latter has a small IDE with GCN code completion and the first one has the most complete GCN instruction support I know. The problem with these that we have to follow the new drivers but nowadays I personally don't, so at least with my stuff you have to use old drivers. I've had no time yet to try out the official ROC solution, but I believe that this will be up to date with the newest drivers.
Thanks for you Answer.
I was missing some basic knowledge.
You can use HSA to load a hsaco file.
Those hsaco Files can be created in many ways.
Its possible to use OpenCL, HCC, HSAIL or GCN Assembly to write kernels
which you then can turn into hsaco files.
Then you can use 'hsa_executable_load_code_object' to load the hsaco file.