title: How is the CUDA<<<...>>>() kernel launch syntax implemented
body: <p>CUDA kernels are launched with this syntax (at least in the runtime API)</p>
  
  <pre><code>mykernel&lt;&lt;&lt;blocks, threads, shared_mem, stream&gt;&gt;&gt;(args);
  </code></pre>
  
  <p>Is this implemented as a macro or is it special syntax that nvcc removes before handing host code off to gcc?</p>