<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;" dir="ltr">
<p style="margin-top:0;margin-bottom:0"></p>
<p style="font-family: Calibri, Helvetica, sans-serif, serif, EmojiFont; font-size: 16px;">
Hi all,</p>
<p style="font-family: Calibri, Helvetica, sans-serif, serif, EmojiFont; font-size: 16px;">
<br>
</p>
<p style="font-family: Calibri, Helvetica, sans-serif, serif, EmojiFont; font-size: 16px;">
I'm trying to retrieve the grid variable name inside a CUDA kernel call. For example, I have the following CUDA code:</p>
<p style="font-family: Calibri, Helvetica, sans-serif, serif, EmojiFont; font-size: 16px;">
<span style="font-size: 12pt;"><b>    dim3 Dg(nelr / BLOCK_SIZE_1), Db(BLOCK_SIZE_1);</b></span></p>
<p style="font-family: Calibri, Helvetica, sans-serif, serif, EmojiFont; font-size: 16px;">
<b><span style="font-size: 12pt;"></span><span style="font-size: 12pt;">    cuda_initialize_variables<<<Dg, Db>>>(nelr, variables);</span></b></p>
<p style="font-family: Calibri, Helvetica, sans-serif, serif, EmojiFont; font-size: 16px;">
<span style="font-size: 12pt;"><b></b></span><span style="font-size: 12pt;"><b>    getLastCudaError("initialize_variables failed");</b></span></p>
<p style="font-family: Calibri, Helvetica, sans-serif, serif, EmojiFont; font-size: 16px;">
</p>
<div style="font-family: Calibri, Helvetica, sans-serif, serif, EmojiFont; font-size: 16px;">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif, serif, EmojiFont; font-size: 16px;">
What I need is to find the name of the grid variable, in this case, Dg.</div>
<div style="font-family: Calibri, Helvetica, sans-serif, serif, EmojiFont; font-size: 16px;">
Currently, I'm able to find the CUDAKernelCallExpr, and get the CallExpr pointer by using the following code:</div>
<div style="font-family: Calibri, Helvetica, sans-serif, serif, EmojiFont; font-size: 16px;">
    <b>CUDAKernelCallExpr *kce = dyn_cast<CUDAKernelCallExpr>(stmt);</b></div>
<div style="font-family: Calibri, Helvetica, sans-serif, serif, EmojiFont; font-size: 16px;">
    <b>CallExpr *kernelConfig = kce->getConfig();</b></div>
<div style="font-family: Calibri, Helvetica, sans-serif, serif, EmojiFont; font-size: 16px;">
<b>    Expr *grid = kernelConfig->getArg(0);</b></div>
<div style="font-family: Calibri, Helvetica, sans-serif, serif, EmojiFont; font-size: 16px;">
Now I'm stuck at the problem is how to find the actual name of the grid, in this case, "Dg".</div>
<div style="font-family: Calibri, Helvetica, sans-serif, serif, EmojiFont; font-size: 16px;">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif, serif, EmojiFont; font-size: 16px;">
Here is the AST dump of the Expr *grid:</div>
<div style="font-family: Calibri, Helvetica, sans-serif, serif, EmojiFont; font-size: 16px;">
<div><b>CXXConstructExpr 0x564e5305f928 'dim3':'struct dim3' 'void (const struct dim3 &) throw()'</b></div>
<div><b>`-ImplicitCastExpr 0x564e5305f910 'const dim3':'const struct dim3' lvalue <NoOp></b></div>
<div><b>  `-DeclRefExpr 0x564e5305f7b0 'dim3':'struct dim3' lvalue Var 0x564e5305f468 'Dg' 'dim3':'struct dim3'</b></div>
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif, serif, EmojiFont; font-size: 16px;">
Thank you in advance!</div>
<div style="font-family: Calibri, Helvetica, sans-serif, serif, EmojiFont; font-size: 16px;">
<br>
</div>
<div style="font-family: Calibri, Helvetica, sans-serif, serif, EmojiFont; font-size: 16px;">
Patrick</div>
<br>
<p></p>
</div>
</body>
</html>