<div dir="ltr"><br><div>Finally I kind of modified llvm to generate assembly that can run on AMDGPU pro drivers. One problem is the performance of the code generated by llvm is about 10% slower than amdgpu's online compiler. Anything I can tune the performance up the performance of llvm?\</div><div><br></div><div>Thanks!<br></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Sep 4, 2018 at 9:23 AM 董昌道 <<a href="mailto:dongchangdao@gmail.com">dongchangdao@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto">I am writing a miner of crypto currency, for which most users run it with amdgpu driver. I have written a script the translate the meta data of LLVM isa format into clrxasm format. I also modified ROCm version of llvm to reorganize the order of the kernel args so that it’s compatible with clrxasm. It seems working and clrxasm seems support this dispatch kernel ptr thing. But it would be nice if I can turn it off. Reading the LLVM code it seems this intrinsic is hard coded? Hope not.<br><br><div id="m_-6020815804053834162AppleMailSignature">Regards!<div>   Changdao from cell phone</div></div><div><br>On Sep 4, 2018, at 4:12 AM, Tamazov, Artem <<a href="mailto:Artem.Tamazov@amd.com" target="_blank">Artem.Tamazov@amd.com</a>> wrote:<br><br></div><blockquote type="cite"><div>






<div class="m_-6020815804053834162WordSection1">...<span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"" lang="EN-US"></span>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">Hi Artem,<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks  for replying!<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">I am working on OpenCL program that runs with AMDGPU Pro driver.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">However, the compiler comes with it doesn't support inline assembly. So my plan is to compile my OpenCL code with inline assembly with llvm to get a isa file, and then generate the binary using clrxasm.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">It seems that the calling conventions of llvm and clrxasm are different in some register usages but I cannot figure out the detail from their docs. I wonder if llvm supports turning off "enable_sgpr_dispatch_ptr = 1" so that it's compatible
 with clrxasm.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  Changdao<u></u><u></u></p>
</div>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Mon, Sep 3, 2018 at 5:25 AM Tamazov, Artem <<a href="mailto:Artem.Tamazov@amd.com" target="_blank">Artem.Tamazov@amd.com</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<p class="MsoNormal"><span lang="EN-US">Hello,</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US"> </span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">Please look into
<a href="https://llvm.org/docs/AMDGPUUsage.html" target="_blank">https://llvm.org/docs/AMDGPUUsage.html</a>.</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US"> </span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">> My target is amdgpu--amdhsa.</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US"> </span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">This means that the kernel(s) are to be executed on HSA compatible runtimes such as AMD’s ROCm.</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US"> </span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">> ..."enable_sgpr_dispatch_ptr = 1". Can I do something to turn that off in the generated assembly file?</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">> ...user argument is placed at the first place while hidden arguments like "HiddenGlobalOffsetX" are placed after user arguments.</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">> Can I change the order of the arguments so that the first argument will be hidden arguments before user arguments?</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US"> </span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">If your wishes are met, then the compatibility with HSA will be broken.</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US"> </span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">> Can I change the order of the arguments so that the first argument will be hidden arguments before user arguments?</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US"> </span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">I think this is not normally possible while target stays at "...-amdhsa".</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US"> </span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">Also I think that community would be able to help you more if you explain your reasons.</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US"> </span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">Regards,</span><u></u><u></u></p>
<p class="MsoNormal"><span lang="EN-US">artem</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#600060" lang="EN-US"> </span><u></u><u></u></p>
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"" lang="EN-US">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"" lang="EN-US"> llvm-dev
 [mailto:<a href="mailto:llvm-dev-bounces@lists.llvm.org" target="_blank">llvm-dev-bounces@lists.llvm.org</a>]
<b>On Behalf Of </b>Changdao Dong via llvm-dev<br>
<b>Sent:</b> 31 August 2018 г. 22:15<br>
<b>To:</b> <a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<b>Subject:</b> [llvm-dev] Can I control HSA config generated by AMDGPU backend?</span><u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<div>
<div>
<p class="MsoNormal">I am using llvm clang to offline compile my opencl code into assembly. My target is amdgpu--amdhsa. The assembly file generated by clang has config of "enable_sgpr_dispatch_ptr
 = 1". Can I do something to turn that off in the generated assembly file? Also, it seems that the order of kernel arguments is in the reverse order of AMDCL2 convention. i.e. user argument is placed at the first place while hidden arguments like "HiddenGlobalOffsetX"
 are placed after user arguments. Can I change the order of the arguments so that the first argument will be hidden arguments before user arguments?<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks a lot!<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><br>
-- <u></u><u></u></p>
<div>
<p class="MsoNormal">DONG, Changdao<br>
<br>
<a href="mailto:dongchangdao@gmail.com" target="_blank">dongchangdao@gmail.com</a><u></u><u></u></p>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><br clear="all">
</p><div>
</div>
</div>


</div></blockquote></div></blockquote></div><br clear="all"><br></div>