Rajesh's Blog
2024-03-19T22:45:00+05:30
https://mrprajesh.co.in
Rajesh Pandian M
debug cuda sudo
2024-03-19T20:31:18+05:30
https://mrprajesh.co.in/debug-cuda-sudo
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"># Add a conf
</span><span class="n">sudo</span> <span class="n">vim</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">modprobe</span><span class="p">.</span><span class="n">d</span><span class="o">/</span><span class="n">debug</span><span class="o">-</span><span class="n">cuda</span><span class="o">-</span><span class="n">gpu</span><span class="p">.</span><span class="n">conf</span>
<span class="n">options</span> <span class="n">nvidia</span> <span class="n">NVreg_RestrictProfilingToAdminUsers</span><span class="o">=</span><span class="mi">0</span>
<span class="cp"># update and reboot
</span><span class="n">sudo</span> <span class="n">update</span><span class="o">-</span><span class="n">initramfs</span> <span class="o">-</span><span class="n">u</span> <span class="o">-</span><span class="n">k</span> <span class="n">all</span>
<span class="n">reboot</span>
<span class="cp"># open nsight compute using sudo
</span><span class="n">sudo</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">cuda</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">ncu</span><span class="o">-</span><span class="n">ui</span>
</code></pre></div></div>
<h2 id="error-before-fixing">Error before fixing!</h2>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">Launched</span> <span class="n">process</span><span class="o">:</span> <span class="n">ncu</span> <span class="p">(</span><span class="n">pid</span><span class="o">:</span> <span class="mi">112990</span><span class="p">)</span>
<span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">cuda</span><span class="o">-</span><span class="mi">12</span><span class="p">.</span><span class="mi">2</span><span class="o">/</span><span class="n">nsight</span><span class="o">-</span><span class="n">compute</span><span class="o">-</span><span class="mi">2023</span><span class="p">.</span><span class="mi">2</span><span class="p">.</span><span class="mi">2</span><span class="o">/</span><span class="n">target</span><span class="o">/</span><span class="n">linux</span><span class="o">-</span><span class="n">desktop</span><span class="o">-</span><span class="n">glibc_2_11_3</span><span class="o">-</span><span class="n">x64</span><span class="o">/</span><span class="n">ncu</span> <span class="o">--</span><span class="n">config</span><span class="o">-</span><span class="n">file</span> <span class="n">off</span> <span class="o">--</span><span class="n">export</span> <span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">learn</span><span class="o">/</span><span class="n">saxpy</span><span class="o">/</span><span class="n">a</span><span class="p">.</span><span class="n">cu</span><span class="p">.</span><span class="n">profile</span> <span class="o">--</span><span class="n">force</span><span class="o">-</span><span class="n">overwrite</span> <span class="o">--</span><span class="n">set</span> <span class="n">full</span> <span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">learn</span><span class="o">/</span><span class="n">saxpy</span><span class="o">/</span><span class="n">axplusy</span><span class="p">.</span><span class="n">out</span>
<span class="n">Launch</span> <span class="n">succeeded</span><span class="p">.</span>
<span class="n">Profiling</span><span class="p">...</span>
<span class="o">==</span><span class="n">PROF</span><span class="o">==</span> <span class="n">Connected</span> <span class="n">to</span> <span class="n">process</span> <span class="mi">113001</span> <span class="p">(</span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">learn</span><span class="o">/</span><span class="n">saxpy</span><span class="o">/</span><span class="n">axplusy</span><span class="p">.</span><span class="n">out</span><span class="p">)</span>
<span class="o">==</span><span class="n">ERROR</span><span class="o">==</span> <span class="n">ERR_NVGPUCTRPERM</span> <span class="o">-</span> <span class="n">The</span> <span class="n">user</span> <span class="n">does</span> <span class="n">not</span> <span class="n">have</span> <span class="n">permission</span> <span class="n">to</span> <span class="n">access</span> <span class="n">NVIDIA</span> <span class="n">GPU</span> <span class="n">Performance</span> <span class="n">Counters</span> <span class="n">on</span> <span class="n">the</span> <span class="n">target</span> <span class="n">device</span> <span class="mi">0</span><span class="p">.</span> <span class="n">For</span> <span class="n">instructions</span> <span class="n">on</span> <span class="n">enabling</span> <span class="n">permissions</span> <span class="n">and</span> <span class="n">to</span> <span class="n">get</span> <span class="n">more</span> <span class="n">information</span> <span class="n">see</span> <span class="n">https</span><span class="o">:</span><span class="c1">//developer.nvidia.com/ERR_NVGPUCTRPERM</span>
<span class="o">==</span><span class="n">PROF</span><span class="o">==</span> <span class="n">Disconnected</span> <span class="n">from</span> <span class="n">process</span> <span class="mi">113001</span>
<span class="o">==</span><span class="n">WARNING</span><span class="o">==</span> <span class="n">No</span> <span class="n">kernels</span> <span class="n">were</span> <span class="n">profiled</span><span class="p">.</span>
<span class="o">==</span><span class="n">WARNING</span><span class="o">==</span> <span class="n">Profiling</span> <span class="n">kernels</span> <span class="n">launched</span> <span class="n">by</span> <span class="n">child</span> <span class="n">processes</span> <span class="n">requires</span> <span class="n">the</span> <span class="o">--</span><span class="n">target</span><span class="o">-</span><span class="n">processes</span> <span class="n">all</span> <span class="n">option</span><span class="p">.</span>
<span class="n">Process</span> <span class="n">terminated</span><span class="p">.</span>
</code></pre></div></div>
CUDA clang running on GPU
2024-03-19T16:33:36+05:30
https://mrprajesh.co.in/clang-on-gpu
<p>After gaining a lot of insights from a CppCon 2016 talk <a href="https://youtu.be/KHa-OSrZPGo?si=852XDhqzVIsLBqme">Bringing Clang and C++ to GPUs</a> I
decided to try clang code to run on GPU using the <a href="https://llvm.org/docs/CompileCudaWithLLVM.html">CUDA Clang docs</a></p>
<ol>
<li>Use clang 17 (or 16 should work as well!)</li>
<li>Installation of CUDA toolkit is assumed. Have drivers and a GPU</li>
<li>file .cu -> .ptx -> .out</li>
<li>clang -> ptxas -> sass -> exe</li>
</ol>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="n">clang</span> <span class="mi">14</span> <span class="err">##</span> <span class="n">did</span> <span class="n">not</span> <span class="n">work</span> <span class="n">with</span> <span class="n">Cuda</span> <span class="mi">12</span><span class="p">.</span><span class="mi">2</span> <span class="n">nor</span> <span class="mi">11</span><span class="p">.</span><span class="mi">8</span>
<span class="n">clang</span><span class="o">-</span><span class="mi">15</span> <span class="err">##</span> <span class="n">NOT</span> <span class="n">WORKING</span> <span class="c1">// sudo apt install clang-15 </span>
<span class="n">clang</span><span class="o">-</span><span class="mi">17</span> <span class="err">##</span> <span class="n">OK</span> <span class="n">GOOD</span><span class="p">.</span> <span class="n">https</span><span class="o">:</span><span class="c1">//ubuntuhandbook.org/index.php/2023/09/how-to-install-clang-17-or-16-in-ubuntu-22-04-20-04/</span>
<span class="cp">## STIL did not work? Nope! It worked
## native
</span><span class="n">clang</span><span class="o">++-</span><span class="mi">17</span> <span class="n">axpy</span><span class="p">.</span><span class="n">cu</span> <span class="o">-</span><span class="n">o</span> <span class="n">axpy</span><span class="p">.</span><span class="n">out</span> <span class="o">--</span><span class="n">cuda</span><span class="o">-</span><span class="n">gpu</span><span class="o">-</span><span class="n">arch</span><span class="o">=</span><span class="n">sm_86</span> <span class="o">-</span><span class="n">L</span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">cuda</span><span class="o">-</span><span class="mi">12</span><span class="p">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib64</span> <span class="o">-</span><span class="n">lcudart_static</span> <span class="o">-</span><span class="n">ldl</span> <span class="o">-</span><span class="n">lrt</span> <span class="o">-</span><span class="n">pthread</span>
<span class="cp">## and from HPC tool kit also. Ignore the warining.
</span><span class="n">clang</span><span class="o">++-</span><span class="mi">17</span> <span class="n">axpy</span><span class="p">.</span><span class="n">cu</span> <span class="o">-</span><span class="n">o</span> <span class="n">axpy</span><span class="p">.</span><span class="n">out</span> <span class="o">--</span><span class="n">cuda</span><span class="o">-</span><span class="n">gpu</span><span class="o">-</span><span class="n">arch</span><span class="o">=</span><span class="n">sm_86</span> <span class="o">-</span><span class="n">L</span><span class="o">/</span><span class="n">opt</span><span class="o">/</span><span class="n">nvidia</span><span class="o">/</span><span class="n">hpc_sdk</span><span class="o">/</span><span class="n">Linux_x86_64</span><span class="o">/</span><span class="mi">24</span><span class="p">.</span><span class="mi">3</span><span class="o">/</span><span class="n">cuda</span><span class="o">/</span><span class="mi">11</span><span class="p">.</span><span class="mi">8</span><span class="o">/</span><span class="n">lib64</span> <span class="o">-</span><span class="n">lcudart_static</span> <span class="o">-</span><span class="n">ldl</span> <span class="o">-</span><span class="n">lrt</span> <span class="o">-</span><span class="n">pthread</span>
<span class="p">.</span><span class="o">/</span><span class="n">axpy</span><span class="p">.</span><span class="n">out</span>
<span class="n">y</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mi">2</span>
<span class="n">y</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="mi">4</span>
<span class="n">y</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="mi">6</span>
<span class="n">y</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="mi">8</span>
</code></pre></div></div>
<h2 id="errors-before-fixing-it">Errors before fixing it!</h2>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">llvm</span><span class="o">-</span><span class="mi">15</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">clang</span><span class="o">/</span><span class="mi">15</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">7</span><span class="o">/</span><span class="n">include</span><span class="o">/</span><span class="n">__clang_cuda_texture_intrinsics</span><span class="p">.</span><span class="n">h</span><span class="o">:</span><span class="mi">696</span><span class="o">:</span><span class="mi">13</span><span class="o">:</span> <span class="n">error</span><span class="o">:</span> <span class="n">no</span> <span class="n">template</span> <span class="n">named</span> <span class="err">'</span><span class="n">texture</span><span class="err">'</span>
<span class="n">texture</span><span class="o"><</span><span class="n">__DataT</span><span class="p">,</span> <span class="n">__TexT</span><span class="p">,</span> <span class="n">cudaReadModeNormalizedFloat</span><span class="o">></span> <span class="n">__handle</span><span class="p">,</span>
<span class="o">^</span>
<span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">llvm</span><span class="o">-</span><span class="mi">15</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">clang</span><span class="o">/</span><span class="mi">15</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">7</span><span class="o">/</span><span class="n">include</span><span class="o">/</span><span class="n">__clang_cuda_texture_intrinsics</span><span class="p">.</span><span class="n">h</span><span class="o">:</span><span class="mi">709</span><span class="o">:</span><span class="mi">13</span><span class="o">:</span> <span class="n">error</span><span class="o">:</span> <span class="n">no</span> <span class="n">template</span> <span class="n">named</span> <span class="err">'</span><span class="n">texture</span><span class="err">'</span>
<span class="n">texture</span><span class="o"><</span><span class="n">__DataT</span><span class="p">,</span> <span class="n">__TexT</span><span class="p">,</span> <span class="n">cudaReadModeElementType</span><span class="o">></span> <span class="n">__handle</span><span class="p">,</span>
<span class="o">^</span>
<span class="mi">2</span> <span class="n">errors</span> <span class="n">generated</span> <span class="n">when</span> <span class="n">compiling</span> <span class="k">for</span> <span class="n">sm_86</span><span class="p">.</span>
</code></pre></div></div>
Git commit signature
2024-02-20T12:38:13+05:30
https://mrprajesh.co.in/git-commit-sign-gpg
<p>In case you need sign your commit - a verified signature on GitHub commit history. Here it is.
I have already added my GPG key to GitHub.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="cp"># Check GPU key
</span><span class="err">$</span> <span class="n">gpg</span> <span class="o">--</span><span class="n">list</span><span class="o">-</span><span class="n">secret</span><span class="o">-</span><span class="n">keys</span> <span class="o">--</span><span class="n">keyid</span><span class="o">-</span><span class="n">format</span><span class="o">=</span><span class="kt">long</span>
<span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="p">.</span><span class="n">gnupg</span><span class="o">/</span><span class="n">pubring</span><span class="p">.</span><span class="n">kbx</span>
<span class="o">-------------------------------</span>
<span class="n">sec</span> <span class="n">rsa2048</span><span class="o">/</span><span class="n">DD95F119EA64BABE</span> <span class="mi">2011</span><span class="o">-</span><span class="mo">02</span><span class="o">-</span><span class="mi">11</span> <span class="p">[</span><span class="n">SCA</span><span class="p">]</span>
<span class="mi">79</span><span class="n">B36A390B6A4BBFA103483BDD95F119EA64BABE</span>
<span class="cp"># Tell Git about your signing key
</span><span class="err">$</span> <span class="n">git</span> <span class="n">config</span> <span class="o">--</span><span class="n">global</span> <span class="n">user</span><span class="p">.</span><span class="n">signingkey</span> <span class="n">DD95F119EA64BABE</span>
<span class="cp"># Instruct to sign every commit
</span><span class="err">$</span> <span class="n">git</span> <span class="n">config</span> <span class="o">--</span><span class="n">global</span> <span class="n">commit</span><span class="p">.</span><span class="n">gpgsign</span> <span class="nb">true</span>
<span class="cp"># Add to startup of terminal
</span><span class="err">$</span> <span class="p">[</span> <span class="o">-</span><span class="n">f</span> <span class="o">~/</span><span class="p">.</span><span class="n">bashrc</span> <span class="p">]</span> <span class="o">&&</span> <span class="n">echo</span> <span class="o">-</span><span class="n">e</span> <span class="err">'\</span><span class="n">nexport</span> <span class="n">GPG_TTY</span><span class="o">=</span><span class="err">$</span><span class="p">(</span><span class="n">tty</span><span class="p">)</span><span class="err">'</span> <span class="o">>></span> <span class="o">~/</span><span class="p">.</span><span class="n">bashrc</span>
</code></pre></div></div>
<h3 id="reference">Reference</h3>
<ol>
<li><a href="https://docs.github.com/en/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key">https://docs.github.com/en/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key
</a></li>
</ol>
How to install cuda on ubuntu 22.04 or Linux Mint 21.2
2023-12-21T17:40:12+05:30
https://mrprajesh.co.in/how-to-install-cuda-ubuntu-22-04
<p>On fresh install of the OS, I did the following to get it working.</p>
<ol>
<li>Find the CUDA driver version required for your GPU. I saw 535 from my (3060 RTX)[https://www.nvidia.com/download/index.aspx]</li>
<li>Find the CUDA version that has that driver. I found 12.2 which matched 535 driver version <code class="language-plaintext highlighter-rouge">xx.x.x_535.xx.xx_linux</code></li>
<li>In grub press e and type <code class="language-plaintext highlighter-rouge">nomodeset</code> before <code class="language-plaintext highlighter-rouge">quite splash</code> //unsure</li>
<li>ALT+F1. Login to tty</li>
<li><code class="language-plaintext highlighter-rouge">sudo service lightdm stop</code></li>
<li><code class="language-plaintext highlighter-rouge">wget https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda_12.2.2_535.104.05_linux.run</code></li>
<li><code class="language-plaintext highlighter-rouge">sudo sh cuda_12.2.2_535.104.05_linux.run </code>
<ul>
<li>Accept.</li>
<li>Tick Driver, Toolkit, Demo</li>
<li>INSTALL</li>
</ul>
</li>
<li>Unpon success. reboot.</li>
<li>Append in <code class="language-plaintext highlighter-rouge">~/.bashrc</code>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">export</span> <span class="n">PATH</span><span class="o">=/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">cuda</span><span class="o">-</span><span class="mi">12</span><span class="p">.</span><span class="mi">2</span><span class="o">/</span><span class="n">bin</span><span class="err">$</span><span class="p">{</span><span class="n">PATH</span><span class="o">:+:</span><span class="err">$</span><span class="p">{</span><span class="n">PATH</span><span class="p">}}</span>
<span class="n">export</span> <span class="n">LD_LIBRARY_PATH</span><span class="o">=/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">cuda</span><span class="o">-</span><span class="mi">12</span><span class="p">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib64</span><span class="err">$</span><span class="p">{</span><span class="n">LD_LIBRARY_PATH</span><span class="o">:+:</span><span class="err">$</span><span class="p">{</span><span class="n">LD_LIBRARY_PATH</span><span class="p">}}</span>
</code></pre></div> </div>
</li>
</ol>
<h2 id="check-the-installation">Check the installation.</h2>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">## Step 1
</span>
<span class="err">$</span> <span class="n">nvcc</span> <span class="o">--</span><span class="n">version</span>
<span class="n">nvcc</span><span class="o">:</span> <span class="n">NVIDIA</span> <span class="p">(</span><span class="n">R</span><span class="p">)</span> <span class="n">Cuda</span> <span class="n">compiler</span> <span class="n">driver</span>
<span class="n">Copyright</span> <span class="p">(</span><span class="n">c</span><span class="p">)</span> <span class="mi">2005</span><span class="o">-</span><span class="mi">2023</span> <span class="n">NVIDIA</span> <span class="n">Corporation</span>
<span class="n">Built</span> <span class="n">on</span> <span class="n">Tue_Aug_15_22</span><span class="o">:</span><span class="mo">02</span><span class="o">:</span><span class="mi">13</span><span class="n">_PDT_2023</span>
<span class="n">Cuda</span> <span class="n">compilation</span> <span class="n">tools</span><span class="p">,</span> <span class="n">release</span> <span class="mi">12</span><span class="p">.</span><span class="mi">2</span><span class="p">,</span> <span class="n">V12</span><span class="p">.</span><span class="mi">2</span><span class="p">.</span><span class="mi">140</span>
<span class="n">Build</span> <span class="n">cuda_12</span><span class="p">.</span><span class="mi">2</span><span class="p">.</span><span class="n">r12</span><span class="p">.</span><span class="mi">2</span><span class="o">/</span><span class="n">compiler</span><span class="p">.</span><span class="mi">33191640</span><span class="n">_0</span>
<span class="cp">## Step 2
</span><span class="err">$</span> <span class="n">nvidia</span><span class="o">-</span><span class="n">smi</span>
<span class="n">Thu</span> <span class="n">Dec</span> <span class="mi">21</span> <span class="mi">17</span><span class="o">:</span><span class="mi">51</span><span class="o">:</span><span class="mi">50</span> <span class="mi">2023</span>
<span class="o">+---------------------------------------------------------------------------------------+</span>
<span class="o">|</span> <span class="n">NVIDIA</span><span class="o">-</span><span class="n">SMI</span> <span class="mi">535</span><span class="p">.</span><span class="mi">104</span><span class="p">.</span><span class="mo">05</span> <span class="n">Driver</span> <span class="n">Version</span><span class="o">:</span> <span class="mi">535</span><span class="p">.</span><span class="mi">104</span><span class="p">.</span><span class="mo">05</span> <span class="n">CUDA</span> <span class="n">Version</span><span class="o">:</span> <span class="mi">12</span><span class="p">.</span><span class="mi">2</span> <span class="o">|</span>
<span class="o">|-----------------------------------------+----------------------+----------------------+</span>
<span class="o">|</span> <span class="n">GPU</span> <span class="n">Name</span> <span class="n">Persistence</span><span class="o">-</span><span class="n">M</span> <span class="o">|</span> <span class="n">Bus</span><span class="o">-</span><span class="n">Id</span> <span class="n">Disp</span><span class="p">.</span><span class="n">A</span> <span class="o">|</span> <span class="n">Volatile</span> <span class="n">Uncorr</span><span class="p">.</span> <span class="n">ECC</span> <span class="o">|</span>
<span class="o">|</span> <span class="n">Fan</span> <span class="n">Temp</span> <span class="n">Perf</span> <span class="n">Pwr</span><span class="o">:</span><span class="n">Usage</span><span class="o">/</span><span class="n">Cap</span> <span class="o">|</span> <span class="n">Memory</span><span class="o">-</span><span class="n">Usage</span> <span class="o">|</span> <span class="n">GPU</span><span class="o">-</span><span class="n">Util</span> <span class="n">Compute</span> <span class="n">M</span><span class="p">.</span> <span class="o">|</span>
<span class="o">|</span> <span class="o">|</span> <span class="o">|</span> <span class="n">MIG</span> <span class="n">M</span><span class="p">.</span> <span class="o">|</span>
<span class="o">|=========================================+======================+======================|</span>
<span class="o">|</span> <span class="mi">0</span> <span class="n">NVIDIA</span> <span class="n">GeForce</span> <span class="n">RTX</span> <span class="mi">3060</span> <span class="p">...</span> <span class="n">Off</span> <span class="o">|</span> <span class="mo">00000000</span><span class="o">:</span><span class="mo">01</span><span class="o">:</span><span class="mo">00</span><span class="p">.</span><span class="mi">0</span> <span class="n">On</span> <span class="o">|</span> <span class="n">N</span><span class="o">/</span><span class="n">A</span> <span class="o">|</span>
<span class="o">|</span> <span class="n">N</span><span class="o">/</span><span class="n">A</span> <span class="mi">55</span><span class="n">C</span> <span class="n">P8</span> <span class="mi">16</span><span class="n">W</span> <span class="o">/</span> <span class="mi">115</span><span class="n">W</span> <span class="o">|</span> <span class="mi">50</span><span class="n">MiB</span> <span class="o">/</span> <span class="mi">6144</span><span class="n">MiB</span> <span class="o">|</span> <span class="mi">7</span><span class="o">%</span> <span class="n">Default</span> <span class="o">|</span>
<span class="o">|</span> <span class="o">|</span> <span class="o">|</span> <span class="n">N</span><span class="o">/</span><span class="n">A</span> <span class="o">|</span>
<span class="o">+-----------------------------------------+----------------------+----------------------+</span>
<span class="o">+---------------------------------------------------------------------------------------+</span>
<span class="o">|</span> <span class="n">Processes</span><span class="o">:</span> <span class="o">|</span>
<span class="o">|</span> <span class="n">GPU</span> <span class="n">GI</span> <span class="n">CI</span> <span class="n">PID</span> <span class="n">Type</span> <span class="n">Process</span> <span class="n">name</span> <span class="n">GPU</span> <span class="n">Memory</span> <span class="o">|</span>
<span class="o">|</span> <span class="n">ID</span> <span class="n">ID</span> <span class="n">Usage</span> <span class="o">|</span>
<span class="o">|=======================================================================================|</span>
<span class="o">|</span> <span class="mi">0</span> <span class="n">N</span><span class="o">/</span><span class="n">A</span> <span class="n">N</span><span class="o">/</span><span class="n">A</span> <span class="mi">1143</span> <span class="n">G</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">xorg</span><span class="o">/</span><span class="n">Xorg</span> <span class="mi">45</span><span class="n">MiB</span> <span class="o">|</span>
<span class="o">+---------------------------------------------------------------------------------------+</span>
<span class="cp">## Step 3
</span>
<span class="err">$</span> <span class="n">git</span> <span class="n">clone</span> <span class="n">https</span><span class="o">:</span><span class="c1">//github.com/NVIDIA/cuda-samples.git</span>
<span class="err">$</span> <span class="n">cd</span> <span class="n">cuda</span><span class="o">-</span><span class="n">samples</span><span class="o">/</span><span class="n">Samples</span><span class="o">/</span><span class="mi">1</span><span class="n">_Utilities</span><span class="o">/</span><span class="n">deviceQuery</span>
<span class="err">$</span> <span class="n">make</span>
<span class="err">$</span> <span class="p">.</span><span class="o">/</span><span class="n">deviceQuery</span>
<span class="p">.</span><span class="o">/</span><span class="n">deviceQuery</span> <span class="n">Starting</span><span class="p">...</span>
<span class="n">CUDA</span> <span class="n">Device</span> <span class="n">Query</span> <span class="p">(</span><span class="n">Runtime</span> <span class="n">API</span><span class="p">)</span> <span class="n">version</span> <span class="p">(</span><span class="n">CUDART</span> <span class="k">static</span> <span class="n">linking</span><span class="p">)</span>
<span class="n">Detected</span> <span class="mi">1</span> <span class="n">CUDA</span> <span class="n">Capable</span> <span class="n">device</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
<span class="n">Device</span> <span class="mi">0</span><span class="o">:</span> <span class="s">"NVIDIA GeForce RTX 3060 Laptop GPU"</span>
<span class="n">CUDA</span> <span class="n">Driver</span> <span class="n">Version</span> <span class="o">/</span> <span class="n">Runtime</span> <span class="n">Version</span> <span class="mi">12</span><span class="p">.</span><span class="mi">2</span> <span class="o">/</span> <span class="mi">12</span><span class="p">.</span><span class="mi">2</span>
<span class="n">CUDA</span> <span class="n">Capability</span> <span class="n">Major</span><span class="o">/</span><span class="n">Minor</span> <span class="n">version</span> <span class="n">number</span><span class="o">:</span> <span class="mi">8</span><span class="p">.</span><span class="mi">6</span>
<span class="n">Total</span> <span class="n">amount</span> <span class="n">of</span> <span class="n">global</span> <span class="n">memory</span><span class="o">:</span> <span class="mi">5938</span> <span class="n">MBytes</span> <span class="p">(</span><span class="mi">6226378752</span> <span class="n">bytes</span><span class="p">)</span>
<span class="p">(</span><span class="mo">030</span><span class="p">)</span> <span class="n">Multiprocessors</span><span class="p">,</span> <span class="p">(</span><span class="mi">128</span><span class="p">)</span> <span class="n">CUDA</span> <span class="n">Cores</span><span class="o">/</span><span class="n">MP</span><span class="o">:</span> <span class="mi">3840</span> <span class="n">CUDA</span> <span class="n">Cores</span>
<span class="n">GPU</span> <span class="n">Max</span> <span class="n">Clock</span> <span class="n">rate</span><span class="o">:</span> <span class="mi">1702</span> <span class="n">MHz</span> <span class="p">(</span><span class="mi">1</span><span class="p">.</span><span class="mi">70</span> <span class="n">GHz</span><span class="p">)</span>
<span class="n">Memory</span> <span class="n">Clock</span> <span class="n">rate</span><span class="o">:</span> <span class="mi">7001</span> <span class="n">Mhz</span>
<span class="n">Memory</span> <span class="n">Bus</span> <span class="n">Width</span><span class="o">:</span> <span class="mi">192</span><span class="o">-</span><span class="n">bit</span>
<span class="n">L2</span> <span class="n">Cache</span> <span class="n">Size</span><span class="o">:</span> <span class="mi">3145728</span> <span class="n">bytes</span>
<span class="n">Maximum</span> <span class="n">Texture</span> <span class="n">Dimension</span> <span class="n">Size</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">)</span> <span class="mi">1</span><span class="n">D</span><span class="o">=</span><span class="p">(</span><span class="mi">131072</span><span class="p">),</span> <span class="mi">2</span><span class="n">D</span><span class="o">=</span><span class="p">(</span><span class="mi">131072</span><span class="p">,</span> <span class="mi">65536</span><span class="p">),</span> <span class="mi">3</span><span class="n">D</span><span class="o">=</span><span class="p">(</span><span class="mi">16384</span><span class="p">,</span> <span class="mi">16384</span><span class="p">,</span> <span class="mi">16384</span><span class="p">)</span>
<span class="n">Maximum</span> <span class="n">Layered</span> <span class="mi">1</span><span class="n">D</span> <span class="n">Texture</span> <span class="n">Size</span><span class="p">,</span> <span class="p">(</span><span class="n">num</span><span class="p">)</span> <span class="n">layers</span> <span class="mi">1</span><span class="n">D</span><span class="o">=</span><span class="p">(</span><span class="mi">32768</span><span class="p">),</span> <span class="mi">2048</span> <span class="n">layers</span>
<span class="n">Maximum</span> <span class="n">Layered</span> <span class="mi">2</span><span class="n">D</span> <span class="n">Texture</span> <span class="n">Size</span><span class="p">,</span> <span class="p">(</span><span class="n">num</span><span class="p">)</span> <span class="n">layers</span> <span class="mi">2</span><span class="n">D</span><span class="o">=</span><span class="p">(</span><span class="mi">32768</span><span class="p">,</span> <span class="mi">32768</span><span class="p">),</span> <span class="mi">2048</span> <span class="n">layers</span>
<span class="n">Total</span> <span class="n">amount</span> <span class="n">of</span> <span class="n">constant</span> <span class="n">memory</span><span class="o">:</span> <span class="mi">65536</span> <span class="n">bytes</span>
<span class="n">Total</span> <span class="n">amount</span> <span class="n">of</span> <span class="n">shared</span> <span class="n">memory</span> <span class="n">per</span> <span class="n">block</span><span class="o">:</span> <span class="mi">49152</span> <span class="n">bytes</span>
<span class="n">Total</span> <span class="n">shared</span> <span class="n">memory</span> <span class="n">per</span> <span class="n">multiprocessor</span><span class="o">:</span> <span class="mi">102400</span> <span class="n">bytes</span>
<span class="n">Total</span> <span class="n">number</span> <span class="n">of</span> <span class="n">registers</span> <span class="n">available</span> <span class="n">per</span> <span class="n">block</span><span class="o">:</span> <span class="mi">65536</span>
<span class="n">Warp</span> <span class="n">size</span><span class="o">:</span> <span class="mi">32</span>
<span class="n">Maximum</span> <span class="n">number</span> <span class="n">of</span> <span class="n">threads</span> <span class="n">per</span> <span class="n">multiprocessor</span><span class="o">:</span> <span class="mi">1536</span>
<span class="n">Maximum</span> <span class="n">number</span> <span class="n">of</span> <span class="n">threads</span> <span class="n">per</span> <span class="n">block</span><span class="o">:</span> <span class="mi">1024</span>
<span class="n">Max</span> <span class="n">dimension</span> <span class="n">size</span> <span class="n">of</span> <span class="n">a</span> <span class="kr">thread</span> <span class="n">block</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">)</span><span class="o">:</span> <span class="p">(</span><span class="mi">1024</span><span class="p">,</span> <span class="mi">1024</span><span class="p">,</span> <span class="mi">64</span><span class="p">)</span>
<span class="n">Max</span> <span class="n">dimension</span> <span class="n">size</span> <span class="n">of</span> <span class="n">a</span> <span class="n">grid</span> <span class="n">size</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">)</span><span class="o">:</span> <span class="p">(</span><span class="mi">2147483647</span><span class="p">,</span> <span class="mi">65535</span><span class="p">,</span> <span class="mi">65535</span><span class="p">)</span>
<span class="n">Maximum</span> <span class="n">memory</span> <span class="n">pitch</span><span class="o">:</span> <span class="mi">2147483647</span> <span class="n">bytes</span>
<span class="n">Texture</span> <span class="n">alignment</span><span class="o">:</span> <span class="mi">512</span> <span class="n">bytes</span>
<span class="n">Concurrent</span> <span class="n">copy</span> <span class="n">and</span> <span class="n">kernel</span> <span class="n">execution</span><span class="o">:</span> <span class="n">Yes</span> <span class="n">with</span> <span class="mi">2</span> <span class="n">copy</span> <span class="n">engine</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
<span class="n">Run</span> <span class="n">time</span> <span class="n">limit</span> <span class="n">on</span> <span class="n">kernels</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Integrated</span> <span class="n">GPU</span> <span class="n">sharing</span> <span class="n">Host</span> <span class="n">Memory</span><span class="o">:</span> <span class="n">No</span>
<span class="n">Support</span> <span class="n">host</span> <span class="n">page</span><span class="o">-</span><span class="n">locked</span> <span class="n">memory</span> <span class="n">mapping</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Alignment</span> <span class="n">requirement</span> <span class="k">for</span> <span class="n">Surfaces</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Device</span> <span class="n">has</span> <span class="n">ECC</span> <span class="n">support</span><span class="o">:</span> <span class="n">Disabled</span>
<span class="n">Device</span> <span class="n">supports</span> <span class="n">Unified</span> <span class="n">Addressing</span> <span class="p">(</span><span class="n">UVA</span><span class="p">)</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Device</span> <span class="n">supports</span> <span class="n">Managed</span> <span class="n">Memory</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Device</span> <span class="n">supports</span> <span class="n">Compute</span> <span class="n">Preemption</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Supports</span> <span class="n">Cooperative</span> <span class="n">Kernel</span> <span class="n">Launch</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Supports</span> <span class="n">MultiDevice</span> <span class="n">Co</span><span class="o">-</span><span class="n">op</span> <span class="n">Kernel</span> <span class="n">Launch</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Device</span> <span class="n">PCI</span> <span class="n">Domain</span> <span class="n">ID</span> <span class="o">/</span> <span class="n">Bus</span> <span class="n">ID</span> <span class="o">/</span> <span class="n">location</span> <span class="n">ID</span><span class="o">:</span> <span class="mi">0</span> <span class="o">/</span> <span class="mi">1</span> <span class="o">/</span> <span class="mi">0</span>
<span class="n">Compute</span> <span class="n">Mode</span><span class="o">:</span>
<span class="o"><</span> <span class="n">Default</span> <span class="p">(</span><span class="n">multiple</span> <span class="n">host</span> <span class="n">threads</span> <span class="n">can</span> <span class="n">use</span> <span class="o">::</span><span class="n">cudaSetDevice</span><span class="p">()</span> <span class="n">with</span> <span class="n">device</span> <span class="n">simultaneously</span><span class="p">)</span> <span class="o">></span>
<span class="n">deviceQuery</span><span class="p">,</span> <span class="n">CUDA</span> <span class="n">Driver</span> <span class="o">=</span> <span class="n">CUDART</span><span class="p">,</span> <span class="n">CUDA</span> <span class="n">Driver</span> <span class="n">Version</span> <span class="o">=</span> <span class="mi">12</span><span class="p">.</span><span class="mi">2</span><span class="p">,</span> <span class="n">CUDA</span> <span class="n">Runtime</span> <span class="n">Version</span> <span class="o">=</span> <span class="mi">12</span><span class="p">.</span><span class="mi">2</span><span class="p">,</span> <span class="n">NumDevs</span> <span class="o">=</span> <span class="mi">1</span>
<span class="n">Result</span> <span class="o">=</span> <span class="n">PASS</span>
</code></pre></div></div>
<h2 id="hello-world-cuda">Hello World CUDA!</h2>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="n">cat</span> <span class="n">a</span><span class="p">.</span><span class="n">cu</span>
<span class="cp">#include</span> <span class="cpf"><cuda.h></span><span class="cp">
#include</span> <span class="cpf"><stdio.h></span><span class="cp">
</span><span class="n">__global__</span> <span class="kt">void</span> <span class="nf">k</span><span class="p">(){</span>
<span class="n">printf</span><span class="p">(</span><span class="s">"hello %u!</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">threadIdx</span><span class="p">.</span><span class="n">x</span><span class="p">);</span>
<span class="p">}</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">void</span><span class="p">){</span>
<span class="n">k</span><span class="o"><<<</span><span class="mi">2</span><span class="p">,</span><span class="mi">32</span><span class="o">>>></span><span class="p">();</span>
<span class="n">cudaDeviceSynchronize</span><span class="p">();</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
<span class="n">nvcc</span> <span class="n">a</span><span class="p">.</span><span class="n">cu</span> <span class="o">&&</span> <span class="p">.</span><span class="o">/</span><span class="n">a</span><span class="p">.</span><span class="n">out</span>
</code></pre></div></div>
<h3 id="other-thoughts">Other thoughts.</h3>
<ol>
<li>Install the driver version from driver manager</li>
<li>While cuda install just deselect the driver</li>
</ol>
How To Install Tensorflow GPU
2023-03-10T15:40:51+05:30
https://mrprajesh.co.in/how-to-install-tensorflow-gpu
<h3 id="requirements">Requirements</h3>
<ul>
<li>Python 3.9+</li>
<li>Conda</li>
<li>NVidia GPU</li>
<li>Ubuntu 20.04</li>
</ul>
<p>It was pretty straightforward from Official docs.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="n">conda</span> <span class="n">create</span> <span class="o">--</span><span class="n">name</span> <span class="n">tf</span> <span class="n">python</span><span class="o">=</span><span class="mi">3</span><span class="p">.</span><span class="mi">9</span>
<span class="n">conda</span> <span class="n">activate</span> <span class="n">tf</span>
<span class="p">(</span><span class="n">tf</span><span class="p">)</span> <span class="n">nvidia</span><span class="o">-</span><span class="n">smi</span>
<span class="p">(</span><span class="n">tf</span><span class="p">)</span> <span class="n">conda</span> <span class="n">install</span> <span class="o">-</span><span class="n">c</span> <span class="n">conda</span><span class="o">-</span><span class="n">forge</span> <span class="n">cudatoolkit</span><span class="o">=</span><span class="mi">11</span><span class="p">.</span><span class="mi">2</span><span class="p">.</span><span class="mi">2</span> <span class="n">cudnn</span><span class="o">=</span><span class="mi">8</span><span class="p">.</span><span class="mi">1</span><span class="p">.</span><span class="mi">0</span>
<span class="p">(</span><span class="n">tf</span><span class="p">)</span> <span class="n">export</span> <span class="n">LD_LIBRARY_PATH</span><span class="o">=</span><span class="err">$</span><span class="n">LD_LIBRARY_PATH</span><span class="o">:</span><span class="err">$</span><span class="n">CONDA_PREFIX</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span>
<span class="p">(</span><span class="n">tf</span><span class="p">)</span> <span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">upgrade</span> <span class="n">pip</span>
<span class="p">(</span><span class="n">tf</span><span class="p">)</span> <span class="n">pip</span> <span class="n">install</span> <span class="n">tensorflow</span>
<span class="p">(</span><span class="n">tf</span><span class="p">)</span> <span class="n">python3</span> <span class="o">-</span><span class="n">c</span> <span class="s">"import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"</span>
<span class="n">python3</span> <span class="o">-</span><span class="n">c</span> <span class="s">"import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"</span>
<span class="mi">2023</span><span class="o">-</span><span class="mo">03</span><span class="o">-</span><span class="mi">10</span> <span class="mi">14</span><span class="o">:</span><span class="mi">15</span><span class="o">:</span><span class="mi">53</span><span class="p">.</span><span class="mi">991865</span><span class="o">:</span> <span class="n">I</span> <span class="n">tensorflow</span><span class="o">/</span><span class="n">core</span><span class="o">/</span><span class="n">platform</span><span class="o">/</span><span class="n">cpu_feature_guard</span><span class="p">.</span><span class="n">cc</span><span class="o">:</span><span class="mi">193</span><span class="p">]</span> <span class="n">This</span> <span class="n">TensorFlow</span> <span class="n">binary</span> <span class="n">is</span> <span class="n">optimized</span> <span class="n">with</span> <span class="n">oneAPI</span> <span class="n">Deep</span> <span class="n">Neural</span> <span class="n">Network</span> <span class="n">Library</span> <span class="p">(</span><span class="n">oneDNN</span><span class="p">)</span> <span class="n">to</span> <span class="n">use</span> <span class="n">the</span> <span class="n">following</span> <span class="n">CPU</span> <span class="n">instructions</span> <span class="n">in</span> <span class="n">performance</span><span class="o">-</span><span class="n">critical</span> <span class="n">operations</span><span class="o">:</span> <span class="n">AVX2</span> <span class="n">AVX_VNNI</span> <span class="n">FMA</span>
<span class="n">To</span> <span class="n">enable</span> <span class="n">them</span> <span class="n">in</span> <span class="n">other</span> <span class="n">operations</span><span class="p">,</span> <span class="n">rebuild</span> <span class="n">TensorFlow</span> <span class="n">with</span> <span class="n">the</span> <span class="n">appropriate</span> <span class="n">compiler</span> <span class="n">flags</span><span class="p">.</span>
<span class="p">...</span>
<span class="mi">2023</span><span class="o">-</span><span class="mo">03</span><span class="o">-</span><span class="mi">10</span> <span class="mi">14</span><span class="o">:</span><span class="mi">15</span><span class="o">:</span><span class="mi">55</span><span class="p">.</span><span class="mi">331872</span><span class="o">:</span> <span class="n">I</span> <span class="n">tensorflow</span><span class="o">/</span><span class="n">compiler</span><span class="o">/</span><span class="n">xla</span><span class="o">/</span><span class="n">stream_executor</span><span class="o">/</span><span class="n">cuda</span><span class="o">/</span><span class="n">cuda_gpu_executor</span><span class="p">.</span><span class="n">cc</span><span class="o">:</span><span class="mi">981</span><span class="p">]</span> <span class="n">successful</span> <span class="n">NUMA</span> <span class="n">node</span> <span class="n">read</span> <span class="n">from</span> <span class="n">SysFS</span> <span class="n">had</span> <span class="n">negative</span> <span class="n">value</span> <span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span> <span class="n">but</span> <span class="n">there</span> <span class="n">must</span> <span class="n">be</span> <span class="n">at</span> <span class="n">least</span> <span class="n">one</span> <span class="n">NUMA</span> <span class="n">node</span><span class="p">,</span> <span class="n">so</span> <span class="n">returning</span> <span class="n">NUMA</span> <span class="n">node</span> <span class="n">zero</span>
<span class="mi">2023</span><span class="o">-</span><span class="mo">03</span><span class="o">-</span><span class="mi">10</span> <span class="mi">14</span><span class="o">:</span><span class="mi">15</span><span class="o">:</span><span class="mi">55</span><span class="p">.</span><span class="mi">331944</span><span class="o">:</span> <span class="n">I</span> <span class="n">tensorflow</span><span class="o">/</span><span class="n">core</span><span class="o">/</span><span class="n">common_runtime</span><span class="o">/</span><span class="n">gpu</span><span class="o">/</span><span class="n">gpu_device</span><span class="p">.</span><span class="n">cc</span><span class="o">:</span><span class="mi">1613</span><span class="p">]</span> <span class="n">Created</span> <span class="n">device</span> <span class="o">/</span><span class="n">job</span><span class="o">:</span><span class="n">localhost</span><span class="o">/</span><span class="n">replica</span><span class="o">:</span><span class="mi">0</span><span class="o">/</span><span class="n">task</span><span class="o">:</span><span class="mi">0</span><span class="o">/</span><span class="n">device</span><span class="o">:</span><span class="n">GPU</span><span class="o">:</span><span class="mi">0</span> <span class="n">with</span> <span class="mi">3801</span> <span class="n">MB</span> <span class="n">memory</span><span class="o">:</span> <span class="o">-></span> <span class="n">device</span><span class="o">:</span> <span class="mi">0</span><span class="p">,</span> <span class="n">name</span><span class="o">:</span> <span class="n">NVIDIA</span> <span class="n">GeForce</span> <span class="n">RTX</span> <span class="mi">3060</span> <span class="n">Laptop</span> <span class="n">GPU</span><span class="p">,</span> <span class="n">pci</span> <span class="n">bus</span> <span class="n">id</span><span class="o">:</span> <span class="mo">0000</span><span class="o">:</span><span class="mo">01</span><span class="o">:</span><span class="mo">00</span><span class="p">.</span><span class="mi">0</span><span class="p">,</span> <span class="n">compute</span> <span class="n">capability</span><span class="o">:</span> <span class="mi">8</span><span class="p">.</span><span class="mi">6</span>
<span class="n">tf</span><span class="p">.</span><span class="n">Tensor</span><span class="p">(</span><span class="o">-</span><span class="mi">110</span><span class="p">.</span><span class="mi">189026</span><span class="p">,</span> <span class="n">shape</span><span class="o">=</span><span class="p">(),</span> <span class="n">dtype</span><span class="o">=</span><span class="n">float32</span><span class="p">)</span>
<span class="p">(</span><span class="n">tf</span><span class="p">)</span> <span class="n">python3</span> <span class="o">-</span><span class="n">c</span> <span class="s">"import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"</span>
<span class="mi">2023</span><span class="o">-</span><span class="mo">03</span><span class="o">-</span><span class="mi">10</span> <span class="mi">14</span><span class="o">:</span><span class="mi">16</span><span class="o">:</span><span class="mi">25</span><span class="p">.</span><span class="mi">743784</span><span class="o">:</span> <span class="n">I</span> <span class="n">tensorflow</span><span class="o">/</span><span class="n">compiler</span><span class="o">/</span><span class="n">xla</span><span class="o">/</span><span class="n">stream_executor</span><span class="o">/</span><span class="n">cuda</span><span class="o">/</span><span class="n">cuda_gpu_executor</span><span class="p">.</span><span class="n">cc</span><span class="o">:</span><span class="mi">981</span><span class="p">]</span> <span class="n">successful</span> <span class="n">NUMA</span> <span class="n">node</span> <span class="n">read</span> <span class="n">from</span> <span class="n">SysFS</span> <span class="n">had</span> <span class="n">negative</span> <span class="n">value</span> <span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span> <span class="n">but</span> <span class="n">there</span> <span class="n">must</span> <span class="n">be</span> <span class="n">at</span> <span class="n">least</span> <span class="n">one</span> <span class="n">NUMA</span> <span class="n">node</span><span class="p">,</span> <span class="n">so</span> <span class="n">returning</span> <span class="n">NUMA</span> <span class="n">node</span> <span class="n">zero</span>
<span class="mi">2023</span><span class="o">-</span><span class="mo">03</span><span class="o">-</span><span class="mi">10</span> <span class="mi">14</span><span class="o">:</span><span class="mi">16</span><span class="o">:</span><span class="mi">25</span><span class="p">.</span><span class="mi">765042</span><span class="o">:</span> <span class="n">I</span> <span class="n">tensorflow</span><span class="o">/</span><span class="n">compiler</span><span class="o">/</span><span class="n">xla</span><span class="o">/</span><span class="n">stream_executor</span><span class="o">/</span><span class="n">cuda</span><span class="o">/</span><span class="n">cuda_gpu_executor</span><span class="p">.</span><span class="n">cc</span><span class="o">:</span><span class="mi">981</span><span class="p">]</span> <span class="n">successful</span> <span class="n">NUMA</span> <span class="n">node</span> <span class="n">read</span> <span class="n">from</span> <span class="n">SysFS</span> <span class="n">had</span> <span class="n">negative</span> <span class="n">value</span> <span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span> <span class="n">but</span> <span class="n">there</span> <span class="n">must</span> <span class="n">be</span> <span class="n">at</span> <span class="n">least</span> <span class="n">one</span> <span class="n">NUMA</span> <span class="n">node</span><span class="p">,</span> <span class="n">so</span> <span class="n">returning</span> <span class="n">NUMA</span> <span class="n">node</span> <span class="n">zero</span>
<span class="mi">2023</span><span class="o">-</span><span class="mo">03</span><span class="o">-</span><span class="mi">10</span> <span class="mi">14</span><span class="o">:</span><span class="mi">16</span><span class="o">:</span><span class="mi">25</span><span class="p">.</span><span class="mi">765153</span><span class="o">:</span> <span class="n">I</span> <span class="n">tensorflow</span><span class="o">/</span><span class="n">compiler</span><span class="o">/</span><span class="n">xla</span><span class="o">/</span><span class="n">stream_executor</span><span class="o">/</span><span class="n">cuda</span><span class="o">/</span><span class="n">cuda_gpu_executor</span><span class="p">.</span><span class="n">cc</span><span class="o">:</span><span class="mi">981</span><span class="p">]</span> <span class="n">successful</span> <span class="n">NUMA</span> <span class="n">node</span> <span class="n">read</span> <span class="n">from</span> <span class="n">SysFS</span> <span class="n">had</span> <span class="n">negative</span> <span class="n">value</span> <span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span> <span class="n">but</span> <span class="n">there</span> <span class="n">must</span> <span class="n">be</span> <span class="n">at</span> <span class="n">least</span> <span class="n">one</span> <span class="n">NUMA</span> <span class="n">node</span><span class="p">,</span> <span class="n">so</span> <span class="n">returning</span> <span class="n">NUMA</span> <span class="n">node</span> <span class="n">zero</span>
<span class="p">[</span><span class="n">PhysicalDevice</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="err">'</span><span class="o">/</span><span class="n">physical_device</span><span class="o">:</span><span class="n">GPU</span><span class="o">:</span><span class="mi">0</span><span class="err">'</span><span class="p">,</span> <span class="n">device_type</span><span class="o">=</span><span class="err">'</span><span class="n">GPU</span><span class="err">'</span><span class="p">)]</span>
</code></pre></div></div>
<h3 id="refs">Refs</h3>
<ul>
<li><a href="https://www.tensorflow.org/install/pip">Official Docs</a></li>
<li><a href="https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/5926#issuecomment-1445364980">Issue</a></li>
</ul>
GUI for cpp codes
2023-03-06T14:02:17+05:30
https://mrprajesh.co.in/GUI-for-cpp-codes
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">key</span> <span class="n">adv</span> <span class="o">--</span><span class="n">fetch</span><span class="o">-</span><span class="n">keys</span> <span class="n">https</span><span class="o">:</span><span class="c1">//repos.codelite.org/CodeLite.asc</span>
<span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">add</span><span class="o">-</span><span class="n">repository</span> <span class="err">'</span><span class="n">deb</span> <span class="n">https</span><span class="o">:</span><span class="c1">//repos.codelite.org/wx3.2.0/ubuntu/ focal universe'</span>
<span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">update</span>
<span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">libwxbase3</span><span class="p">.</span><span class="mi">2</span><span class="o">-</span><span class="mi">0</span><span class="o">-</span><span class="n">unofficial</span> \
<span class="n">libwxbase3</span><span class="p">.</span><span class="mi">2u</span><span class="n">nofficial</span><span class="o">-</span><span class="n">dev</span> \
<span class="n">libwxgtk3</span><span class="p">.</span><span class="mi">2</span><span class="o">-</span><span class="mi">0</span><span class="o">-</span><span class="n">unofficial</span> \
<span class="n">libwxgtk3</span><span class="p">.</span><span class="mi">2u</span><span class="n">nofficial</span><span class="o">-</span><span class="n">dev</span> \
<span class="n">wx3</span><span class="p">.</span><span class="mi">2</span><span class="o">-</span><span class="n">headers</span> \
<span class="n">wx</span><span class="o">-</span><span class="n">common</span> \
<span class="n">wx3</span><span class="p">.</span><span class="mi">2</span><span class="o">-</span><span class="n">examples</span>
<span class="c1">// Optional!</span>
<span class="n">LDFLAGS</span><span class="o">=</span><span class="err">$</span><span class="p">(</span><span class="n">pkg</span><span class="o">-</span><span class="n">config</span> <span class="o">--</span><span class="n">libs</span> <span class="n">gtk</span><span class="o">+-</span><span class="mi">3</span><span class="p">.</span><span class="mi">0</span><span class="p">)</span> <span class="n">CXXFLAGS</span><span class="o">=</span><span class="err">$</span><span class="p">(</span><span class="n">pkg</span><span class="o">-</span><span class="n">config</span> <span class="o">--</span><span class="n">cflags</span> <span class="n">gtk</span><span class="o">+-</span><span class="mi">3</span><span class="p">.</span><span class="mi">0</span><span class="p">)</span> <span class="n">make</span> <span class="o">-</span><span class="n">j</span><span class="err">$</span><span class="p">(</span><span class="n">nproc</span><span class="p">)</span>
</code></pre></div></div>
How to find Linux OS version details using terminal.
2023-03-06T13:49:59+05:30
https://mrprajesh.co.in/how-to-know-mint-version
<p>There are multiple GUI-ways to find the Linux OS versions. Here are some the might come handy</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"># Kernel Information.
</span>
<span class="err">$</span> <span class="n">uname</span> <span class="o">-</span><span class="n">a</span>
<span class="n">Linux</span> <span class="n">g15warrior</span> <span class="mi">5</span><span class="p">.</span><span class="mi">15</span><span class="p">.</span><span class="mi">0</span><span class="o">-</span><span class="mi">41</span><span class="o">-</span><span class="n">generic</span> <span class="err">#</span><span class="mi">44</span><span class="o">~</span><span class="mi">20</span><span class="p">.</span><span class="mo">04</span><span class="p">.</span><span class="mi">1</span><span class="o">-</span><span class="n">Ubuntu</span> <span class="n">SMP</span> <span class="n">Fri</span> <span class="n">Jun</span> <span class="mi">24</span> <span class="mi">13</span><span class="o">:</span><span class="mi">27</span><span class="o">:</span><span class="mi">29</span> <span class="n">UTC</span> <span class="mi">2022</span> <span class="n">x86_64</span> <span class="n">x86_64</span> <span class="n">x86_64</span> <span class="n">GNU</span><span class="o">/</span><span class="n">Linux</span>
<span class="err">$</span> <span class="n">lsb_release</span> <span class="o">-</span><span class="n">a</span>
<span class="n">No</span> <span class="n">LSB</span> <span class="n">modules</span> <span class="n">are</span> <span class="n">available</span><span class="p">.</span>
<span class="n">Distributor</span> <span class="n">ID</span><span class="o">:</span> <span class="n">Linuxmint</span>
<span class="n">Description</span><span class="o">:</span> <span class="n">Linux</span> <span class="n">Mint</span> <span class="mi">20</span><span class="p">.</span><span class="mi">3</span>
<span class="n">Release</span><span class="o">:</span> <span class="mi">20</span><span class="p">.</span><span class="mi">3</span>
<span class="n">Codename</span><span class="o">:</span> <span class="n">una</span>
<span class="c1">// $ cat /etc/*release</span>
<span class="n">DISTRIB_ID</span><span class="o">=</span><span class="n">LinuxMint</span>
<span class="n">DISTRIB_RELEASE</span><span class="o">=</span><span class="mi">20</span><span class="p">.</span><span class="mi">3</span>
<span class="n">DISTRIB_CODENAME</span><span class="o">=</span><span class="n">una</span>
<span class="n">DISTRIB_DESCRIPTION</span><span class="o">=</span><span class="s">"Linux Mint 20.3 Una"</span>
<span class="n">NAME</span><span class="o">=</span><span class="s">"Linux Mint"</span>
<span class="n">VERSION</span><span class="o">=</span><span class="s">"20.3 (Una)"</span>
<span class="n">ID</span><span class="o">=</span><span class="n">linuxmint</span>
<span class="n">ID_LIKE</span><span class="o">=</span><span class="n">ubuntu</span>
<span class="n">PRETTY_NAME</span><span class="o">=</span><span class="s">"Linux Mint 20.3"</span>
<span class="n">VERSION_ID</span><span class="o">=</span><span class="s">"20.3"</span>
<span class="n">HOME_URL</span><span class="o">=</span><span class="s">"https://www.linuxmint.com/"</span>
<span class="n">SUPPORT_URL</span><span class="o">=</span><span class="s">"https://forums.linuxmint.com/"</span>
<span class="n">BUG_REPORT_URL</span><span class="o">=</span><span class="s">"http://linuxmint-troubleshooting-guide.readthedocs.io/en/latest/"</span>
<span class="n">PRIVACY_POLICY_URL</span><span class="o">=</span><span class="s">"https://www.linuxmint.com/"</span>
<span class="n">VERSION_CODENAME</span><span class="o">=</span><span class="n">una</span>
<span class="n">UBUNTU_CODENAME</span><span class="o">=</span><span class="n">focal</span>
<span class="c1">// $ cat /etc/*/*release</span>
<span class="p">...</span>
<span class="n">DISTRIB_ID</span><span class="o">=</span><span class="n">Ubuntu</span>
<span class="n">DISTRIB_RELEASE</span><span class="o">=</span><span class="mi">20</span><span class="p">.</span><span class="mo">04</span>
<span class="n">DISTRIB_CODENAME</span><span class="o">=</span><span class="n">focal</span>
<span class="n">DISTRIB_DESCRIPTION</span><span class="o">=</span><span class="s">"Ubuntu Focal Fossa"</span>
</code></pre></div></div>
base dir names realpath
2023-01-15T19:51:48+05:30
https://mrprajesh.co.in/base-dir-names-realpath
How to (not) Artifact your code
2023-01-03T12:11:05+05:30
https://mrprajesh.co.in/how-to-artifact
<h2 id="art-of-artifacting">Art of Artifacting</h2>
<p>Some of my experience during my research work on building the artifact for our paper.</p>
<blockquote>
<p><strong>Disclaimer:</strong> Purely out of my own experiences which is likely to refine/modify as I go along!</p>
</blockquote>
<ol>
<li>List the requirements of software/OS/driver and hardware.</li>
<li>Any library dependencies, version, etc. You must mention the environment it is tested on!</li>
<li>Perform all the baseline computations on the same hardware platform.</li>
<li>Include all the testcases or input instances or have makefile to wget form URL.</li>
<li>Get instances from published work URLs. Eg. CVRP LIB, STEINLIB, TSPLIB, DIMACS.</li>
<li>Mostly, your code should handle different input formats (or parts) without editing inputs.</li>
<li>In the worst case, if we are modifying the inputs, we should have provided the converter</li>
<li>Executable should’ve help/man options – list all runtime args+their default values if not set.</li>
<li>The output should’ve meaningful labels than printing out just numbers.</li>
<li>We should print the time, solution value and solution (optional).</li>
<li>The validation routine can be included (in or separate) that prints if the solution is in/valid.</li>
<li>We can enable/disable via arg some or part of the output.</li>
<li>This holds for approx algorithms and parallelizing algorithms from sequential implementation to match/check the expected output.</li>
</ol>
<h2 id="more-points">More points.</h2>
<ul>
<li>We must bundle the artifact after submission.</li>
<li>We must have git/zenodo URL with <code class="language-plaintext highlighter-rouge">README</code>.</li>
<li>Our <code class="language-plaintext highlighter-rouge">README</code> must have instructions to build and reproduce your/baseline results.</li>
<li>We must have a script that runs all the inputs.</li>
<li>We must have a script to run each/all baselines.</li>
</ul>
<h3 id="legends">Legends</h3>
<ul>
<li>Artifact. Source code of a research paper to get its plot/fig/times</li>
<li>baseline. Code/comparison paper</li>
<li>exe. Executable.</li>
<li>testcase. Input instances or file for the program.</li>
</ul>
Decoding gcc compile options
2022-12-29T03:55:04+05:30
https://mrprajesh.co.in/decoding-gcc-compile-options
<p>GCC/G++ has wide variety of options.</p>
<p>Most used options.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">-</span><span class="n">c</span> <span class="c1">// just complie to .o file</span>
<span class="o">-</span><span class="n">o</span> <span class="c1">// name of the executable</span>
<span class="o">-</span><span class="n">Wall</span> <span class="c1">// display all warnings</span>
<span class="o">-</span><span class="n">lm</span> <span class="c1">// link math lib</span>
</code></pre></div></div>
<ul>
<li><code class="language-plaintext highlighter-rouge">.a</code> static library</li>
<li><code class="language-plaintext highlighter-rouge">.so</code> shared object/(dynamic) library</li>
<li><code class="language-plaintext highlighter-rouge">.o</code> object file</li>
</ul>
<p>More advanced options</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">-</span><span class="n">shared</span> <span class="o">-</span><span class="n">o</span> <span class="n">libfoo</span><span class="p">.</span><span class="n">so</span>
<span class="o">-</span><span class="n">lfoo</span>
<span class="o">-</span><span class="n">I</span> <span class="c1">// Checks for dir of the include headers in addtion to default</span>
<span class="o">-</span><span class="n">L</span> <span class="c1">// checks for lib dir for libraries (in addtion to default) at link time</span>
<span class="o">-</span><span class="n">rpath</span> <span class="c1">// checks for lib dir for libraries (in addtion to default) at run time</span>
</code></pre></div></div>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">readelf</span> <span class="o">-</span><span class="n">d</span> <span class="n">libfoobar</span><span class="p">.</span><span class="n">so</span>
<span class="mh">0x0000000000000001</span> <span class="p">(</span><span class="n">NEEDED</span><span class="p">)</span> <span class="n">Shared</span> <span class="n">library</span><span class="o">:</span> <span class="p">[</span><span class="n">libfoo</span><span class="p">.</span><span class="n">so</span><span class="p">]</span>
<span class="mh">0x0000000000000001</span> <span class="p">(</span><span class="n">NEEDED</span><span class="p">)</span> <span class="n">Shared</span> <span class="n">library</span><span class="o">:</span> <span class="p">[</span><span class="n">libbar</span><span class="p">.</span><span class="n">so</span><span class="p">]</span>
<span class="n">readelf</span> <span class="o">-</span><span class="n">d</span> <span class="n">prog</span>
<span class="mh">0x0000000000000001</span> <span class="p">(</span><span class="n">NEEDED</span><span class="p">)</span> <span class="n">Shared</span> <span class="n">library</span><span class="o">:</span> <span class="p">[</span><span class="n">libfoobar</span><span class="p">.</span><span class="n">so</span><span class="p">]</span>
<span class="mh">0x0000000000000001</span> <span class="p">(</span><span class="n">NEEDED</span><span class="p">)</span> <span class="n">Shared</span> <span class="n">library</span><span class="o">:</span> <span class="p">[</span><span class="n">libc</span><span class="p">.</span><span class="n">so</span><span class="p">.</span><span class="mi">6</span><span class="p">]</span>
<span class="mh">0x000000000000001d</span> <span class="p">(</span><span class="n">RUNPATH</span><span class="p">)</span> <span class="n">Library</span> <span class="n">runpath</span><span class="o">:</span> <span class="p">[.]</span>
<span class="n">strings</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">x86_64</span><span class="o">-</span><span class="n">linux</span><span class="o">-</span><span class="n">gnu</span><span class="o">/</span><span class="n">libstdc</span><span class="o">++</span><span class="p">.</span><span class="n">so</span><span class="p">.</span><span class="mi">6</span> <span class="o">|</span> <span class="n">grep</span> <span class="n">GLIBCXX</span>
<span class="n">GLIBCXX_3</span><span class="p">.</span><span class="mi">4</span>
<span class="n">GLIBCXX_3</span><span class="p">.</span><span class="mi">4</span><span class="p">.</span><span class="mi">1</span>
<span class="p">..</span>
<span class="n">GLIBCXX_3</span><span class="p">.</span><span class="mi">4</span><span class="p">.</span><span class="mi">29</span>
<span class="n">GLIBCXX_DEBUG_MESSAGE_LENGTH</span>
</code></pre></div></div>
<script src="https://gist.github.com/mrprajesh/4229185c0047d5d165480d82866c6037.js"></script>
Resolving ProtonVPN on linuxmint
2022-12-29T01:52:22+05:30
https://mrprajesh.co.in/resolving-protonvpn-on-linuxmint
<p>Despite following ProtonVPN’s <a href="https://protonvpn.com/support/official-linux-vpn-mint/">official documentation</a>
I want not able to make the GUI app working (loading forever and said Network issue detected or Network error.) whereas the <code class="language-plaintext highlighter-rouge">protonvpn-cli</code> worked right out of the box.
It turns out that it is due to some library mismatch but I couldn’t fix.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="n">SystemError</span><span class="o">:</span> <span class="n">ffi_prep_closure</span><span class="p">()</span><span class="o">:</span> <span class="n">bad</span> <span class="n">user_data</span> <span class="p">(</span><span class="n">it</span> <span class="n">seems</span> <span class="n">that</span> <span class="n">the</span> <span class="n">version</span> \
<span class="n">of</span> <span class="n">the</span> <span class="n">libffi</span> <span class="n">library</span> <span class="n">seen</span> <span class="n">at</span> <span class="n">runtime</span> <span class="n">is</span> <span class="n">different</span> <span class="n">from</span> <span class="n">the</span> <span class="err">'</span><span class="n">ffi</span><span class="p">.</span><span class="n">h</span><span class="err">'</span> \
<span class="n">file</span> <span class="n">seen</span> <span class="n">at</span> <span class="n">compile</span><span class="o">-</span><span class="n">time</span><span class="p">)</span>
</code></pre></div></div>
<p>I sought the help of the support team and it resolved the problem – to remove some <code class="language-plaintext highlighter-rouge">cffi</code> packages.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">uninstall</span> <span class="n">cffi</span> <span class="n">argon2</span><span class="o">-</span><span class="n">cffi</span> <span class="n">argon2</span><span class="o">-</span><span class="n">cffi</span><span class="o">-</span><span class="n">bindings</span>
</code></pre></div></div>
<p>Let’s blaster! :wink:</p>
Understanding CUDA packages installed using pip -- errors & fix
2022-12-28T14:25:34+05:30
https://mrprajesh.co.in/understand-cuda-packages-using-pip
<p>After we install newer CUDA toolkit some python code written using numpy+cupy+numba showed the below error on running.
Yes, even after setting the newer cuda home <code class="language-plaintext highlighter-rouge">export CUDA_HOME=/usr/local/cuda-11.5</code>.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">Traceback</span> <span class="p">(</span><span class="n">most</span> <span class="n">recent</span> <span class="n">call</span> <span class="n">last</span><span class="p">)</span><span class="o">:</span>
<span class="n">File</span> <span class="s">"ga-vrp-gpu.py"</span><span class="p">,</span> <span class="n">line</span> <span class="mi">684</span><span class="p">,</span> <span class="n">in</span> <span class="o"><</span><span class="n">module</span><span class="o">></span>
<span class="n">calc_cost_gpu</span><span class="p">[</span><span class="n">blocks</span><span class="p">,</span> <span class="n">threads_per_block</span><span class="p">](</span><span class="n">data_d</span><span class="p">,</span> <span class="n">popsize</span><span class="p">,</span> <span class="n">vrp_capacity</span><span class="p">,</span> <span class="n">cost_table_d</span><span class="p">)</span>
<span class="n">File</span> <span class="s">"/home/rajesh/.local/lib/python3.6/site-packages/numba/cuda/compiler.py"</span><span class="p">,</span> <span class="n">line</span> <span class="mi">804</span><span class="p">,</span> <span class="n">in</span> <span class="n">__call__</span>
<span class="n">kernel</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">specialize</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>
<span class="n">File</span> <span class="s">"/home/rajesh/.local/lib/python3.6/site-packages/numba/cuda/compiler.py"</span><span class="p">,</span> <span class="n">line</span> <span class="mi">815</span><span class="p">,</span> <span class="n">in</span> <span class="n">specialize</span>
<span class="n">kernel</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">compile</span><span class="p">(</span><span class="n">argtypes</span><span class="p">)</span>
<span class="n">File</span> <span class="s">"/home/rajesh/.local/lib/python3.6/site-packages/numba/cuda/compiler.py"</span><span class="p">,</span> <span class="n">line</span> <span class="mi">834</span><span class="p">,</span> <span class="n">in</span> <span class="n">compile</span>
<span class="n">kernel</span><span class="p">.</span><span class="n">bind</span><span class="p">()</span>
<span class="n">File</span> <span class="s">"/home/rajesh/.local/lib/python3.6/site-packages/numba/cuda/compiler.py"</span><span class="p">,</span> <span class="n">line</span> <span class="mi">548</span><span class="p">,</span> <span class="n">in</span> <span class="n">bind</span>
<span class="n">self</span><span class="p">.</span><span class="n">_func</span><span class="p">.</span><span class="n">get</span><span class="p">()</span>
<span class="n">File</span> <span class="s">"/home/rajesh/.local/lib/python3.6/site-packages/numba/cuda/compiler.py"</span><span class="p">,</span> <span class="n">line</span> <span class="mi">426</span><span class="p">,</span> <span class="n">in</span> <span class="n">get</span>
<span class="n">ptx</span> <span class="o">=</span> <span class="n">self</span><span class="p">.</span><span class="n">ptx</span><span class="p">.</span><span class="n">get</span><span class="p">()</span>
<span class="n">File</span> <span class="s">"/home/rajesh/.local/lib/python3.6/site-packages/numba/cuda/compiler.py"</span><span class="p">,</span> <span class="n">line</span> <span class="mi">397</span><span class="p">,</span> <span class="n">in</span> <span class="n">get</span>
<span class="o">**</span><span class="n">self</span><span class="p">.</span><span class="n">_extra_options</span><span class="p">)</span>
<span class="n">File</span> <span class="s">"/home/rajesh/.local/lib/python3.6/site-packages/numba/cuda/cudadrv/nvvm.py"</span><span class="p">,</span> <span class="n">line</span> <span class="mi">496</span><span class="p">,</span> <span class="n">in</span> <span class="n">llvm_to_ptx</span>
<span class="n">ptx</span> <span class="o">=</span> <span class="n">cu</span><span class="p">.</span><span class="n">compile</span><span class="p">(</span><span class="o">**</span><span class="n">opts</span><span class="p">)</span>
<span class="n">File</span> <span class="s">"/home/rajesh/.local/lib/python3.6/site-packages/numba/cuda/cudadrv/nvvm.py"</span><span class="p">,</span> <span class="n">line</span> <span class="mi">233</span><span class="p">,</span> <span class="n">in</span> <span class="n">compile</span>
<span class="n">self</span><span class="p">.</span><span class="n">_try_error</span><span class="p">(</span><span class="n">err</span><span class="p">,</span> <span class="err">'</span><span class="n">Failed</span> <span class="n">to</span> <span class="n">compile</span><span class="err">\</span><span class="n">n</span><span class="err">'</span><span class="p">)</span>
<span class="n">File</span> <span class="s">"/home/rajesh/.local/lib/python3.6/site-packages/numba/cuda/cudadrv/nvvm.py"</span><span class="p">,</span> <span class="n">line</span> <span class="mi">251</span><span class="p">,</span> <span class="n">in</span> <span class="n">_try_error</span>
<span class="n">self</span><span class="p">.</span><span class="n">driver</span><span class="p">.</span><span class="n">check_error</span><span class="p">(</span><span class="n">err</span><span class="p">,</span> <span class="s">"%s</span><span class="se">\n</span><span class="s">%s"</span> <span class="o">%</span> <span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">self</span><span class="p">.</span><span class="n">get_log</span><span class="p">()))</span>
<span class="n">File</span> <span class="s">"/home/rajesh/.local/lib/python3.6/site-packages/numba/cuda/cudadrv/nvvm.py"</span><span class="p">,</span> <span class="n">line</span> <span class="mi">141</span><span class="p">,</span> <span class="n">in</span> <span class="n">check_error</span>
<span class="n">raise</span> <span class="n">exc</span>
<span class="n">numba</span><span class="p">.</span><span class="n">cuda</span><span class="p">.</span><span class="n">cudadrv</span><span class="p">.</span><span class="n">error</span><span class="p">.</span><span class="n">NvvmError</span><span class="o">:</span> <span class="n">Failed</span> <span class="n">to</span> <span class="n">compile</span>
<span class="o"><</span><span class="n">unnamed</span><span class="o">></span> <span class="p">(</span><span class="mi">60</span><span class="p">,</span> <span class="mi">22</span><span class="p">)</span><span class="o">:</span> <span class="n">parse</span> <span class="n">expected</span> <span class="n">comma</span> <span class="n">after</span> <span class="n">load</span><span class="err">'</span><span class="n">s</span> <span class="n">type</span>
<span class="n">NVVM_ERROR_COMPILATION</span>
</code></pre></div></div>
<h3 id="steps-to-resolve">Steps to Resolve.</h3>
<ol>
<li>Uninstall dependencies <code class="language-plaintext highlighter-rouge">pip3 uninstall cupy numba numpy</code></li>
<li>Set newer environment <code class="language-plaintext highlighter-rouge">export CUDA_HOME=/usr/local/cuda-11.5</code></li>
<li>Install again. <code class="language-plaintext highlighter-rouge">pip3 install cupy numba numpy</code></li>
<li>Make sure to export <code class="language-plaintext highlighter-rouge">CUDA_HOME</code> or in <code class="language-plaintext highlighter-rouge">.bashrc</code> before running <code class="language-plaintext highlighter-rouge">python3 gpu-program.py</code></li>
</ol>
<h2 id="office-use">Office use</h2>
<h3 id="collect-env-details">Collect env details</h3>
<p>Took this from pytorch git repo.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"># For security purposes, please check the contents of collect_env.py before running it.
</span>
<span class="n">wget</span> <span class="n">https</span><span class="o">:</span><span class="c1">//raw.githubusercontent.com/pytorch/pytorch/master/torch/utils/collect_env.py </span>
<span class="n">python3</span> <span class="n">collect_env</span><span class="p">.</span><span class="n">py</span>
</code></pre></div></div>
<h3 id="my-env-details">My env details.</h3>
<p>On my local machine.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">Collecting</span> <span class="n">environment</span> <span class="n">information</span><span class="p">...</span>
<span class="n">PyTorch</span> <span class="n">version</span><span class="o">:</span> <span class="mi">1</span><span class="p">.</span><span class="mi">13</span><span class="p">.</span><span class="mi">0</span><span class="o">+</span><span class="n">cu117</span>
<span class="n">Is</span> <span class="n">debug</span> <span class="n">build</span><span class="o">:</span> <span class="n">False</span>
<span class="n">CUDA</span> <span class="n">used</span> <span class="n">to</span> <span class="n">build</span> <span class="n">PyTorch</span><span class="o">:</span> <span class="mi">11</span><span class="p">.</span><span class="mi">7</span>
<span class="n">ROCM</span> <span class="n">used</span> <span class="n">to</span> <span class="n">build</span> <span class="n">PyTorch</span><span class="o">:</span> <span class="n">N</span><span class="o">/</span><span class="n">A</span>
<span class="n">OS</span><span class="o">:</span> <span class="n">Linux</span> <span class="n">Mint</span> <span class="mi">20</span><span class="p">.</span><span class="mi">3</span> <span class="p">(</span><span class="n">x86_64</span><span class="p">)</span>
<span class="n">GCC</span> <span class="n">version</span><span class="o">:</span> <span class="p">(</span><span class="n">Ubuntu</span> <span class="mi">9</span><span class="p">.</span><span class="mi">4</span><span class="p">.</span><span class="mi">0</span><span class="o">-</span><span class="mi">1u</span><span class="n">buntu1</span><span class="o">~</span><span class="mi">20</span><span class="p">.</span><span class="mo">04</span><span class="p">.</span><span class="mi">1</span><span class="p">)</span> <span class="mi">9</span><span class="p">.</span><span class="mi">4</span><span class="p">.</span><span class="mi">0</span>
<span class="n">Clang</span> <span class="n">version</span><span class="o">:</span> <span class="n">Could</span> <span class="n">not</span> <span class="n">collect</span>
<span class="n">CMake</span> <span class="n">version</span><span class="o">:</span> <span class="n">version</span> <span class="mi">3</span><span class="p">.</span><span class="mi">16</span><span class="p">.</span><span class="mi">3</span>
<span class="n">Libc</span> <span class="n">version</span><span class="o">:</span> <span class="n">glibc</span><span class="o">-</span><span class="mi">2</span><span class="p">.</span><span class="mi">31</span>
<span class="n">Python</span> <span class="n">version</span><span class="o">:</span> <span class="mi">3</span><span class="p">.</span><span class="mi">8</span><span class="p">.</span><span class="mi">10</span> <span class="p">(</span><span class="k">default</span><span class="p">,</span> <span class="n">Jun</span> <span class="mi">22</span> <span class="mi">2022</span><span class="p">,</span> <span class="mi">20</span><span class="o">:</span><span class="mi">18</span><span class="o">:</span><span class="mi">18</span><span class="p">)</span> <span class="p">[</span><span class="n">GCC</span> <span class="mi">9</span><span class="p">.</span><span class="mi">4</span><span class="p">.</span><span class="mi">0</span><span class="p">]</span> <span class="p">(</span><span class="mi">64</span><span class="o">-</span><span class="n">bit</span> <span class="n">runtime</span><span class="p">)</span>
<span class="n">Python</span> <span class="n">platform</span><span class="o">:</span> <span class="n">Linux</span><span class="o">-</span><span class="mi">5</span><span class="p">.</span><span class="mi">15</span><span class="p">.</span><span class="mi">0</span><span class="o">-</span><span class="mi">41</span><span class="o">-</span><span class="n">generic</span><span class="o">-</span><span class="n">x86_64</span><span class="o">-</span><span class="n">with</span><span class="o">-</span><span class="n">glibc2</span><span class="p">.</span><span class="mi">29</span>
<span class="n">Is</span> <span class="n">CUDA</span> <span class="n">available</span><span class="o">:</span> <span class="n">True</span>
<span class="n">CUDA</span> <span class="n">runtime</span> <span class="n">version</span><span class="o">:</span> <span class="mi">11</span><span class="p">.</span><span class="mi">7</span><span class="p">.</span><span class="mi">64</span>
<span class="n">CUDA_MODULE_LOADING</span> <span class="n">set</span> <span class="n">to</span><span class="o">:</span> <span class="n">LAZY</span>
<span class="n">GPU</span> <span class="n">models</span> <span class="n">and</span> <span class="n">configuration</span><span class="o">:</span> <span class="n">GPU</span> <span class="mi">0</span><span class="o">:</span> <span class="n">NVIDIA</span> <span class="n">GeForce</span> <span class="n">RTX</span> <span class="mi">3060</span> <span class="n">Laptop</span> <span class="n">GPU</span>
<span class="n">Nvidia</span> <span class="n">driver</span> <span class="n">version</span><span class="o">:</span> <span class="mi">515</span><span class="p">.</span><span class="mi">48</span><span class="p">.</span><span class="mo">07</span>
<span class="n">cuDNN</span> <span class="n">version</span><span class="o">:</span> <span class="n">Could</span> <span class="n">not</span> <span class="n">collect</span>
<span class="n">HIP</span> <span class="n">runtime</span> <span class="n">version</span><span class="o">:</span> <span class="n">N</span><span class="o">/</span><span class="n">A</span>
<span class="n">MIOpen</span> <span class="n">runtime</span> <span class="n">version</span><span class="o">:</span> <span class="n">N</span><span class="o">/</span><span class="n">A</span>
<span class="n">Is</span> <span class="n">XNNPACK</span> <span class="n">available</span><span class="o">:</span> <span class="n">True</span>
<span class="n">Versions</span> <span class="n">of</span> <span class="n">relevant</span> <span class="n">libraries</span><span class="o">:</span>
<span class="p">[</span><span class="n">pip3</span><span class="p">]</span> <span class="n">numpy</span><span class="o">==</span><span class="mi">1</span><span class="p">.</span><span class="mi">23</span><span class="p">.</span><span class="mi">5</span>
<span class="p">[</span><span class="n">pip3</span><span class="p">]</span> <span class="n">torch</span><span class="o">==</span><span class="mi">1</span><span class="p">.</span><span class="mi">13</span><span class="p">.</span><span class="mi">0</span>
<span class="p">[</span><span class="n">pip3</span><span class="p">]</span> <span class="n">torchaudio</span><span class="o">==</span><span class="mi">0</span><span class="p">.</span><span class="mi">13</span><span class="p">.</span><span class="mi">0</span>
<span class="p">[</span><span class="n">pip3</span><span class="p">]</span> <span class="n">torchvision</span><span class="o">==</span><span class="mi">0</span><span class="p">.</span><span class="mi">14</span><span class="p">.</span><span class="mi">0</span>
<span class="p">[</span><span class="n">conda</span><span class="p">]</span> <span class="n">No</span> <span class="n">relevant</span> <span class="n">packages</span>
</code></pre></div></div>
Dockerizing Jupyter notebook for cpp
2022-12-27T16:55:01+05:30
https://mrprajesh.co.in/dockering-jupyter-notebook-for-cpp
<p>In continuation to my earlier post about <a href="https://mrprajesh.co.in/blog/how-to-run-cpp-on-jupyter-notebook.html">running C++ Programs on Jypyter notebook</a>.
I just docker-ed those steps using my <a href="https://github.com/mrprajesh/jupyter-for-cpp">Github Repo</a>. Cool!
:sunglasses:</p>
<p>We use <code class="language-plaintext highlighter-rouge">docker</code> :heart: to install <code class="language-plaintext highlighter-rouge">xeus-cling</code> underneath. Thanks to <a href="https://github.com/jupyter-xeus/xeus-cling">xeus-cling!</a></p>
<h2 id="reqirements">Reqirements</h2>
<ul>
<li>Docker v20+ // <a href="https://mrprajesh.co.in/blog/install-docker-on-linux.html">My Docker Installation Post</a></li>
<li>Diskspace upto 5 GB.</li>
<li>Tested Ubuntu 20.04/Mint 20.3. Docker 20.10.22. Should work on similar OS or better.</li>
</ul>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"># Get my repo.
</span><span class="n">git</span> <span class="n">clone</span> <span class="n">https</span><span class="o">:</span><span class="c1">//github.com/mrprajesh/jupyter-for-cpp.git</span>
<span class="n">cd</span> <span class="n">jupyter</span><span class="o">-</span><span class="k">for</span><span class="o">-</span><span class="n">cpp</span>
<span class="cp"># Build. Get some Coffee!☕☕☕
</span><span class="err">$</span> <span class="n">sudo</span> <span class="n">docker</span> <span class="n">build</span> <span class="o">-</span><span class="n">t</span> <span class="n">test</span><span class="o">:</span><span class="n">latest</span> <span class="p">.</span>
<span class="cp"># Run
</span><span class="err">$</span> <span class="n">sudo</span> <span class="n">docker</span> <span class="n">run</span> <span class="o">-</span><span class="n">p</span> <span class="mi">8888</span><span class="o">:</span><span class="mi">8888</span> <span class="n">test</span><span class="o">:</span><span class="n">latest</span>
<span class="cp"># open browser on the host machine: http://127.0.0.1:8888
# You may run the last cell to see the output!
</span></code></pre></div></div>
<p>This understanding helped a lot. I can now docker my artifact of our papers.
Let’s docker! :cowboy_hat_face:</p>
How to Install Docker on Linux Mint or Ubuntu
2022-12-27T16:32:32+05:30
https://mrprajesh.co.in/install-docker-on-linux
<h2 id="requirements">Requirements</h2>
<ul>
<li>Tested on Ubuntu 20.04</li>
</ul>
<h2 id="steps-for-installation">Steps for Installation.</h2>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"># Prereq
# Step 0 & 1
</span><span class="err">$</span> <span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">update</span>
<span class="err">$</span> <span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">ca</span><span class="o">-</span><span class="n">certificates</span> <span class="n">curl</span> <span class="n">gnupg</span> <span class="n">lsb</span><span class="o">-</span><span class="n">release</span>
<span class="cp"># Step 2. keyring
</span><span class="err">$</span> <span class="n">sudo</span> <span class="n">mkdir</span> <span class="o">-</span><span class="n">p</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">apt</span><span class="o">/</span><span class="n">keyrings</span>
<span class="err">$</span> <span class="n">curl</span> <span class="o">-</span><span class="n">fsSL</span> <span class="n">https</span><span class="o">:</span><span class="c1">//download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg</span>
<span class="cp"># Step. 3.A if Ubuntu
</span><span class="err">$</span> <span class="n">echo</span> \
<span class="s">"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable"</span> <span class="o">|</span> <span class="n">sudo</span> <span class="n">tee</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">apt</span><span class="o">/</span><span class="n">sources</span><span class="p">.</span><span class="n">list</span><span class="p">.</span><span class="n">d</span><span class="o">/</span><span class="n">docker</span><span class="p">.</span><span class="n">list</span> <span class="o">></span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">null</span>
<span class="cp"># Step. 3.B if Linux Mint 20.3. Note added "focal"
</span><span class="err">$</span> <span class="n">echo</span> \
<span class="s">"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
focal stable"</span> <span class="o">|</span> <span class="n">sudo</span> <span class="n">tee</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">apt</span><span class="o">/</span><span class="n">sources</span><span class="p">.</span><span class="n">list</span><span class="p">.</span><span class="n">d</span><span class="o">/</span><span class="n">docker</span><span class="p">.</span><span class="n">list</span> <span class="o">></span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">null</span>
<span class="cp">################################
# Step 4. Install Docker
################################
</span><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">update</span>
<span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">docker</span><span class="o">-</span><span class="n">ce</span> <span class="n">docker</span><span class="o">-</span><span class="n">ce</span><span class="o">-</span><span class="n">cli</span> <span class="n">containerd</span><span class="p">.</span><span class="n">io</span> <span class="n">docker</span><span class="o">-</span><span class="n">compose</span><span class="o">-</span><span class="n">plugin</span>
</code></pre></div></div>
<h2 id="testing-installation">Testing Installation</h2>
<p>If docker is installed fine, it should display as below.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">sudo</span> <span class="n">docker</span> <span class="n">run</span> <span class="n">hello</span><span class="o">-</span><span class="n">world</span>
<span class="n">Hello</span> <span class="n">from</span> <span class="n">Docker</span><span class="o">!</span>
<span class="n">This</span> <span class="n">message</span> <span class="n">shows</span> <span class="n">that</span> <span class="n">your</span> <span class="n">installation</span> <span class="n">appears</span> <span class="n">to</span> <span class="n">be</span> <span class="n">working</span> <span class="n">correctly</span><span class="p">.</span>
<span class="n">To</span> <span class="n">generate</span> <span class="n">this</span> <span class="n">message</span><span class="p">,</span> <span class="n">Docker</span> <span class="n">took</span> <span class="n">the</span> <span class="n">following</span> <span class="n">steps</span><span class="o">:</span>
<span class="mi">1</span><span class="p">.</span> <span class="n">The</span> <span class="n">Docker</span> <span class="n">client</span> <span class="n">contacted</span> <span class="n">the</span> <span class="n">Docker</span> <span class="n">daemon</span><span class="p">.</span>
<span class="mi">2</span><span class="p">.</span> <span class="n">The</span> <span class="n">Docker</span> <span class="n">daemon</span> <span class="n">pulled</span> <span class="n">the</span> <span class="s">"hello-world"</span> <span class="n">image</span> <span class="n">from</span> <span class="n">the</span> <span class="n">Docker</span> <span class="n">Hub</span><span class="p">.</span>
<span class="p">(</span><span class="n">amd64</span><span class="p">)</span>
<span class="mi">3</span><span class="p">.</span> <span class="n">The</span> <span class="n">Docker</span> <span class="n">daemon</span> <span class="n">created</span> <span class="n">a</span> <span class="n">new</span> <span class="n">container</span> <span class="n">from</span> <span class="n">that</span> <span class="n">image</span> <span class="n">which</span> <span class="n">runs</span> <span class="n">the</span>
<span class="n">executable</span> <span class="n">that</span> <span class="n">produces</span> <span class="n">the</span> <span class="n">output</span> <span class="n">you</span> <span class="n">are</span> <span class="n">currently</span> <span class="n">reading</span><span class="p">.</span>
<span class="mi">4</span><span class="p">.</span> <span class="n">The</span> <span class="n">Docker</span> <span class="n">daemon</span> <span class="n">streamed</span> <span class="n">that</span> <span class="n">output</span> <span class="n">to</span> <span class="n">the</span> <span class="n">Docker</span> <span class="n">client</span><span class="p">,</span> <span class="n">which</span> <span class="n">sent</span> <span class="n">it</span>
<span class="n">to</span> <span class="n">your</span> <span class="n">terminal</span><span class="p">.</span>
<span class="n">To</span> <span class="n">try</span> <span class="n">something</span> <span class="n">more</span> <span class="n">ambitious</span><span class="p">,</span> <span class="n">you</span> <span class="n">can</span> <span class="n">run</span> <span class="n">an</span> <span class="n">Ubuntu</span> <span class="n">container</span> <span class="n">with</span><span class="o">:</span>
<span class="err">$</span> <span class="n">docker</span> <span class="n">run</span> <span class="o">-</span><span class="n">it</span> <span class="n">ubuntu</span> <span class="n">bash</span>
<span class="n">Share</span> <span class="n">images</span><span class="p">,</span> <span class="n">automate</span> <span class="n">workflows</span><span class="p">,</span> <span class="n">and</span> <span class="n">more</span> <span class="n">with</span> <span class="n">a</span> <span class="n">free</span> <span class="n">Docker</span> <span class="n">ID</span><span class="o">:</span>
<span class="n">https</span><span class="o">:</span><span class="c1">//hub.docker.com/</span>
<span class="n">For</span> <span class="n">more</span> <span class="n">examples</span> <span class="n">and</span> <span class="n">ideas</span><span class="p">,</span> <span class="n">visit</span><span class="o">:</span>
<span class="n">https</span><span class="o">:</span><span class="c1">//docs.docker.com/get-started/</span>
</code></pre></div></div>
<h3 id="reference">Reference</h3>
<ul>
<li><a href="https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository">Docker Official Guide</a></li>
</ul>
How to set a default devtool set in CentOS.
2022-12-26T14:08:44+05:30
https://mrprajesh.co.in/set-a-default-devtool-set-in-centos
<p>We used to use the below command to enable a particular <code class="language-plaintext highlighter-rouge">gcc</code> or <code class="language-plaintext highlighter-rouge">devtoolset</code> as our <a href="https://mrprajesh.co.in/blog//devtoolset-on-centos.html">earlier post suggested.</a></p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">scl</span> <span class="n">enable</span> <span class="n">devtoolset</span><span class="o">-</span><span class="mi">9</span> <span class="n">bash</span>
</code></pre></div></div>
<p>Unfortunately, we can NOT put this into our <code class="language-plaintext highlighter-rouge">.bashrc</code> as it would trigger a forkbomb (infinite looping of sourcing bash).</p>
<blockquote>
<p>It turns out a slightly modified command than the original produces intended effect avoiding forkbomb!</p>
</blockquote>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">source</span> <span class="n">scl_source</span> <span class="n">enable</span> <span class="n">devtoolset</span><span class="o">-</span><span class="mi">9</span>
</code></pre></div></div>
<p>Let’s append it into <code class="language-plaintext highlighter-rouge">.bashrc</code> and check gcc/g++ version upon login.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">g</span><span class="o">++</span> <span class="o">--</span><span class="n">version</span>
<span class="n">g</span><span class="o">++</span> <span class="p">(</span><span class="n">GCC</span><span class="p">)</span> <span class="mi">9</span><span class="p">.</span><span class="mi">3</span><span class="p">.</span><span class="mi">1</span> <span class="mi">20200408</span> <span class="p">(</span><span class="n">Red</span> <span class="n">Hat</span> <span class="mi">9</span><span class="p">.</span><span class="mi">3</span><span class="p">.</span><span class="mi">1</span><span class="o">-</span><span class="mi">2</span><span class="p">)</span>
<span class="n">Copyright</span> <span class="p">(</span><span class="n">C</span><span class="p">)</span> <span class="mi">2019</span> <span class="n">Free</span> <span class="n">Software</span> <span class="n">Foundation</span><span class="p">,</span> <span class="n">Inc</span><span class="p">.</span>
<span class="n">This</span> <span class="n">is</span> <span class="n">free</span> <span class="n">software</span><span class="p">;</span> <span class="n">see</span> <span class="n">the</span> <span class="n">source</span> <span class="k">for</span> <span class="n">copying</span> <span class="n">conditions</span><span class="p">.</span> <span class="n">There</span> <span class="n">is</span> <span class="n">NO</span>
<span class="n">warranty</span><span class="p">;</span> <span class="n">not</span> <span class="n">even</span> <span class="k">for</span> <span class="n">MERCHANTABILITY</span> <span class="n">or</span> <span class="n">FITNESS</span> <span class="n">FOR</span> <span class="n">A</span> <span class="n">PARTICULAR</span> <span class="n">PURPOSE</span><span class="p">.</span>
</code></pre></div></div>
<p>Assuming you have already installed devtoolset-9, if not, install using the cmds from office use section.</p>
<h2 id="reference">Reference</h2>
<ul>
<li><a href="https://unix.stackexchange.com/a/195219/484734">https://unix.stackexchange.com/a/195219/484734</a></li>
<li><a href="https://developers.redhat.com/products/developertoolset/hello-world">https://developers.redhat.com/products/developertoolset/hello-world</a></li>
</ul>
<h2 id="office-use">Office use.</h2>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"># Login as root and install the required version.
</span><span class="n">su</span> <span class="o">-</span>
<span class="n">yum</span> <span class="n">update</span> <span class="err">#</span><span class="n">optional</span> <span class="n">step</span><span class="p">.</span>
<span class="n">yum</span> <span class="n">install</span> <span class="n">devtoolset</span><span class="o">-</span><span class="mi">9</span>
</code></pre></div></div>
How to run cpp on jupyter notebook
2022-12-26T13:42:46+05:30
https://mrprajesh.co.in/how-to-run-cpp-on-jupyter-notebook
<h1 id="requirements">Requirements</h1>
<ul>
<li>Conda</li>
<li>Works on Ubuntu 20.04</li>
</ul>
<p>We use <a href="https://github.com/jupyter-xeus/xeus-cling">xeus-cling</a> to run cpp on jupyter notebook.
Check out <a href="https://github.com/mrprajesh/run-cpp-on-jupyter">My GitHub repo</a> & <a href="https://mybinder.org/v2/gh/mrprajesh/run-cpp-on-jupyter/HEAD?labpath=HelloCppJupyter.ipynb"><img src="https://mybinder.org/badge_logo.svg" alt="Binder" /></a></p>
<p>In case you have docker, you can do all the below in just 3 steps. Check out <a href="http://127.0.0.1:4000/blog/dockering-jupyter-notebook-for-cpp.html">my other post!</a> :heart_eyes:
Just in case, you want to learn more but suffer/sweat/bleed a little then follow the below. :yum: :joy:</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">#Download minconda
</span><span class="n">Download</span> <span class="n">and</span> <span class="n">run</span> <span class="n">file</span> <span class="k">for</span> <span class="n">linux</span> <span class="n">x64</span> <span class="n">https</span><span class="o">:</span><span class="c1">//docs.conda.io/en/latest/miniconda.html </span>
<span class="cp"># DO NOT ENABLE BY DEFAULT
</span><span class="n">conda</span> <span class="n">config</span> <span class="o">--</span><span class="n">set</span> <span class="n">auto_activate_base</span> <span class="nb">false</span>
<span class="cp"># HAVE A DEFAULT
</span><span class="n">conda</span> <span class="n">update</span> <span class="o">-</span><span class="n">n</span> <span class="n">base</span> <span class="o">-</span><span class="n">c</span> <span class="n">defaults</span> <span class="n">conda</span>
<span class="cp"># CREATE ONE FOR CLING
</span><span class="n">conda</span> <span class="n">create</span> <span class="o">-</span><span class="n">n</span> <span class="n">cling</span>
<span class="cp">#INSTALL THE REQUIRED
</span><span class="n">conda</span> <span class="n">install</span> <span class="n">jupyter</span>
<span class="n">conda</span> <span class="n">install</span> <span class="n">notebook</span>
<span class="cp">#ACTIVATE
</span><span class="n">conda</span> <span class="n">activate</span> <span class="n">cling</span> <span class="err">#</span><span class="n">okay</span><span class="o">!</span>
<span class="cp"># INSTALL
</span><span class="n">conda</span> <span class="n">install</span> <span class="n">xeus</span><span class="o">-</span><span class="n">cling</span> <span class="o">-</span><span class="n">c</span> <span class="n">conda</span><span class="o">-</span><span class="n">forge</span> <span class="err">#</span><span class="n">NOT</span> <span class="n">WORKING</span><span class="o">?</span>
<span class="cp">#RUN
</span><span class="n">jupyter</span> <span class="n">notebook</span>
<span class="cp"># Browse
</span><span class="n">http</span><span class="o">:</span><span class="c1">//localhost:8888/</span>
<span class="n">Choose</span> <span class="n">C</span><span class="o">++</span><span class="mi">11</span><span class="o">/</span><span class="mi">14</span><span class="o">/</span><span class="mi">17</span> <span class="n">from</span> <span class="n">dropdown</span> <span class="n">based</span> <span class="n">on</span> <span class="n">requrement</span><span class="p">.</span>
</code></pre></div></div>
<h3 id="the-activate-and-run-step-is-what-we-require-after-installation">The Activate and Run step is what we require after installation.</h3>
<p>Check out my <a href="https://github.com/mrprajesh/run-cpp-on-jupyter">github repo</a></p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">git</span> <span class="n">clone</span> <span class="n">https</span><span class="o">:</span><span class="c1">//github.com/mrprajesh/run-cpp-on-jupyter.git</span>
<span class="n">cd</span> <span class="n">run</span><span class="o">-</span><span class="n">cpp</span><span class="o">-</span><span class="n">on</span><span class="o">-</span><span class="n">jupyter</span>
<span class="cp">#ACTIVATE
</span><span class="n">conda</span> <span class="n">activate</span> <span class="n">cling</span>
<span class="cp">#RUN
</span><span class="n">jupyter</span> <span class="n">notebook</span>
<span class="cp"># Open Browser, Write and Run
# Usually it is http://localhost:8888/
</span>
</code></pre></div></div>
<h3 id="office-use">Office use.</h3>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">#ACTIVATE
</span><span class="n">source</span> <span class="n">activate</span> <span class="n">cling</span> <span class="err">#</span><span class="n">not</span> <span class="n">working</span>
<span class="cp"># LETS DOWNGRADE
</span><span class="n">conda</span> <span class="n">install</span> <span class="n">xeus</span><span class="o">-</span><span class="n">cling</span><span class="o">==</span><span class="mi">0</span><span class="p">.</span><span class="mi">9</span><span class="p">.</span><span class="mi">0</span> <span class="o">-</span><span class="n">c</span> <span class="n">conda</span><span class="o">-</span><span class="n">forge</span>
<span class="cp"># NOT WORKING
</span><span class="n">jupyter</span> <span class="n">console</span> <span class="o">--</span><span class="n">kernel</span> <span class="n">xcpp14</span>
<span class="n">jupyter</span> <span class="n">kernelspec</span> <span class="n">install</span> <span class="n">PREFIX</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">jupyter</span><span class="o">/</span><span class="n">xcpp14</span> <span class="o">--</span><span class="n">sys</span><span class="o">-</span><span class="n">prefix</span>
</code></pre></div></div>
New english words
2022-12-23T13:49:23+05:30
https://mrprajesh.co.in/new-english-words
<h3 id="some-new-terms-that-i-got-to-know-recently">Some new terms that I got to know recently.</h3>
<ol>
<li>
<p><strong>Scambaiter</strong> – / noun. computing slang / The practice of pretending to fall for fraudulent online schemes in order to waste the time of the perpetrators.
<a href="https://www.about-fraud.com/2022/03/22/youtube-fraud-channels/">Some popular ones</a>. I am fan of Jim.</p>
</li>
<li><strong>Declarative vs Imperative programming language</strong>
<blockquote>
<p><strong>Declarative programming</strong> is a paradigm describing WHAT the program does, without explicitly specifying its control flow. <strong>Imperative programming</strong> is a paradigm describing HOW the program should do something by explicitly specifying each instruction (or statement) step by step, which mutate the program’s state
Eg. Dec: Haskell/Erlang. Imp: C/CPP/Java.
<a href="https://www.geeksforgeeks.org/difference-between-imperative-and-declarative-programming/">More pros and cons.</a>
Thanks to Conor Hoekstra.</p>
</blockquote>
</li>
<li>
<p><strong>Prompt.</strong>
After ChatGPT there is a lot of talk about geting your <a href="https://en.wikipedia.org/wiki/Prompt_engineering">Prompt</a> right!</p>
</li>
<li>
<p><strong>Gross.</strong> very obvious and unacceptable. //Sheena Melwani</p>
</li>
<li>
<p><strong>Rhetorical question.</strong> A question asked in order to create a dramatic effect or to make a point rather than to get an answer. //Top Gun: Maverick</p>
</li>
<li>
<p><strong>FWIW.</strong> For What is worth. //reddit</p>
</li>
<li>
<p><strong>WTFPL.</strong> <a href="https://en.wikipedia.org/wiki/WTFPL">Do What The F-word You Want To Public License</a></p>
</li>
<li>
<p><strong>Torricelli.</strong> Torricelli’s mercury <a href="https://www.vacuumscienceworld.com/vacuum-science-facts/torricelli-mercury-barometer">barometer</a>. //During my <a href="https://twitter.com/mrprajesh/status/1602171621242195968">training</a></p>
</li>
<li><strong>Terse</strong>. brief, concise, to the point. Using few words, sometimes in a way that seems rude or unfriendly</li>
</ol>
How to run CUDA programs on Google Collab
2022-12-15T01:22:06+05:30
https://mrprajesh.co.in/how-to-run-cuda-programs-on-google-collab
<p><a href="https://colab.research.google.com/drive/10bGP2-M3Bh2ccgiwXh9Nygb--vchD-wh?usp=sharing">Click this Collab</a> to try it out! You may need to signing using gmail account.</p>
<ol>
<li>Visit <a href="https://colab.research.google.com/">Google Collab</a></li>
<li>Choose run time as GPU. On Menubar, Runtime > Change runtime > select GPU as accelerator & Save.</li>
<li>Connect if it did not connect automatically. You can see the status right top. Tick mark + RAM+DISK.</li>
<li>Install+Load the plugin by running the following.</li>
</ol>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">!</span><span class="n">pip</span> <span class="n">install</span> <span class="n">git</span><span class="o">+</span><span class="n">https</span><span class="o">:</span><span class="c1">//github.com/andreinechaev/nvcc4jupyter.git</span>
<span class="o">%</span><span class="n">load_ext</span> <span class="n">nvcc_plugin</span>
</code></pre></div></div>
<ol>
<li>Write a CUDA Program and click run.</li>
</ol>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">%%</span><span class="n">cu</span>
<span class="cp">#include</span> <span class="cpf"><stdio.h></span><span class="cp">
#include</span> <span class="cpf"><cuda.h></span><span class="cp">
</span><span class="n">__global__</span> <span class="kt">void</span> <span class="nf">kernel</span><span class="p">(){</span>
<span class="n">printf</span><span class="p">(</span><span class="s">"Hi, I am Thread %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">threadIdx</span><span class="p">.</span><span class="n">x</span><span class="p">);</span>
<span class="p">}</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">(){</span>
<span class="n">kernel</span><span class="o"><<<</span><span class="mi">1</span><span class="p">,</span><span class="mi">32</span><span class="o">>>></span><span class="p">();</span>
<span class="n">cudaDeviceSynchronize</span><span class="p">();</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div>
<ol>
<li>You see the Reference section below for an alternate way to run CUDA!</li>
</ol>
<h3 id="office-use">Office use.</h3>
<p>Last two steps should produce output something like this.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">!</span><span class="n">pip</span> <span class="n">install</span> <span class="n">git</span><span class="o">+</span><span class="n">https</span><span class="o">:</span><span class="c1">//github.com/andreinechaev/nvcc4jupyter.git</span>
<span class="o">%</span><span class="n">load_ext</span> <span class="n">nvcc_plugin</span>
<span class="n">Looking</span> <span class="n">in</span> <span class="n">indexes</span><span class="o">:</span> <span class="n">https</span><span class="o">:</span><span class="c1">//pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/</span>
<span class="n">Collecting</span> <span class="n">git</span><span class="o">+</span><span class="n">https</span><span class="o">:</span><span class="c1">//github.com/andreinechaev/nvcc4jupyter.git</span>
<span class="n">Cloning</span> <span class="n">https</span><span class="o">:</span><span class="c1">//github.com/andreinechaev/nvcc4jupyter.git to /tmp/pip-req-build-s5n0gpv5</span>
<span class="n">Running</span> <span class="n">command</span> <span class="n">git</span> <span class="n">clone</span> <span class="o">-</span><span class="n">q</span> <span class="n">https</span><span class="o">:</span><span class="c1">//github.com/andreinechaev/nvcc4jupyter.git /tmp/pip-req-build-s5n0gpv5</span>
<span class="n">Building</span> <span class="n">wheels</span> <span class="k">for</span> <span class="n">collected</span> <span class="n">packages</span><span class="o">:</span> <span class="n">NVCCPlugin</span>
<span class="n">Building</span> <span class="n">wheel</span> <span class="k">for</span> <span class="nf">NVCCPlugin</span> <span class="p">(</span><span class="n">setup</span><span class="p">.</span><span class="n">py</span><span class="p">)</span> <span class="p">...</span> <span class="n">done</span>
<span class="n">Created</span> <span class="n">wheel</span> <span class="k">for</span> <span class="n">NVCCPlugin</span><span class="o">:</span> <span class="n">filename</span><span class="o">=</span><span class="n">NVCCPlugin</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">2</span><span class="o">-</span><span class="n">py3</span><span class="o">-</span><span class="n">none</span><span class="o">-</span><span class="n">any</span><span class="p">.</span><span class="n">whl</span> <span class="n">size</span><span class="o">=</span><span class="mi">4304</span> <span class="n">sha256</span><span class="o">=</span><span class="mi">9</span><span class="n">c3e8f18056b715a0a495cb582277bbfb1ec08efc8eb8b07df4e300cbd79c1e5</span>
<span class="n">Stored</span> <span class="n">in</span> <span class="n">directory</span><span class="o">:</span> <span class="o">/</span><span class="n">tmp</span><span class="o">/</span><span class="n">pip</span><span class="o">-</span><span class="n">ephem</span><span class="o">-</span><span class="n">wheel</span><span class="o">-</span><span class="n">cache</span><span class="o">-</span><span class="n">wn6sdoxp</span><span class="o">/</span><span class="n">wheels</span><span class="o">/</span><span class="n">f3</span><span class="o">/</span><span class="mi">08</span><span class="o">/</span><span class="n">cc</span><span class="o">/</span><span class="n">e2b5b0e1c92df07dbb50a6f024a68ce090f5e7b2316b41756d</span>
<span class="n">Successfully</span> <span class="n">built</span> <span class="n">NVCCPlugin</span>
<span class="n">Installing</span> <span class="n">collected</span> <span class="n">packages</span><span class="o">:</span> <span class="n">NVCCPlugin</span>
<span class="n">Successfully</span> <span class="n">installed</span> <span class="n">NVCCPlugin</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">2</span>
<span class="n">created</span> <span class="n">output</span> <span class="n">directory</span> <span class="n">at</span> <span class="o">/</span><span class="n">content</span><span class="o">/</span><span class="n">src</span>
<span class="n">Out</span> <span class="n">bin</span> <span class="o">/</span><span class="n">content</span><span class="o">/</span><span class="n">result</span><span class="p">.</span><span class="n">out</span>
<span class="o">%%</span><span class="n">cu</span>
<span class="cp">#include</span> <span class="cpf"><stdio.h></span><span class="cp">
#include</span> <span class="cpf"><cuda.h></span><span class="cp">
</span><span class="n">__global__</span> <span class="kt">void</span> <span class="n">kernel</span><span class="p">(){</span>
<span class="n">printf</span><span class="p">(</span><span class="s">"Hi, I am Thread %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">threadIdx</span><span class="p">.</span><span class="n">x</span><span class="p">);</span>
<span class="p">}</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">(){</span>
<span class="n">kernel</span><span class="o"><<<</span><span class="mi">1</span><span class="p">,</span><span class="mi">32</span><span class="o">>>></span><span class="p">();</span>
<span class="n">cudaDeviceSynchronize</span><span class="p">();</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">0</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">1</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">2</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">3</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">4</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">5</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">6</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">7</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">8</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">9</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">10</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">11</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">12</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">13</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">14</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">15</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">16</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">17</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">18</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">19</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">20</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">21</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">22</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">23</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">24</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">25</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">26</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">27</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">28</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">29</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">30</span>
<span class="n">Hi</span><span class="p">,</span> <span class="n">I</span> <span class="n">am</span> <span class="n">Thread</span> <span class="mi">31</span>
</code></pre></div></div>
<h3 id="reference">Reference</h3>
<ul>
<li>My <a href="url">video</a> on YouTube.</li>
<li>My <a href="https://colab.research.google.com/drive/1xv2sZbgOO-HlyjL4Mq3Lkf3D0kj-ARCy?usp=sharing">Google Collab page</a> which also shows an alternate way to compile and run manually without the plugin.</li>
</ul>
How to Build cuStinger or Hornet
2022-12-09T02:23:16+05:30
https://mrprajesh.co.in/How-to-Build-cuSTINGER-or-Hornet
<ul>
<li>On Ubuntu 20.04/Mint 20.3.</li>
<li><a href="https://github.com/cuStinger/cuStinger">cuStinger</a> is outdated. <a href="https://github.com/hornet-gt/hornet/">hornet</a> is comparitively active.</li>
<li><a href="https://github.com/rapidsai/cuhornet">cuHornet</a> seems the future. Too bad they have not edited readme steps. Let’s fall back to <code class="language-plaintext highlighter-rouge">hornet</code> repo.</li>
<li>Tried the current master. SOA / AOS seems half baked.</li>
<li>Let’s try from release v0.5. Dowload this .zip <a href="https://github.com/hornet-gt/hornet/archive/refs/tags/0.5.zip">Pre SOA</a> and extract.</li>
<li>rename in external folder, <code class="language-plaintext highlighter-rouge">cub-1.8.x</code> to <code class="language-plaintext highlighter-rouge">cub</code> folder as CUB+Thrust is bundled with CUDA Now.</li>
<li>CMake 23 had some error w.r.t cuda architecture. using 3.16</li>
</ul>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">export</span> <span class="n">CUDACXX</span><span class="o">=</span><span class="err">`</span><span class="n">which</span> <span class="n">nvcc</span><span class="err">`</span>
<span class="n">cd</span> <span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">hornet</span><span class="o">/</span><span class="n">build</span>
<span class="n">rm</span> <span class="o">-</span><span class="n">rf</span> <span class="o">*</span> <span class="p">;</span> <span class="n">cmake</span> <span class="p">..;</span> <span class="n">make</span> <span class="o">-</span><span class="n">j4</span>
</code></pre></div></div>
<ul>
<li>will get an error as in office use below.</li>
<li>on <code class="language-plaintext highlighter-rouge">hornet-0.5/hornet/include/Core/DataLayout/DataLayoutDev.i.cuh</code> make Line 43 as <code class="language-plaintext highlighter-rouge">AoSdev<TArgs...>::AoSdev(void* d_ptr):</code>
removed the template parm pack for ctor</li>
<li><code class="language-plaintext highlighter-rouge">rm -rf * ; cmake ..; make -j4</code></li>
</ul>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">rm</span> <span class="o">-</span><span class="n">rf</span> <span class="o">*</span> <span class="p">;</span> <span class="n">cmake</span> <span class="p">..;</span> <span class="n">make</span> <span class="o">-</span><span class="n">j4</span>
<span class="o">--</span> <span class="n">The</span> <span class="n">CXX</span> <span class="n">compiler</span> <span class="n">identification</span> <span class="n">is</span> <span class="n">GNU</span> <span class="mi">9</span><span class="p">.</span><span class="mi">4</span><span class="p">.</span><span class="mi">0</span>
<span class="o">--</span> <span class="n">The</span> <span class="n">CUDA</span> <span class="n">compiler</span> <span class="n">identification</span> <span class="n">is</span> <span class="n">NVIDIA</span> <span class="mi">11</span><span class="p">.</span><span class="mi">7</span><span class="p">.</span><span class="mi">64</span>
<span class="o">--</span> <span class="n">Check</span> <span class="k">for</span> <span class="n">working</span> <span class="n">CXX</span> <span class="n">compiler</span><span class="o">:</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">c</span><span class="o">++</span>
<span class="o">--</span> <span class="n">Check</span> <span class="k">for</span> <span class="n">working</span> <span class="n">CXX</span> <span class="n">compiler</span><span class="o">:</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">c</span><span class="o">++</span> <span class="o">--</span> <span class="n">works</span>
<span class="o">--</span> <span class="n">Detecting</span> <span class="n">CXX</span> <span class="n">compiler</span> <span class="n">ABI</span> <span class="n">info</span>
<span class="o">--</span> <span class="n">Detecting</span> <span class="n">CXX</span> <span class="n">compiler</span> <span class="n">ABI</span> <span class="n">info</span> <span class="o">-</span> <span class="n">done</span>
<span class="o">--</span> <span class="n">Detecting</span> <span class="n">CXX</span> <span class="n">compile</span> <span class="n">features</span>
<span class="o">--</span> <span class="n">Detecting</span> <span class="n">CXX</span> <span class="n">compile</span> <span class="n">features</span> <span class="o">-</span> <span class="n">done</span>
<span class="o">--</span> <span class="n">Check</span> <span class="k">for</span> <span class="n">working</span> <span class="n">CUDA</span> <span class="n">compiler</span><span class="o">:</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">cuda</span><span class="o">-</span><span class="mi">11</span><span class="p">.</span><span class="mi">7</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">nvcc</span>
<span class="o">--</span> <span class="n">Check</span> <span class="k">for</span> <span class="n">working</span> <span class="n">CUDA</span> <span class="n">compiler</span><span class="o">:</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">cuda</span><span class="o">-</span><span class="mi">11</span><span class="p">.</span><span class="mi">7</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">nvcc</span> <span class="o">--</span> <span class="n">works</span>
<span class="o">--</span> <span class="n">Detecting</span> <span class="n">CUDA</span> <span class="n">compiler</span> <span class="n">ABI</span> <span class="n">info</span>
<span class="o">--</span> <span class="n">Detecting</span> <span class="n">CUDA</span> <span class="n">compiler</span> <span class="n">ABI</span> <span class="n">info</span> <span class="o">-</span> <span class="n">done</span>
<span class="o">--</span> <span class="n">Found</span> <span class="n">OpenMP_CXX</span><span class="o">:</span> <span class="o">-</span><span class="n">fopenmp</span> <span class="p">(</span><span class="n">found</span> <span class="n">version</span> <span class="s">"4.5"</span><span class="p">)</span>
<span class="o">--</span> <span class="n">Found</span> <span class="n">OpenMP</span><span class="o">:</span> <span class="n">TRUE</span> <span class="p">(</span><span class="n">found</span> <span class="n">version</span> <span class="s">"4.5"</span><span class="p">)</span>
<span class="o">--</span> <span class="n">Using</span> <span class="n">Nvidia</span> <span class="n">Tools</span> <span class="n">Extension</span>
<span class="o">--</span> <span class="n">Configuring</span> <span class="n">done</span>
<span class="o">--</span> <span class="n">Generating</span> <span class="n">done</span>
<span class="o">--</span> <span class="n">Build</span> <span class="n">files</span> <span class="n">have</span> <span class="n">been</span> <span class="n">written</span> <span class="n">to</span><span class="o">:</span> <span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">hornet</span><span class="o">/</span><span class="n">build</span>
<span class="n">Scanning</span> <span class="n">dependencies</span> <span class="n">of</span> <span class="n">target</span> <span class="n">hornet</span>
<span class="p">[</span> <span class="mi">6</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CXX</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">hornet</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">Util</span><span class="o">/</span><span class="n">CommandLineParam</span><span class="p">.</span><span class="n">cpp</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">6</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CXX</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">hornet</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">xlib</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">Device</span><span class="o">/</span><span class="n">Util</span><span class="o">/</span><span class="n">CudaUtil</span><span class="p">.</span><span class="n">cpp</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">9</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CXX</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">hornet</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">Util</span><span class="o">/</span><span class="n">BatchFunctions</span><span class="p">.</span><span class="n">cpp</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">12</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CXX</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">hornet</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">xlib</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">Device</span><span class="o">/</span><span class="n">Util</span><span class="o">/</span><span class="n">DeviceProperties</span><span class="p">.</span><span class="n">cpp</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">15</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CXX</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">hornet</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">xlib</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">Device</span><span class="o">/</span><span class="n">Util</span><span class="o">/</span><span class="n">SafeCudaAPI</span><span class="p">.</span><span class="n">cpp</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">18</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CXX</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">hornet</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">xlib</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">Graph</span><span class="o">/</span><span class="n">BFS</span><span class="p">.</span><span class="n">cpp</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">21</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CXX</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">hornet</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">xlib</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">Graph</span><span class="o">/</span><span class="n">BellmanFord</span><span class="p">.</span><span class="n">cpp</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">25</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CXX</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">hornet</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">xlib</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">Graph</span><span class="o">/</span><span class="n">Brim</span><span class="p">.</span><span class="n">cpp</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">28</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CXX</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">hornet</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">xlib</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">Graph</span><span class="o">/</span><span class="n">Dijkstra</span><span class="p">.</span><span class="n">cpp</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">31</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CXX</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">hornet</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">xlib</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">Graph</span><span class="o">/</span><span class="n">GraphBase</span><span class="p">.</span><span class="n">cpp</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">34</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CXX</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">hornet</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">xlib</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">Graph</span><span class="o">/</span><span class="n">GraphStd</span><span class="p">.</span><span class="n">cpp</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">37</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CXX</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">hornet</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">xlib</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">Graph</span><span class="o">/</span><span class="n">GraphStdRead</span><span class="p">.</span><span class="n">cpp</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">40</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CXX</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">hornet</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">xlib</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">Graph</span><span class="o">/</span><span class="n">GraphWeight</span><span class="p">.</span><span class="n">cpp</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">43</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CXX</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">hornet</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">xlib</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">Graph</span><span class="o">/</span><span class="n">GraphWeightRead</span><span class="p">.</span><span class="n">cpp</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">46</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CXX</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">hornet</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">xlib</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">Graph</span><span class="o">/</span><span class="n">SCC</span><span class="p">.</span><span class="n">cpp</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">50</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CXX</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">hornet</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">xlib</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">Graph</span><span class="o">/</span><span class="n">WCC</span><span class="p">.</span><span class="n">cpp</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">53</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CXX</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">hornet</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">xlib</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">Host</span><span class="o">/</span><span class="n">FileUtil</span><span class="p">.</span><span class="n">cpp</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">56</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CXX</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">hornet</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">xlib</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">Host</span><span class="o">/</span><span class="n">PrintExt</span><span class="p">.</span><span class="n">cpp</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">59</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CUDA</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">hornet</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">xlib</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">Device</span><span class="o">/</span><span class="n">Primitives</span><span class="o">/</span><span class="n">CubWrapper</span><span class="p">.</span><span class="n">cu</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">62</span><span class="o">%</span><span class="p">]</span> <span class="n">Linking</span> <span class="n">CXX</span> <span class="k">static</span> <span class="n">library</span> <span class="n">libhornet</span><span class="p">.</span><span class="n">a</span>
<span class="p">[</span> <span class="mi">62</span><span class="o">%</span><span class="p">]</span> <span class="n">Built</span> <span class="n">target</span> <span class="n">hornet</span>
<span class="n">Scanning</span> <span class="n">dependencies</span> <span class="n">of</span> <span class="n">target</span> <span class="n">hornet_delete_test</span>
<span class="n">Scanning</span> <span class="n">dependencies</span> <span class="n">of</span> <span class="n">target</span> <span class="n">hornet_insert_test</span>
<span class="n">Scanning</span> <span class="n">dependencies</span> <span class="n">of</span> <span class="n">target</span> <span class="n">ptxtest</span>
<span class="n">Scanning</span> <span class="n">dependencies</span> <span class="n">of</span> <span class="n">target</span> <span class="n">mem_benchmark</span>
<span class="p">[</span> <span class="mi">68</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CUDA</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">ptxtest</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">test</span><span class="o">/</span><span class="n">ptxtest</span><span class="p">.</span><span class="n">cu</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">68</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CUDA</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">mem_benchmark</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">test</span><span class="o">/</span><span class="n">MemBenchmark</span><span class="p">.</span><span class="n">cu</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">71</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CUDA</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">hornet_delete_test</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">test</span><span class="o">/</span><span class="n">HornetDeleteTest</span><span class="p">.</span><span class="n">cu</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">75</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CUDA</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">hornet_insert_test</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">test</span><span class="o">/</span><span class="n">HornetInsertTest</span><span class="p">.</span><span class="n">cu</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">78</span><span class="o">%</span><span class="p">]</span> <span class="n">Linking</span> <span class="n">CXX</span> <span class="n">executable</span> <span class="n">ptxtest</span>
<span class="p">[</span> <span class="mi">81</span><span class="o">%</span><span class="p">]</span> <span class="n">Linking</span> <span class="n">CXX</span> <span class="n">executable</span> <span class="n">mem_benchmark</span>
<span class="p">[</span> <span class="mi">81</span><span class="o">%</span><span class="p">]</span> <span class="n">Built</span> <span class="n">target</span> <span class="n">ptxtest</span>
<span class="n">Scanning</span> <span class="n">dependencies</span> <span class="n">of</span> <span class="n">target</span> <span class="n">hornet_test</span>
<span class="p">[</span> <span class="mi">84</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CUDA</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">hornet_test</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">test</span><span class="o">/</span><span class="n">HornetTest</span><span class="p">.</span><span class="n">cu</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">84</span><span class="o">%</span><span class="p">]</span> <span class="n">Built</span> <span class="n">target</span> <span class="n">mem_benchmark</span>
<span class="n">Scanning</span> <span class="n">dependencies</span> <span class="n">of</span> <span class="n">target</span> <span class="n">lb_test</span>
<span class="p">[</span> <span class="mi">87</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">CUDA</span> <span class="n">object</span> <span class="n">CMakeFiles</span><span class="o">/</span><span class="n">lb_test</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">test</span><span class="o">/</span><span class="n">BinarySearchTest</span><span class="p">.</span><span class="n">cu</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">90</span><span class="o">%</span><span class="p">]</span> <span class="n">Linking</span> <span class="n">CXX</span> <span class="n">executable</span> <span class="n">hornet_insert_test</span>
<span class="p">[</span> <span class="mi">90</span><span class="o">%</span><span class="p">]</span> <span class="n">Built</span> <span class="n">target</span> <span class="n">hornet_insert_test</span>
<span class="p">[</span> <span class="mi">93</span><span class="o">%</span><span class="p">]</span> <span class="n">Linking</span> <span class="n">CXX</span> <span class="n">executable</span> <span class="n">hornet_delete_test</span>
<span class="p">[</span> <span class="mi">93</span><span class="o">%</span><span class="p">]</span> <span class="n">Built</span> <span class="n">target</span> <span class="n">hornet_delete_test</span>
<span class="p">[</span> <span class="mi">96</span><span class="o">%</span><span class="p">]</span> <span class="n">Linking</span> <span class="n">CXX</span> <span class="n">executable</span> <span class="n">lb_test</span>
<span class="p">[</span> <span class="mi">96</span><span class="o">%</span><span class="p">]</span> <span class="n">Built</span> <span class="n">target</span> <span class="n">lb_test</span>
<span class="p">[</span><span class="mi">100</span><span class="o">%</span><span class="p">]</span> <span class="n">Linking</span> <span class="n">CXX</span> <span class="n">executable</span> <span class="n">hornet_test</span>
<span class="p">[</span><span class="mi">100</span><span class="o">%</span><span class="p">]</span> <span class="n">Built</span> <span class="n">target</span> <span class="n">hornet_test</span>
<span class="p">[</span><span class="n">ble</span><span class="o">:</span> <span class="n">elapsed</span> <span class="mi">36</span><span class="p">.</span><span class="mi">194</span><span class="n">s</span> <span class="p">(</span><span class="n">CPU</span> <span class="mi">158</span><span class="p">.</span><span class="mi">6</span><span class="o">%</span><span class="p">)]</span> <span class="n">rm</span> <span class="o">-</span><span class="n">rf</span> <span class="o">*</span> <span class="p">;</span> <span class="n">cmake</span> <span class="p">..;</span> <span class="n">make</span> <span class="o">-</span><span class="n">j4</span>
</code></pre></div></div>
<h1 id="office-use">office use.</h1>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">hornet</span><span class="o">/</span><span class="n">include</span><span class="o">/</span><span class="n">Core</span><span class="o">/</span><span class="n">DataLayout</span><span class="o">/</span><span class="n">DataLayoutDev</span><span class="p">.</span><span class="n">i</span><span class="p">.</span><span class="n">cuh</span><span class="p">(</span><span class="mi">43</span><span class="p">)</span><span class="o">:</span> <span class="n">error</span><span class="o">:</span> <span class="n">name</span> <span class="n">followed</span> <span class="n">by</span> <span class="s">"::"</span> <span class="n">must</span> <span class="n">be</span> <span class="n">a</span> <span class="n">class</span> <span class="n">or</span> <span class="n">namespace</span> <span class="n">name</span>
<span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">hornet</span><span class="o">/</span><span class="n">include</span><span class="o">/</span><span class="n">Core</span><span class="o">/</span><span class="n">DataLayout</span><span class="o">/</span><span class="n">DataLayoutDev</span><span class="p">.</span><span class="n">i</span><span class="p">.</span><span class="n">cuh</span><span class="p">(</span><span class="mi">43</span><span class="p">)</span><span class="o">:</span> <span class="n">error</span><span class="o">:</span> <span class="n">argument</span> <span class="n">list</span> <span class="k">for</span> <span class="n">class</span> <span class="n">template</span> <span class="s">"hornets_nest::AoSdev"</span> <span class="n">is</span> <span class="n">missing</span>
<span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">hornet</span><span class="o">/</span><span class="n">include</span><span class="o">/</span><span class="n">Core</span><span class="o">/</span><span class="n">DataLayout</span><span class="o">/</span><span class="n">DataLayoutDev</span><span class="p">.</span><span class="n">i</span><span class="p">.</span><span class="n">cuh</span><span class="p">(</span><span class="mi">43</span><span class="p">)</span><span class="o">:</span> <span class="n">error</span><span class="o">:</span> <span class="n">expected</span> <span class="n">a</span> <span class="s">";"</span>
<span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">hornet</span><span class="o">/</span><span class="n">include</span><span class="o">/</span><span class="n">Core</span><span class="o">/</span><span class="n">DataLayout</span><span class="o">/</span><span class="n">DataLayoutDev</span><span class="p">.</span><span class="n">i</span><span class="p">.</span><span class="n">cuh</span><span class="p">(</span><span class="mi">115</span><span class="p">)</span><span class="o">:</span> <span class="n">warning</span> <span class="err">#</span><span class="mi">12</span><span class="o">-</span><span class="n">D</span><span class="o">:</span> <span class="n">parsing</span> <span class="n">restarts</span> <span class="n">here</span> <span class="n">after</span> <span class="n">previous</span> <span class="n">syntax</span> <span class="n">error</span>
<span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">hornet</span><span class="o">/</span><span class="n">include</span><span class="o">/</span><span class="n">Core</span><span class="o">/</span><span class="n">DataLayout</span><span class="o">/</span><span class="n">DataLayoutDev</span><span class="p">.</span><span class="n">i</span><span class="p">.</span><span class="n">cuh</span><span class="p">(</span><span class="mi">43</span><span class="p">)</span><span class="o">:</span> <span class="n">error</span><span class="o">:</span> <span class="n">name</span> <span class="n">followed</span> <span class="n">by</span> <span class="s">"::"</span> <span class="n">must</span> <span class="n">be</span> <span class="n">a</span> <span class="n">class</span> <span class="n">or</span> <span class="n">namespace</span> <span class="n">name</span>
<span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">hornet</span><span class="o">/</span><span class="n">include</span><span class="o">/</span><span class="n">Core</span><span class="o">/</span><span class="n">DataLayout</span><span class="o">/</span><span class="n">DataLayoutDev</span><span class="p">.</span><span class="n">i</span><span class="p">.</span><span class="n">cuh</span><span class="p">(</span><span class="mi">43</span><span class="p">)</span><span class="o">:</span> <span class="n">error</span><span class="o">:</span> <span class="n">argument</span> <span class="n">list</span> <span class="k">for</span> <span class="n">class</span> <span class="n">template</span> <span class="s">"hornets_nest::AoSdev"</span> <span class="n">is</span> <span class="n">missing</span>
<span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">temp</span><span class="o">/</span><span class="n">hornet</span><span class="o">-</span><span class="mi">0</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">hornet</span><span class="o">/</span><span class="n">include</span><span class="o">/</span><span class="n">Core</span><span class="o">/</span><span class="n">DataLayout</span><span class="o">/</span><span class="n">DataLayoutDev</span><span class="p">.</span><span class="n">i</span><span class="p">.</span><span class="n">cuh</span><span class="p">(</span><span class="mi">43</span><span class="p">)</span><span class="o">:</span> <span class="n">error</span><span class="o">:</span> <span class="n">expected</span> <span class="n">a</span> <span class="s">";"</span>
</code></pre></div></div>
How to install+run Gunrock's Loops on P100 GPU using CentOS
2022-11-26T12:32:46+05:30
https://mrprajesh.co.in/how-to-install-run-loops-on-P100
<h2 id="tested-with">Tested with</h2>
<ul>
<li>CentOS v7.9.2009</li>
<li>CMake v23</li>
<li>CUDA v11.5</li>
<li>GCC 9.3</li>
</ul>
<h2 id="system-setup-using-p100">System setup using P100</h2>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">$</span> <span class="n">scl</span> <span class="n">enable</span> <span class="n">devtoolset</span><span class="o">-</span><span class="mi">9</span> <span class="n">bash</span>
<span class="err">$</span> <span class="n">nvcc</span> <span class="o">--</span><span class="n">version</span>
<span class="n">nvcc</span><span class="o">:</span> <span class="n">NVIDIA</span> <span class="p">(</span><span class="n">R</span><span class="p">)</span> <span class="n">Cuda</span> <span class="n">compiler</span> <span class="n">driver</span>
<span class="n">Copyright</span> <span class="p">(</span><span class="n">c</span><span class="p">)</span> <span class="mi">2005</span><span class="o">-</span><span class="mi">2021</span> <span class="n">NVIDIA</span> <span class="n">Corporation</span>
<span class="n">Built</span> <span class="n">on</span> <span class="n">Thu_Nov_18_09</span><span class="o">:</span><span class="mi">45</span><span class="o">:</span><span class="mi">30</span><span class="n">_PST_2021</span>
<span class="n">Cuda</span> <span class="n">compilation</span> <span class="n">tools</span><span class="p">,</span> <span class="n">release</span> <span class="mi">11</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span> <span class="n">V11</span><span class="p">.</span><span class="mi">5</span><span class="p">.</span><span class="mi">119</span>
<span class="n">Build</span> <span class="n">cuda_11</span><span class="p">.</span><span class="mi">5</span><span class="p">.</span><span class="n">r11</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">compiler</span><span class="p">.</span><span class="mi">30672275</span><span class="n">_0</span>
<span class="err">$</span> <span class="n">g</span><span class="o">++</span> <span class="o">--</span><span class="n">version</span>
<span class="n">g</span><span class="o">++</span> <span class="p">(</span><span class="n">GCC</span><span class="p">)</span> <span class="mi">9</span><span class="p">.</span><span class="mi">3</span><span class="p">.</span><span class="mi">1</span> <span class="mi">20200408</span> <span class="p">(</span><span class="n">Red</span> <span class="n">Hat</span> <span class="mi">9</span><span class="p">.</span><span class="mi">3</span><span class="p">.</span><span class="mi">1</span><span class="o">-</span><span class="mi">2</span><span class="p">)</span>
<span class="n">Copyright</span> <span class="p">(</span><span class="n">C</span><span class="p">)</span> <span class="mi">2019</span> <span class="n">Free</span> <span class="n">Software</span> <span class="n">Foundation</span><span class="p">,</span> <span class="n">Inc</span><span class="p">.</span>
<span class="n">This</span> <span class="n">is</span> <span class="n">free</span> <span class="n">software</span><span class="p">;</span> <span class="n">see</span> <span class="n">the</span> <span class="n">source</span> <span class="k">for</span> <span class="n">copying</span> <span class="n">conditions</span><span class="p">.</span> <span class="n">There</span> <span class="n">is</span> <span class="n">NO</span>
<span class="n">warranty</span><span class="p">;</span> <span class="n">not</span> <span class="n">even</span> <span class="k">for</span> <span class="n">MERCHANTABILITY</span> <span class="n">or</span> <span class="n">FITNESS</span> <span class="n">FOR</span> <span class="n">A</span> <span class="n">PARTICULAR</span> <span class="n">PURPOSE</span><span class="p">.</span>
<span class="cp"># CAUTION: you can skip THIS STEP if P100 is your DEFAULT DEVICE 0 GPU
</span><span class="err">$</span> <span class="n">export</span> <span class="n">CUDA_VISIBLE_DEVICES</span><span class="o">=</span><span class="mi">1</span>
<span class="err">$</span> <span class="n">echo</span> <span class="err">$</span><span class="n">CUDA_VISIBLE_DEVICES</span>
<span class="mi">1</span>
<span class="cp"># you need not run the next 2 steps. But just to show CC+DRIVER version
</span>
<span class="err">$</span> <span class="o">~/</span><span class="n">samples</span><span class="o">/</span><span class="mi">1</span><span class="n">_Utilities</span><span class="o">/</span><span class="n">deviceQuery</span><span class="o">/</span><span class="n">deviceQuery</span>
<span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="n">samples</span><span class="o">/</span><span class="mi">1</span><span class="n">_Utilities</span><span class="o">/</span><span class="n">deviceQuery</span><span class="o">/</span><span class="n">deviceQuery</span> <span class="n">Starting</span><span class="p">...</span>
<span class="n">CUDA</span> <span class="n">Device</span> <span class="n">Query</span> <span class="p">(</span><span class="n">Runtime</span> <span class="n">API</span><span class="p">)</span> <span class="n">version</span> <span class="p">(</span><span class="n">CUDART</span> <span class="k">static</span> <span class="n">linking</span><span class="p">)</span>
<span class="n">Detected</span> <span class="mi">1</span> <span class="n">CUDA</span> <span class="n">Capable</span> <span class="n">device</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
<span class="n">Device</span> <span class="mi">0</span><span class="o">:</span> <span class="s">"Tesla P100-PCIE-12GB"</span>
<span class="n">CUDA</span> <span class="n">Driver</span> <span class="n">Version</span> <span class="o">/</span> <span class="n">Runtime</span> <span class="n">Version</span> <span class="mi">11</span><span class="p">.</span><span class="mi">5</span> <span class="o">/</span> <span class="mi">9</span><span class="p">.</span><span class="mi">1</span>
<span class="n">CUDA</span> <span class="n">Capability</span> <span class="n">Major</span><span class="o">/</span><span class="n">Minor</span> <span class="n">version</span> <span class="n">number</span><span class="o">:</span> <span class="mi">6</span><span class="p">.</span><span class="mi">0</span> <span class="o"><<<==================================================</span><span class="n">HERE</span>
<span class="n">Total</span> <span class="n">amount</span> <span class="n">of</span> <span class="n">global</span> <span class="n">memory</span><span class="o">:</span> <span class="mi">12198</span> <span class="n">MBytes</span> <span class="p">(</span><span class="mi">12790923264</span> <span class="n">bytes</span><span class="p">)</span>
<span class="p">(</span><span class="mi">56</span><span class="p">)</span> <span class="n">Multiprocessors</span><span class="p">,</span> <span class="p">(</span> <span class="mi">64</span><span class="p">)</span> <span class="n">CUDA</span> <span class="n">Cores</span><span class="o">/</span><span class="n">MP</span><span class="o">:</span> <span class="mi">3584</span> <span class="n">CUDA</span> <span class="n">Cores</span>
<span class="n">GPU</span> <span class="n">Max</span> <span class="n">Clock</span> <span class="n">rate</span><span class="o">:</span> <span class="mi">1329</span> <span class="n">MHz</span> <span class="p">(</span><span class="mi">1</span><span class="p">.</span><span class="mi">33</span> <span class="n">GHz</span><span class="p">)</span>
<span class="n">Memory</span> <span class="n">Clock</span> <span class="n">rate</span><span class="o">:</span> <span class="mi">715</span> <span class="n">Mhz</span>
<span class="n">Memory</span> <span class="n">Bus</span> <span class="n">Width</span><span class="o">:</span> <span class="mi">3072</span><span class="o">-</span><span class="n">bit</span>
<span class="n">L2</span> <span class="n">Cache</span> <span class="n">Size</span><span class="o">:</span> <span class="mi">3145728</span> <span class="n">bytes</span>
<span class="n">Maximum</span> <span class="n">Texture</span> <span class="n">Dimension</span> <span class="n">Size</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">)</span> <span class="mi">1</span><span class="n">D</span><span class="o">=</span><span class="p">(</span><span class="mi">131072</span><span class="p">),</span> <span class="mi">2</span><span class="n">D</span><span class="o">=</span><span class="p">(</span><span class="mi">131072</span><span class="p">,</span> <span class="mi">65536</span><span class="p">),</span> <span class="mi">3</span><span class="n">D</span><span class="o">=</span><span class="p">(</span><span class="mi">16384</span><span class="p">,</span> <span class="mi">16384</span><span class="p">,</span> <span class="mi">16384</span><span class="p">)</span>
<span class="n">Maximum</span> <span class="n">Layered</span> <span class="mi">1</span><span class="n">D</span> <span class="n">Texture</span> <span class="n">Size</span><span class="p">,</span> <span class="p">(</span><span class="n">num</span><span class="p">)</span> <span class="n">layers</span> <span class="mi">1</span><span class="n">D</span><span class="o">=</span><span class="p">(</span><span class="mi">32768</span><span class="p">),</span> <span class="mi">2048</span> <span class="n">layers</span>
<span class="n">Maximum</span> <span class="n">Layered</span> <span class="mi">2</span><span class="n">D</span> <span class="n">Texture</span> <span class="n">Size</span><span class="p">,</span> <span class="p">(</span><span class="n">num</span><span class="p">)</span> <span class="n">layers</span> <span class="mi">2</span><span class="n">D</span><span class="o">=</span><span class="p">(</span><span class="mi">32768</span><span class="p">,</span> <span class="mi">32768</span><span class="p">),</span> <span class="mi">2048</span> <span class="n">layers</span>
<span class="n">Total</span> <span class="n">amount</span> <span class="n">of</span> <span class="n">constant</span> <span class="n">memory</span><span class="o">:</span> <span class="mi">65536</span> <span class="n">bytes</span>
<span class="n">Total</span> <span class="n">amount</span> <span class="n">of</span> <span class="n">shared</span> <span class="n">memory</span> <span class="n">per</span> <span class="n">block</span><span class="o">:</span> <span class="mi">49152</span> <span class="n">bytes</span>
<span class="n">Total</span> <span class="n">number</span> <span class="n">of</span> <span class="n">registers</span> <span class="n">available</span> <span class="n">per</span> <span class="n">block</span><span class="o">:</span> <span class="mi">65536</span>
<span class="n">Warp</span> <span class="n">size</span><span class="o">:</span> <span class="mi">32</span>
<span class="n">Maximum</span> <span class="n">number</span> <span class="n">of</span> <span class="n">threads</span> <span class="n">per</span> <span class="n">multiprocessor</span><span class="o">:</span> <span class="mi">2048</span>
<span class="n">Maximum</span> <span class="n">number</span> <span class="n">of</span> <span class="n">threads</span> <span class="n">per</span> <span class="n">block</span><span class="o">:</span> <span class="mi">1024</span>
<span class="n">Max</span> <span class="n">dimension</span> <span class="n">size</span> <span class="n">of</span> <span class="n">a</span> <span class="kr">thread</span> <span class="n">block</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">)</span><span class="o">:</span> <span class="p">(</span><span class="mi">1024</span><span class="p">,</span> <span class="mi">1024</span><span class="p">,</span> <span class="mi">64</span><span class="p">)</span>
<span class="n">Max</span> <span class="n">dimension</span> <span class="n">size</span> <span class="n">of</span> <span class="n">a</span> <span class="n">grid</span> <span class="n">size</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">)</span><span class="o">:</span> <span class="p">(</span><span class="mi">2147483647</span><span class="p">,</span> <span class="mi">65535</span><span class="p">,</span> <span class="mi">65535</span><span class="p">)</span>
<span class="n">Maximum</span> <span class="n">memory</span> <span class="n">pitch</span><span class="o">:</span> <span class="mi">2147483647</span> <span class="n">bytes</span>
<span class="n">Texture</span> <span class="n">alignment</span><span class="o">:</span> <span class="mi">512</span> <span class="n">bytes</span>
<span class="n">Concurrent</span> <span class="n">copy</span> <span class="n">and</span> <span class="n">kernel</span> <span class="n">execution</span><span class="o">:</span> <span class="n">Yes</span> <span class="n">with</span> <span class="mi">2</span> <span class="n">copy</span> <span class="n">engine</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
<span class="n">Run</span> <span class="n">time</span> <span class="n">limit</span> <span class="n">on</span> <span class="n">kernels</span><span class="o">:</span> <span class="n">No</span>
<span class="n">Integrated</span> <span class="n">GPU</span> <span class="n">sharing</span> <span class="n">Host</span> <span class="n">Memory</span><span class="o">:</span> <span class="n">No</span>
<span class="n">Support</span> <span class="n">host</span> <span class="n">page</span><span class="o">-</span><span class="n">locked</span> <span class="n">memory</span> <span class="n">mapping</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Alignment</span> <span class="n">requirement</span> <span class="k">for</span> <span class="n">Surfaces</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Device</span> <span class="n">has</span> <span class="n">ECC</span> <span class="n">support</span><span class="o">:</span> <span class="n">Enabled</span>
<span class="n">Device</span> <span class="n">supports</span> <span class="n">Unified</span> <span class="n">Addressing</span> <span class="p">(</span><span class="n">UVA</span><span class="p">)</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Device</span> <span class="n">PCI</span> <span class="n">Domain</span> <span class="n">ID</span> <span class="o">/</span> <span class="n">Bus</span> <span class="n">ID</span> <span class="o">/</span> <span class="n">location</span> <span class="n">ID</span><span class="o">:</span> <span class="mi">0</span> <span class="o">/</span> <span class="mi">130</span> <span class="o">/</span> <span class="mi">0</span>
<span class="n">Compute</span> <span class="n">Mode</span><span class="o">:</span>
<span class="o"><</span> <span class="n">Default</span> <span class="p">(</span><span class="n">multiple</span> <span class="n">host</span> <span class="n">threads</span> <span class="n">can</span> <span class="n">use</span> <span class="o">::</span><span class="n">cudaSetDevice</span><span class="p">()</span> <span class="n">with</span> <span class="n">device</span> <span class="n">simultaneously</span><span class="p">)</span> <span class="o">></span>
<span class="n">deviceQuery</span><span class="p">,</span> <span class="n">CUDA</span> <span class="n">Driver</span> <span class="o">=</span> <span class="n">CUDART</span><span class="p">,</span> <span class="n">CUDA</span> <span class="n">Driver</span> <span class="n">Version</span> <span class="o">=</span> <span class="mi">11</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span> <span class="n">CUDA</span> <span class="n">Runtime</span> <span class="n">Version</span> <span class="o">=</span> <span class="mi">9</span><span class="p">.</span><span class="mi">1</span><span class="p">,</span> <span class="n">NumDevs</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="n">Device0</span> <span class="o">=</span> <span class="n">Tesla</span> <span class="n">P100</span><span class="o">-</span><span class="n">PCIE</span><span class="o">-</span><span class="mi">12</span><span class="n">GB</span>
<span class="n">Result</span> <span class="o">=</span> <span class="n">PASS</span>
<span class="err">$</span> <span class="n">nvidia</span><span class="o">-</span><span class="n">smi</span>
<span class="n">Sat</span> <span class="n">Nov</span> <span class="mi">26</span> <span class="mi">10</span><span class="o">:</span><span class="mi">16</span><span class="o">:</span><span class="mi">26</span> <span class="mi">2022</span>
<span class="o">+-----------------------------------------------------------------------------+</span>
<span class="o">|</span> <span class="n">NVIDIA</span><span class="o">-</span><span class="n">SMI</span> <span class="mi">495</span><span class="p">.</span><span class="mi">29</span><span class="p">.</span><span class="mo">05</span> <span class="n">Driver</span> <span class="n">Version</span><span class="o">:</span> <span class="mi">495</span><span class="p">.</span><span class="mi">29</span><span class="p">.</span><span class="mo">05</span> <span class="n">CUDA</span> <span class="n">Version</span><span class="o">:</span> <span class="mi">11</span><span class="p">.</span><span class="mi">5</span> <span class="o">|</span>
<span class="o">|-------------------------------+----------------------+----------------------+</span>
<span class="o">|</span> <span class="n">GPU</span> <span class="n">Name</span> <span class="n">Persistence</span><span class="o">-</span><span class="n">M</span><span class="o">|</span> <span class="n">Bus</span><span class="o">-</span><span class="n">Id</span> <span class="n">Disp</span><span class="p">.</span><span class="n">A</span> <span class="o">|</span> <span class="n">Volatile</span> <span class="n">Uncorr</span><span class="p">.</span> <span class="n">ECC</span> <span class="o">|</span>
<span class="o">|</span> <span class="n">Fan</span> <span class="n">Temp</span> <span class="n">Perf</span> <span class="n">Pwr</span><span class="o">:</span><span class="n">Usage</span><span class="o">/</span><span class="n">Cap</span><span class="o">|</span> <span class="n">Memory</span><span class="o">-</span><span class="n">Usage</span> <span class="o">|</span> <span class="n">GPU</span><span class="o">-</span><span class="n">Util</span> <span class="n">Compute</span> <span class="n">M</span><span class="p">.</span> <span class="o">|</span>
<span class="o">|</span> <span class="o">|</span> <span class="o">|</span> <span class="n">MIG</span> <span class="n">M</span><span class="p">.</span> <span class="o">|</span>
<span class="o">|===============================+======================+======================|</span>
<span class="o">|</span> <span class="mi">0</span> <span class="n">NVIDIA</span> <span class="n">GeForce</span> <span class="p">...</span> <span class="n">On</span> <span class="o">|</span> <span class="mo">00000000</span><span class="o">:</span><span class="mo">02</span><span class="o">:</span><span class="mo">00</span><span class="p">.</span><span class="mi">0</span> <span class="n">Off</span> <span class="o">|</span> <span class="n">N</span><span class="o">/</span><span class="n">A</span> <span class="o">|</span>
<span class="o">|</span> <span class="mi">18</span><span class="o">%</span> <span class="mi">29</span><span class="n">C</span> <span class="n">P8</span> <span class="mi">13</span><span class="n">W</span> <span class="o">/</span> <span class="mi">250</span><span class="n">W</span> <span class="o">|</span> <span class="mi">20</span><span class="n">MiB</span> <span class="o">/</span> <span class="mi">11019</span><span class="n">MiB</span> <span class="o">|</span> <span class="mi">0</span><span class="o">%</span> <span class="n">Default</span> <span class="o">|</span>
<span class="o">|</span> <span class="o">|</span> <span class="o">|</span> <span class="n">N</span><span class="o">/</span><span class="n">A</span> <span class="o">|</span>
<span class="o">+-------------------------------+----------------------+----------------------+</span>
<span class="o">|</span> <span class="mi">1</span> <span class="n">Tesla</span> <span class="n">P100</span><span class="o">-</span><span class="n">PCIE</span><span class="p">...</span> <span class="n">On</span> <span class="o">|</span> <span class="mo">00000000</span><span class="o">:</span><span class="mi">82</span><span class="o">:</span><span class="mo">00</span><span class="p">.</span><span class="mi">0</span> <span class="n">Off</span> <span class="o">|</span> <span class="mi">0</span> <span class="o">|</span>
<span class="o">|</span> <span class="n">N</span><span class="o">/</span><span class="n">A</span> <span class="mi">31</span><span class="n">C</span> <span class="n">P0</span> <span class="mi">24</span><span class="n">W</span> <span class="o">/</span> <span class="mi">250</span><span class="n">W</span> <span class="o">|</span> <span class="mi">0</span><span class="n">MiB</span> <span class="o">/</span> <span class="mi">12198</span><span class="n">MiB</span> <span class="o">|</span> <span class="mi">0</span><span class="o">%</span> <span class="n">Default</span> <span class="o">|</span>
<span class="o">|</span> <span class="o">|</span> <span class="o">|</span> <span class="n">N</span><span class="o">/</span><span class="n">A</span> <span class="o">|</span>
<span class="o">+-------------------------------+----------------------+----------------------+</span>
<span class="o">+-----------------------------------------------------------------------------+</span>
<span class="o">|</span> <span class="n">Processes</span><span class="o">:</span> <span class="o">|</span>
<span class="o">|</span> <span class="n">GPU</span> <span class="n">GI</span> <span class="n">CI</span> <span class="n">PID</span> <span class="n">Type</span> <span class="n">Process</span> <span class="n">name</span> <span class="n">GPU</span> <span class="n">Memory</span> <span class="o">|</span>
<span class="o">|</span> <span class="n">ID</span> <span class="n">ID</span> <span class="n">Usage</span> <span class="o">|</span>
<span class="o">|=============================================================================|</span>
<span class="o">|</span> <span class="mi">0</span> <span class="n">N</span><span class="o">/</span><span class="n">A</span> <span class="n">N</span><span class="o">/</span><span class="n">A</span> <span class="mi">1670</span> <span class="n">G</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">X</span> <span class="mi">18</span><span class="n">MiB</span> <span class="o">|</span>
<span class="o">+-----------------------------------------------------------------------------+</span>
</code></pre></div></div>
<h2 id="dowloading-loop-and-run">Dowloading loop and run.</h2>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">$</span> <span class="n">git</span> <span class="n">clone</span> <span class="n">git</span><span class="err">@</span><span class="n">github</span><span class="p">.</span><span class="n">com</span><span class="o">:</span><span class="n">gunrock</span><span class="o">/</span><span class="n">loops</span><span class="p">.</span><span class="n">git</span>
<span class="err">$</span> <span class="n">cd</span> <span class="n">loops</span>
<span class="cp">#### IN CMakeLists.txt CHANGE THE LINE 72 to this: set(CMAKE_CUDA_ARCHITECTURES 60)
#### i.e to use SM60 CC version THAT we found from our device query. As PER P100 GPU.
</span>
<span class="err">$</span> <span class="n">vim</span> <span class="n">CMakeLists</span><span class="p">.</span><span class="n">txt</span>
<span class="err">$</span> <span class="n">mkdir</span> <span class="n">build</span> <span class="o">&&</span> <span class="n">cd</span> <span class="n">build</span>
<span class="err">$</span> <span class="o">~/</span><span class="n">install</span><span class="o">/</span><span class="n">cmake</span><span class="o">-</span><span class="mi">3</span><span class="p">.</span><span class="mi">23</span><span class="p">.</span><span class="mi">0</span><span class="o">-</span><span class="n">linux</span><span class="o">-</span><span class="n">x86_64</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">cmake</span> <span class="p">..</span> <span class="err">#</span> <span class="n">I</span> <span class="n">HAVE</span> <span class="n">A</span> <span class="n">NEW</span> <span class="n">CMAKE</span> <span class="n">BINARY</span> <span class="n">IN</span> <span class="n">MY</span> <span class="n">HOME</span><span class="p">.</span> <span class="n">HOPE</span> <span class="n">YOU</span> <span class="n">HAVE</span> <span class="n">IT</span> <span class="n">TOO</span><span class="p">.</span>
<span class="cp"># ... wait
</span>
<span class="err">$</span> <span class="n">make</span> <span class="n">loops</span><span class="p">.</span><span class="n">spmv</span><span class="p">.</span><span class="n">merge_path</span>
<span class="cp"># ... wait
</span>
<span class="err">$</span> <span class="n">bin</span><span class="o">/</span><span class="n">loops</span><span class="p">.</span><span class="n">spmv</span><span class="p">.</span><span class="n">merge_path</span> <span class="o">-</span><span class="n">m</span> <span class="p">..</span><span class="o">/</span><span class="n">datasets</span><span class="o">/</span><span class="n">chesapeake</span><span class="o">/</span><span class="n">chesapeake</span><span class="p">.</span><span class="n">mtx</span>
<span class="n">merge_path_flat</span><span class="p">,</span><span class="n">chesapeake</span><span class="p">,</span><span class="mi">39</span><span class="p">,</span><span class="mi">39</span><span class="p">,</span><span class="mi">340</span><span class="p">,</span><span class="mi">0</span><span class="p">.</span><span class="mo">020256</span>
</code></pre></div></div>
<p>This sanity should work. Then, do <code class="language-plaintext highlighter-rouge">make $(nproc)</code> at penultimate step and run specific apps after <code class="language-plaintext highlighter-rouge">wget</code>-ting all the dataset files.</p>
<h2 id="office-use--using-this-commit-version-in-main">Office use – Using this commit version in main.</h2>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">$</span> <span class="n">git</span> <span class="n">lg</span>
<span class="o">*</span> <span class="mi">40</span><span class="n">a6719</span> <span class="o">-</span> <span class="p">(</span><span class="n">HEAD</span><span class="p">,</span> <span class="n">origin</span><span class="o">/</span><span class="n">main</span><span class="p">,</span> <span class="n">origin</span><span class="o">/</span><span class="n">HEAD</span><span class="p">,</span> <span class="n">main</span><span class="p">)</span> <span class="p">[</span><span class="n">skip</span> <span class="n">ci</span><span class="p">]</span> <span class="n">Merge</span> <span class="n">pull</span> <span class="n">request</span> <span class="err">#</span><span class="mi">24</span> <span class="n">from</span> <span class="n">neoblizz</span><span class="o">/</span><span class="n">dev</span> <span class="p">(</span><span class="mi">20</span> <span class="n">hours</span> <span class="n">ago</span><span class="p">)</span> <span class="o"><</span><span class="n">Muhammad</span> <span class="n">Osama</span><span class="o">></span>
<span class="o">|</span><span class="err">\</span>
<span class="o">|</span> <span class="o">*</span> <span class="mf">4e99</span><span class="n">a28</span> <span class="o">-</span> <span class="n">gitignore</span> <span class="n">ignored</span> <span class="n">the</span> <span class="n">mtx</span> <span class="n">file</span><span class="p">.</span> <span class="p">(</span><span class="mi">20</span> <span class="n">hours</span> <span class="n">ago</span><span class="p">)</span> <span class="o"><</span><span class="n">neoblizz</span><span class="o">></span>
<span class="o">*</span> <span class="o">|</span> <span class="mi">55</span><span class="n">b5e68</span> <span class="o">-</span> <span class="n">Merge</span> <span class="n">pull</span> <span class="n">request</span> <span class="err">#</span><span class="mi">23</span> <span class="n">from</span> <span class="n">neoblizz</span><span class="o">/</span><span class="n">dev</span> <span class="p">(</span><span class="mi">4</span> <span class="n">days</span> <span class="n">ago</span><span class="p">)</span> <span class="o"><</span><span class="n">Muhammad</span> <span class="n">Osama</span><span class="o">></span>
<span class="o">|</span><span class="err">\</span> <span class="err">\</span>
<span class="o">|</span> <span class="o">|/</span>
<span class="o">|</span> <span class="o">*</span> <span class="n">f348586</span> <span class="o">-</span> <span class="p">[</span><span class="n">skip</span> <span class="n">ci</span><span class="p">]</span> <span class="n">forgot</span> <span class="n">to</span> <span class="n">mention</span> <span class="n">ipynb</span><span class="p">.</span> <span class="p">(</span><span class="mi">4</span> <span class="n">days</span> <span class="n">ago</span><span class="p">)</span> <span class="o"><</span><span class="n">neoblizz</span><span class="o">></span>
<span class="o">*</span> <span class="o">|</span> <span class="n">c598aba</span> <span class="o">-</span> <span class="n">Merge</span> <span class="n">pull</span> <span class="n">request</span> <span class="err">#</span><span class="mi">22</span> <span class="n">from</span> <span class="n">gunrock</span><span class="o">/</span><span class="n">dev</span> <span class="p">(</span><span class="mi">4</span> <span class="n">days</span> <span class="n">ago</span><span class="p">)</span> <span class="o"><</span><span class="n">Muhammad</span> <span class="n">Osama</span><span class="o">></span>
<span class="o">|</span><span class="err">\</span> <span class="err">\</span>
<span class="o">|</span> <span class="o">*</span> <span class="err">\</span> <span class="mi">651</span><span class="n">da0c</span> <span class="o">-</span> <span class="p">(</span><span class="n">origin</span><span class="o">/</span><span class="n">dev</span><span class="p">)</span> <span class="n">Merge</span> <span class="n">pull</span> <span class="n">request</span> <span class="err">#</span><span class="mi">21</span> <span class="n">from</span> <span class="n">neoblizz</span><span class="o">/</span><span class="n">dev</span> <span class="p">(</span><span class="mi">4</span> <span class="n">days</span> <span class="n">ago</span><span class="p">)</span> <span class="o"><</span><span class="n">Muhammad</span> <span class="n">Osama</span><span class="o">></span>
<span class="o">|</span> <span class="o">|</span><span class="err">\</span> <span class="err">\</span>
</code></pre></div></div>
2022 How to Install, Compile and Run SYCL using NVIDIA GPUs
2022-11-15T10:12:43+05:30
https://mrprajesh.co.in/how-to-install-sycl
<h3 id="prerequisites">Prerequisites</h3>
<ul>
<li><a href="https://intel.github.io/llvm-docs/GetStartedGuide.html#prerequisites">All preq for LLVM</a>
<ul>
<li>git</li>
<li>cmake version 3.14+</li>
<li>python</li>
<li>ninja</li>
<li>C++ compiler GCC version 7.1.0+ (TLDR C++17 support)</li>
</ul>
</li>
<li>CUDA Toolkit 11.5+ in default path <em>(11.7 and 11.8 are only partially supported as on date!)</em></li>
<li>I am using Ubuntu 20.04; should work any Linux which has all above.</li>
</ul>
<h3 id="build-a-c-complier-for-sycl">Build a C++ Complier for SYCL</h3>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">#Create folder; Assume is as $DPCPP_HOME
</span><span class="n">mkdir</span> <span class="err">$</span><span class="n">HOME</span><span class="o">/</span><span class="n">install</span>
<span class="n">cd</span> <span class="err">$</span><span class="n">HOME</span><span class="o">/</span><span class="n">install</span>
<span class="cp"># Build INTEL's LLVM
# get sycl branch
</span><span class="n">git</span> <span class="n">clone</span> <span class="n">https</span><span class="o">:</span><span class="c1">//github.com/intel/llvm.git -b sycl</span>
<span class="n">cd</span> <span class="n">llvm</span>
<span class="cp"># OPTIONAL STEP. Warning LLVM undergoes a lot changes.
# In case, recent commit did not work, use the below that worked for me
# 082cde6 - (HEAD, origin/sycl, origin/HEAD, sycl) [CI][1/3] Add Ubuntu 22 containers build (#7106) <Pavel Chupin>
</span><span class="n">git</span> <span class="n">checkout</span> <span class="mi">082</span><span class="n">cde6</span>
<span class="cp"># configure
</span><span class="n">python</span> <span class="p">.</span><span class="o">/</span><span class="n">buildbot</span><span class="o">/</span><span class="n">configure</span><span class="p">.</span><span class="n">py</span> <span class="o">--</span><span class="n">cuda</span> <span class="o">-</span><span class="n">t</span> <span class="n">release</span> <span class="o">--</span><span class="n">cmake</span><span class="o">-</span><span class="n">gen</span> <span class="s">"Unix Makefiles"</span>
<span class="cp"># Assuming no error. Build takes 20mins. Get a coffee!
</span><span class="n">cd</span> <span class="n">build</span>
<span class="n">make</span> <span class="n">sycl</span><span class="o">-</span><span class="n">toolchain</span> <span class="o">-</span><span class="n">j</span> <span class="err">`</span><span class="n">nproc</span><span class="err">`</span>
<span class="n">make</span> <span class="n">install</span>
<span class="cp"># assumes $HOME/install/llvm installation
</span></code></pre></div></div>
<h3 id="helloworld-sycl---compile-and-run">HelloWorld SYCL - Compile and Run</h3>
<ul>
<li><strong>Step1.</strong> create a file <code class="language-plaintext highlighter-rouge">simple-sycl-app-cuda.cpp</code></li>
</ul>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">#include</span> <span class="cpf"><sycl/sycl.hpp></span><span class="cp">
</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="c1">// Creating buffer of 4 ints to be used inside the kernel code</span>
<span class="n">sycl</span><span class="o">::</span><span class="n">buffer</span><span class="o"><</span><span class="n">sycl</span><span class="o">::</span><span class="n">cl_int</span><span class="p">,</span> <span class="mi">1</span><span class="o">></span> <span class="n">Buffer</span><span class="p">(</span><span class="mi">4</span><span class="p">);</span>
<span class="c1">// Creating SYCL queue</span>
<span class="n">sycl</span><span class="o">::</span><span class="n">queue</span> <span class="n">Queue</span><span class="p">;</span>
<span class="c1">// Size of index space for kernel</span>
<span class="n">sycl</span><span class="o">::</span><span class="n">range</span><span class="o"><</span><span class="mi">1</span><span class="o">></span> <span class="n">NumOfWorkItems</span><span class="p">{</span><span class="n">Buffer</span><span class="p">.</span><span class="n">size</span><span class="p">()};</span>
<span class="c1">// Submitting command group(work) to queue</span>
<span class="n">Queue</span><span class="p">.</span><span class="n">submit</span><span class="p">([</span><span class="o">&</span><span class="p">](</span><span class="n">sycl</span><span class="o">::</span><span class="n">handler</span> <span class="o">&</span><span class="n">cgh</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// Getting write only access to the buffer on a device</span>
<span class="k">auto</span> <span class="n">Accessor</span> <span class="o">=</span> <span class="n">Buffer</span><span class="p">.</span><span class="n">get_access</span><span class="o"><</span><span class="n">sycl</span><span class="o">::</span><span class="n">access</span><span class="o">::</span><span class="n">mode</span><span class="o">::</span><span class="n">write</span><span class="o">></span><span class="p">(</span><span class="n">cgh</span><span class="p">);</span>
<span class="c1">// Executing kernel</span>
<span class="n">cgh</span><span class="p">.</span><span class="n">parallel_for</span><span class="o"><</span><span class="n">class</span> <span class="n">FillBuffer</span><span class="o">></span><span class="p">(</span>
<span class="n">NumOfWorkItems</span><span class="p">,</span> <span class="p">[</span><span class="o">=</span><span class="p">](</span><span class="n">sycl</span><span class="o">::</span><span class="n">id</span><span class="o"><</span><span class="mi">1</span><span class="o">></span> <span class="n">WIid</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// Fill buffer with indexes</span>
<span class="n">Accessor</span><span class="p">[</span><span class="n">WIid</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">sycl</span><span class="o">::</span><span class="n">cl_int</span><span class="p">)</span><span class="n">WIid</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<span class="p">});</span>
<span class="p">});</span>
<span class="c1">// Getting read only access to the buffer on the host.</span>
<span class="c1">// Implicit barrier waiting for queue to complete the work.</span>
<span class="k">const</span> <span class="k">auto</span> <span class="n">HostAccessor</span> <span class="o">=</span> <span class="n">Buffer</span><span class="p">.</span><span class="n">get_access</span><span class="o"><</span><span class="n">sycl</span><span class="o">::</span><span class="n">access</span><span class="o">::</span><span class="n">mode</span><span class="o">::</span><span class="n">read</span><span class="o">></span><span class="p">();</span>
<span class="c1">// Check the results</span>
<span class="n">bool</span> <span class="n">MismatchFound</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="kt">size_t</span> <span class="n">I</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">I</span> <span class="o"><</span> <span class="n">Buffer</span><span class="p">.</span><span class="n">size</span><span class="p">();</span> <span class="o">++</span><span class="n">I</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="n">HostAccessor</span><span class="p">[</span><span class="n">I</span><span class="p">]</span> <span class="o">!=</span> <span class="n">I</span><span class="p">)</span> <span class="p">{</span>
<span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o"><<</span> <span class="s">"The result is incorrect for element: "</span> <span class="o"><<</span> <span class="n">I</span>
<span class="o"><<</span> <span class="s">" , expected: "</span> <span class="o"><<</span> <span class="n">I</span> <span class="o"><<</span> <span class="s">" , got: "</span> <span class="o"><<</span> <span class="n">HostAccessor</span><span class="p">[</span><span class="n">I</span><span class="p">]</span>
<span class="o"><<</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
<span class="n">MismatchFound</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">MismatchFound</span><span class="p">)</span> <span class="p">{</span>
<span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o"><<</span> <span class="s">"The results are correct!"</span> <span class="o"><<</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span> <span class="n">MismatchFound</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div>
<ul>
<li><strong>Step 2</strong>. Exports</li>
</ul>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"># do it
</span><span class="n">export</span> <span class="n">PATH</span><span class="o">=</span><span class="err">$</span><span class="n">HOME</span><span class="o">/</span><span class="n">install</span><span class="o">/</span><span class="n">llvm</span><span class="o">/</span><span class="n">build</span><span class="o">/</span><span class="n">bin</span><span class="o">:</span><span class="err">$</span><span class="n">PATH</span>
<span class="n">export</span> <span class="n">LD_LIBRARY_PATH</span><span class="o">=</span><span class="err">$</span><span class="n">HOME</span><span class="o">/</span><span class="n">install</span><span class="o">/</span><span class="n">llvm</span><span class="o">/</span><span class="n">build</span><span class="o">/</span><span class="n">lib</span><span class="o">:</span><span class="err">$</span><span class="n">LD_LIBRARY_PATH</span>
<span class="cp"># verify
</span><span class="err">$</span> <span class="n">clang</span><span class="o">++</span> <span class="o">--</span><span class="n">version</span>
<span class="n">clang</span> <span class="n">version</span> <span class="mi">16</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span>
</code></pre></div></div>
<ul>
<li><strong>Step 3.</strong> Compile and run</li>
</ul>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">#complie
</span><span class="n">clang</span><span class="o">++</span> <span class="o">-</span><span class="n">fsycl</span> <span class="o">-</span><span class="n">fsycl</span><span class="o">-</span><span class="n">targets</span><span class="o">=</span><span class="n">nvptx64</span><span class="o">-</span><span class="n">nvidia</span><span class="o">-</span><span class="n">cuda</span> <span class="n">simple</span><span class="o">-</span><span class="n">sycl</span><span class="o">-</span><span class="n">app</span><span class="p">.</span><span class="n">cpp</span> <span class="o">-</span><span class="n">o</span> <span class="n">simple</span><span class="o">-</span><span class="n">sycl</span><span class="o">-</span><span class="n">app</span><span class="o">-</span><span class="n">cuda</span>
<span class="cp">#run
</span><span class="p">.</span><span class="o">/</span><span class="n">simple</span><span class="o">-</span><span class="n">sycl</span><span class="o">-</span><span class="n">app</span><span class="o">-</span><span class="n">cuda</span>
<span class="n">The</span> <span class="n">results</span> <span class="n">are</span> <span class="n">correct</span><span class="o">!</span>
</code></pre></div></div>
<h2 id="non-default-cuda-installation">Non-default CUDA installation</h2>
<p>If CUDA installation folder is different or default CUDA is not the required version.
Modify only two steps from above rest is the same.
Assuming SYCL to use this <code class="language-plaintext highlighter-rouge">/usr/local/cuda-11.5</code> version.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">...</span>
<span class="cp"># configure
</span><span class="n">python3</span> <span class="p">.</span><span class="o">/</span><span class="n">buildbot</span><span class="o">/</span><span class="n">configure</span><span class="p">.</span><span class="n">py</span> <span class="o">--</span><span class="n">cuda</span> <span class="o">-</span><span class="n">t</span> <span class="n">release</span> <span class="o">--</span><span class="n">cmake</span><span class="o">-</span><span class="n">gen</span> <span class="s">"Unix Makefiles"</span> <span class="o">--</span><span class="n">cmake</span><span class="o">-</span><span class="n">opt</span><span class="o">=</span><span class="s">"-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-11.5"</span>
<span class="p">...</span>
<span class="cp"># compile
</span><span class="n">clang</span><span class="o">++</span> <span class="o">-</span><span class="n">fsycl</span> <span class="o">-</span><span class="n">fsycl</span><span class="o">-</span><span class="n">targets</span><span class="o">=</span><span class="n">nvptx64</span><span class="o">-</span><span class="n">nvidia</span><span class="o">-</span><span class="n">cuda</span> <span class="n">simple</span><span class="o">-</span><span class="n">sycl</span><span class="o">-</span><span class="n">app</span><span class="p">.</span><span class="n">cpp</span> <span class="o">-</span><span class="n">o</span> <span class="n">simple</span><span class="o">-</span><span class="n">sycl</span><span class="o">-</span><span class="n">app</span><span class="o">-</span><span class="n">cuda</span> <span class="o">--</span><span class="n">cuda</span><span class="o">-</span><span class="n">path</span><span class="o">=/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">cuda</span><span class="o">-</span><span class="mi">11</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span>
</code></pre></div></div>
<p>That’s it. TATA.</p>
<h3 id="references">References</h3>
<ul>
<li><a href="https://codeplay.com/solutions/oneapi/for-cuda/#getting-started">https://codeplay.com/solutions/oneapi/for-cuda/#getting-started</a></li>
<li><a href="https://intel.github.io/llvm-docs/GetStartedGuide.html#build-dpc-toolchain-with-support-for-nvidia-cuda">
https://intel.github.io/llvm-docs/GetStartedGuide.html#build-dpc-toolchain-with-support-for-nvidia-cuda</a></li>
</ul>
<h3 id="update">Update</h3>
<p>27NOV2023.</p>
<ul>
<li><a href="https://github.com/intel/llvm/issues/11918#issuecomment-1815220117">similar Err 1</a></li>
<li><a href="https://github.com/intel/llvm/issues/11918#issuecomment-1815220117">similar Err 2</a></li>
<li>NOTE: An installation of at least CUDA 11.6 due to this <a href="https://forums.developer.nvidia.com/t/libdevice-functions-causing-ptxas-segfault/193352">issue</a></li>
</ul>
How to install CUDA 11.5 on Centos7
2022-11-14T10:50:23+05:30
https://mrprajesh.co.in/to-install-cuda-on-centos7
<h1 id="how-to-install-a-newer-cuda-on-centos-7">How to install a newer CUDA On CentOS 7.</h1>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"># Enable a better GCC (Do not use default -- GCC 4.8.5 in my case )
</span>
<span class="n">scl</span> <span class="n">enable</span> <span class="n">devtoolset</span><span class="o">-</span><span class="mi">9</span> <span class="n">bash</span>
<span class="cp"># download the required CUDA file from here https://developer.nvidia.com/cuda-toolkit-archive
# In my case I am choosing CUDA 11.5.2 for some specific reasons.
# Choose the OS and Run file like https://developer.nvidia.com/cuda-11-5-2-download-archive?target_os=Linux&target_arch=x86_64&Distribution=CentOS&target_version=7&target_type=runfile_local
</span>
<span class="n">wget</span> <span class="n">https</span><span class="o">:</span><span class="c1">//developer.download.nvidia.com/compute/cuda/11.5.2/local_installers/cuda_11.5.2_495.29.05_linux.run</span>
<span class="n">sudo</span> <span class="n">sh</span> <span class="n">cuda_11</span><span class="p">.</span><span class="mi">5</span><span class="p">.</span><span class="mi">2</span><span class="n">_495</span><span class="p">.</span><span class="mi">29</span><span class="p">.</span><span class="mo">05</span><span class="n">_linux</span><span class="p">.</span><span class="n">run</span>
<span class="cp"># Checkmark Driver, Toolkit, Demo, Docs
</span>
<span class="cp"># Should result in something like below upon success.
</span>
<span class="o">===========</span>
<span class="o">=</span> <span class="n">Summary</span> <span class="o">=</span>
<span class="o">===========</span>
<span class="n">Driver</span><span class="o">:</span> <span class="n">Installed</span>
<span class="n">Toolkit</span><span class="o">:</span> <span class="n">Installed</span> <span class="n">in</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">cuda</span><span class="o">-</span><span class="mi">11</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span>
<span class="n">Samples</span><span class="o">:</span> <span class="n">Installed</span> <span class="n">in</span> <span class="o">/</span><span class="n">root</span><span class="o">/</span>
<span class="n">Please</span> <span class="n">make</span> <span class="n">sure</span> <span class="n">that</span>
<span class="o">-</span> <span class="n">PATH</span> <span class="n">includes</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">cuda</span><span class="o">-</span><span class="mi">11</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">bin</span>
<span class="o">-</span> <span class="n">LD_LIBRARY_PATH</span> <span class="n">includes</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">cuda</span><span class="o">-</span><span class="mi">11</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">lib64</span><span class="p">,</span> <span class="n">or</span><span class="p">,</span> <span class="n">add</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">cuda</span><span class="o">-</span><span class="mi">11</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">lib64</span> <span class="n">to</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">ld</span><span class="p">.</span><span class="n">so</span><span class="p">.</span><span class="n">conf</span> <span class="n">and</span> <span class="n">run</span> <span class="n">ldconfig</span> <span class="n">as</span> <span class="n">root</span>
<span class="n">To</span> <span class="n">uninstall</span> <span class="n">the</span> <span class="n">CUDA</span> <span class="n">Toolkit</span><span class="p">,</span> <span class="n">run</span> <span class="n">cuda</span><span class="o">-</span><span class="n">uninstaller</span> <span class="n">in</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">cuda</span><span class="o">-</span><span class="mi">11</span><span class="p">.</span><span class="mi">5</span><span class="o">/</span><span class="n">bin</span>
<span class="n">To</span> <span class="n">uninstall</span> <span class="n">the</span> <span class="n">NVIDIA</span> <span class="n">Driver</span><span class="p">,</span> <span class="n">run</span> <span class="n">nvidia</span><span class="o">-</span><span class="n">uninstall</span>
<span class="n">Logfile</span> <span class="n">is</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">log</span><span class="o">/</span><span class="n">cuda</span><span class="o">-</span><span class="n">installer</span><span class="p">.</span><span class="n">log</span>
<span class="cp"># both should be working.
</span>
<span class="n">deviceQuery</span>
<span class="n">nvidia</span><span class="o">-</span><span class="n">smi</span>
</code></pre></div></div>
<h3 id="reboot">REBOOT</h3>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">reboot</span>
</code></pre></div></div>
<h4 id="both-should-be-working">both should be working</h4>
<p>or write a HelloWorld.cu</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">deviceQuery</span>
<span class="n">nvidia</span><span class="o">-</span><span class="n">smi</span>
</code></pre></div></div>
<p>That’s all.</p>
<h2 id="for-office-use-only">For office use only.</h2>
<h3 id="to-uninstall-drivers">To uninstall drivers</h3>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">nvidia</span><span class="o">-</span><span class="n">uninstall</span>
<span class="cp">#no override backup x config
</span>
</code></pre></div></div>
<h3 id="to-uninstall-particular-cuda">To uninstall particular CUDA</h3>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">cuda</span><span class="o">-</span><span class="mi">11</span><span class="p">.</span><span class="mi">8</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">cuda</span><span class="o">-</span><span class="n">uninstaller</span>
</code></pre></div></div>
<h3 id="blacklist-nouveau">blacklist-nouveau</h3>
<p>Ensure Step 1 is done. If not the do both 1 and 2.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"># Step 1: Create a file at /etc/modprobe.d/blacklist-nouveau.conf with the following contents:
</span><span class="n">blacklist</span> <span class="n">nouveau</span>
<span class="n">options</span> <span class="n">nouveau</span> <span class="n">modeset</span><span class="o">=</span><span class="mi">0</span>
<span class="cp"># Step 2: Regenerate the kernel initramfs:
</span><span class="n">sudo</span> <span class="n">dracut</span> <span class="o">--</span><span class="n">force</span>
</code></pre></div></div>
<h3 id="buiding-and-running-devicequery">buiding and running deviceQuery</h3>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">cd</span> <span class="n">NVIDIA_CUDA</span><span class="o">-</span><span class="mi">11</span><span class="p">.</span><span class="mi">5</span><span class="n">_Samples</span><span class="o">/</span><span class="mi">1</span><span class="n">_Utilities</span><span class="o">/</span><span class="n">deviceQuery</span>
<span class="p">[</span><span class="n">root</span><span class="err">@</span><span class="n">rn</span><span class="o">-</span><span class="n">gpu</span><span class="o">-</span><span class="n">p100</span> <span class="n">deviceQuery</span><span class="p">]</span><span class="err">#</span> <span class="n">ll</span>
<span class="n">total</span> <span class="mi">40</span>
<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span><span class="p">.</span> <span class="mi">1</span> <span class="n">root</span> <span class="n">root</span> <span class="mi">12721</span> <span class="n">Nov</span> <span class="mi">14</span> <span class="mi">11</span><span class="o">:</span><span class="mi">12</span> <span class="n">deviceQuery</span><span class="p">.</span><span class="n">cpp</span>
<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span><span class="p">.</span> <span class="mi">1</span> <span class="n">root</span> <span class="n">root</span> <span class="mi">12317</span> <span class="n">Nov</span> <span class="mi">14</span> <span class="mi">11</span><span class="o">:</span><span class="mi">12</span> <span class="n">Makefile</span>
<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span><span class="p">.</span> <span class="mi">1</span> <span class="n">root</span> <span class="n">root</span> <span class="mi">1815</span> <span class="n">Nov</span> <span class="mi">14</span> <span class="mi">11</span><span class="o">:</span><span class="mi">12</span> <span class="n">NsightEclipse</span><span class="p">.</span><span class="n">xml</span>
<span class="o">-</span><span class="n">rw</span><span class="o">-</span><span class="n">r</span><span class="o">--</span><span class="n">r</span><span class="o">--</span><span class="p">.</span> <span class="mi">1</span> <span class="n">root</span> <span class="n">root</span> <span class="mi">168</span> <span class="n">Nov</span> <span class="mi">14</span> <span class="mi">11</span><span class="o">:</span><span class="mi">12</span> <span class="n">readme</span><span class="p">.</span><span class="n">txt</span>
<span class="p">[</span><span class="n">root</span><span class="err">@</span><span class="n">rn</span><span class="o">-</span><span class="n">gpu</span><span class="o">-</span><span class="n">p100</span> <span class="n">deviceQuery</span><span class="p">]</span><span class="err">#</span> <span class="n">make</span>
<span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">cuda</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">nvcc</span> <span class="o">-</span><span class="n">ccbin</span> <span class="n">g</span><span class="o">++</span> <span class="o">-</span><span class="n">I</span><span class="p">..</span><span class="o">/</span><span class="p">..</span><span class="o">/</span><span class="n">common</span><span class="o">/</span><span class="n">inc</span> <span class="o">-</span><span class="n">m64</span> <span class="o">--</span><span class="n">threads</span> <span class="mi">0</span> <span class="o">--</span><span class="n">std</span><span class="o">=</span><span class="n">c</span><span class="o">++</span><span class="mi">11</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_35</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">sm_35</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_37</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">sm_37</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_50</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">sm_50</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_52</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">sm_52</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_60</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">sm_60</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_61</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">sm_61</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_70</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">sm_70</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_75</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">sm_75</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_80</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">sm_80</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_86</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">sm_86</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_86</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">compute_86</span> <span class="o">-</span><span class="n">o</span> <span class="n">deviceQuery</span><span class="p">.</span><span class="n">o</span> <span class="o">-</span><span class="n">c</span> <span class="n">deviceQuery</span><span class="p">.</span><span class="n">cpp</span>
<span class="n">nvcc</span> <span class="n">warning</span> <span class="o">:</span> <span class="n">The</span> <span class="err">'</span><span class="n">compute_35</span><span class="err">'</span><span class="p">,</span> <span class="err">'</span><span class="n">compute_37</span><span class="err">'</span><span class="p">,</span> <span class="err">'</span><span class="n">compute_50</span><span class="err">'</span><span class="p">,</span> <span class="err">'</span><span class="n">sm_35</span><span class="err">'</span><span class="p">,</span> <span class="err">'</span><span class="n">sm_37</span><span class="err">'</span> <span class="n">and</span> <span class="err">'</span><span class="n">sm_50</span><span class="err">'</span> <span class="n">architectures</span> <span class="n">are</span> <span class="n">deprecated</span><span class="p">,</span> <span class="n">and</span> <span class="n">may</span> <span class="n">be</span> <span class="n">removed</span> <span class="n">in</span> <span class="n">a</span> <span class="n">future</span> <span class="n">release</span> <span class="p">(</span><span class="n">Use</span> <span class="o">-</span><span class="n">Wno</span><span class="o">-</span><span class="n">deprecated</span><span class="o">-</span><span class="n">gpu</span><span class="o">-</span><span class="n">targets</span> <span class="n">to</span> <span class="n">suppress</span> <span class="n">warning</span><span class="p">).</span>
<span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">cuda</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">nvcc</span> <span class="o">-</span><span class="n">ccbin</span> <span class="n">g</span><span class="o">++</span> <span class="o">-</span><span class="n">m64</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_35</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">sm_35</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_37</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">sm_37</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_50</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">sm_50</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_52</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">sm_52</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_60</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">sm_60</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_61</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">sm_61</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_70</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">sm_70</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_75</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">sm_75</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_80</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">sm_80</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_86</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">sm_86</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_86</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">compute_86</span> <span class="o">-</span><span class="n">o</span> <span class="n">deviceQuery</span> <span class="n">deviceQuery</span><span class="p">.</span><span class="n">o</span>
<span class="n">nvcc</span> <span class="n">warning</span> <span class="o">:</span> <span class="n">The</span> <span class="err">'</span><span class="n">compute_35</span><span class="err">'</span><span class="p">,</span> <span class="err">'</span><span class="n">compute_37</span><span class="err">'</span><span class="p">,</span> <span class="err">'</span><span class="n">compute_50</span><span class="err">'</span><span class="p">,</span> <span class="err">'</span><span class="n">sm_35</span><span class="err">'</span><span class="p">,</span> <span class="err">'</span><span class="n">sm_37</span><span class="err">'</span> <span class="n">and</span> <span class="err">'</span><span class="n">sm_50</span><span class="err">'</span> <span class="n">architectures</span> <span class="n">are</span> <span class="n">deprecated</span><span class="p">,</span> <span class="n">and</span> <span class="n">may</span> <span class="n">be</span> <span class="n">removed</span> <span class="n">in</span> <span class="n">a</span> <span class="n">future</span> <span class="n">release</span> <span class="p">(</span><span class="n">Use</span> <span class="o">-</span><span class="n">Wno</span><span class="o">-</span><span class="n">deprecated</span><span class="o">-</span><span class="n">gpu</span><span class="o">-</span><span class="n">targets</span> <span class="n">to</span> <span class="n">suppress</span> <span class="n">warning</span><span class="p">).</span>
<span class="n">mkdir</span> <span class="o">-</span><span class="n">p</span> <span class="p">..</span><span class="o">/</span><span class="p">..</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">x86_64</span><span class="o">/</span><span class="n">linux</span><span class="o">/</span><span class="n">release</span>
<span class="n">cp</span> <span class="n">deviceQuery</span> <span class="p">..</span><span class="o">/</span><span class="p">..</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">x86_64</span><span class="o">/</span><span class="n">linux</span><span class="o">/</span><span class="n">release</span>
<span class="p">[</span><span class="n">root</span><span class="err">@</span><span class="n">rn</span><span class="o">-</span><span class="n">gpu</span><span class="o">-</span><span class="n">p100</span> <span class="n">deviceQuery</span><span class="p">]</span><span class="err">#</span> <span class="p">.</span><span class="o">/</span><span class="n">deviceQuery</span>
<span class="p">.</span><span class="o">/</span><span class="n">deviceQuery</span> <span class="n">Starting</span><span class="p">...</span>
<span class="n">CUDA</span> <span class="n">Device</span> <span class="n">Query</span> <span class="p">(</span><span class="n">Runtime</span> <span class="n">API</span><span class="p">)</span> <span class="n">version</span> <span class="p">(</span><span class="n">CUDART</span> <span class="k">static</span> <span class="n">linking</span><span class="p">)</span>
<span class="n">Detected</span> <span class="mi">2</span> <span class="n">CUDA</span> <span class="n">Capable</span> <span class="n">device</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
<span class="n">Device</span> <span class="mi">0</span><span class="o">:</span> <span class="s">"NVIDIA GeForce RTX 2080 Ti"</span>
<span class="n">CUDA</span> <span class="n">Driver</span> <span class="n">Version</span> <span class="o">/</span> <span class="n">Runtime</span> <span class="n">Version</span> <span class="mi">11</span><span class="p">.</span><span class="mi">5</span> <span class="o">/</span> <span class="mi">11</span><span class="p">.</span><span class="mi">5</span>
<span class="n">CUDA</span> <span class="n">Capability</span> <span class="n">Major</span><span class="o">/</span><span class="n">Minor</span> <span class="n">version</span> <span class="n">number</span><span class="o">:</span> <span class="mi">7</span><span class="p">.</span><span class="mi">5</span>
<span class="n">Total</span> <span class="n">amount</span> <span class="n">of</span> <span class="n">global</span> <span class="n">memory</span><span class="o">:</span> <span class="mi">11019</span> <span class="n">MBytes</span> <span class="p">(</span><span class="mi">11554717696</span> <span class="n">bytes</span><span class="p">)</span>
<span class="p">(</span><span class="mo">06</span><span class="mi">8</span><span class="p">)</span> <span class="n">Multiprocessors</span><span class="p">,</span> <span class="p">(</span><span class="mo">064</span><span class="p">)</span> <span class="n">CUDA</span> <span class="n">Cores</span><span class="o">/</span><span class="n">MP</span><span class="o">:</span> <span class="mi">4352</span> <span class="n">CUDA</span> <span class="n">Cores</span>
<span class="n">GPU</span> <span class="n">Max</span> <span class="n">Clock</span> <span class="n">rate</span><span class="o">:</span> <span class="mi">1545</span> <span class="n">MHz</span> <span class="p">(</span><span class="mi">1</span><span class="p">.</span><span class="mi">54</span> <span class="n">GHz</span><span class="p">)</span>
<span class="n">Memory</span> <span class="n">Clock</span> <span class="n">rate</span><span class="o">:</span> <span class="mi">7000</span> <span class="n">Mhz</span>
<span class="n">Memory</span> <span class="n">Bus</span> <span class="n">Width</span><span class="o">:</span> <span class="mi">352</span><span class="o">-</span><span class="n">bit</span>
<span class="n">L2</span> <span class="n">Cache</span> <span class="n">Size</span><span class="o">:</span> <span class="mi">5767168</span> <span class="n">bytes</span>
<span class="n">Maximum</span> <span class="n">Texture</span> <span class="n">Dimension</span> <span class="n">Size</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">)</span> <span class="mi">1</span><span class="n">D</span><span class="o">=</span><span class="p">(</span><span class="mi">131072</span><span class="p">),</span> <span class="mi">2</span><span class="n">D</span><span class="o">=</span><span class="p">(</span><span class="mi">131072</span><span class="p">,</span> <span class="mi">65536</span><span class="p">),</span> <span class="mi">3</span><span class="n">D</span><span class="o">=</span><span class="p">(</span><span class="mi">16384</span><span class="p">,</span> <span class="mi">16384</span><span class="p">,</span> <span class="mi">16384</span><span class="p">)</span>
<span class="n">Maximum</span> <span class="n">Layered</span> <span class="mi">1</span><span class="n">D</span> <span class="n">Texture</span> <span class="n">Size</span><span class="p">,</span> <span class="p">(</span><span class="n">num</span><span class="p">)</span> <span class="n">layers</span> <span class="mi">1</span><span class="n">D</span><span class="o">=</span><span class="p">(</span><span class="mi">32768</span><span class="p">),</span> <span class="mi">2048</span> <span class="n">layers</span>
<span class="n">Maximum</span> <span class="n">Layered</span> <span class="mi">2</span><span class="n">D</span> <span class="n">Texture</span> <span class="n">Size</span><span class="p">,</span> <span class="p">(</span><span class="n">num</span><span class="p">)</span> <span class="n">layers</span> <span class="mi">2</span><span class="n">D</span><span class="o">=</span><span class="p">(</span><span class="mi">32768</span><span class="p">,</span> <span class="mi">32768</span><span class="p">),</span> <span class="mi">2048</span> <span class="n">layers</span>
<span class="n">Total</span> <span class="n">amount</span> <span class="n">of</span> <span class="n">constant</span> <span class="n">memory</span><span class="o">:</span> <span class="mi">65536</span> <span class="n">bytes</span>
<span class="n">Total</span> <span class="n">amount</span> <span class="n">of</span> <span class="n">shared</span> <span class="n">memory</span> <span class="n">per</span> <span class="n">block</span><span class="o">:</span> <span class="mi">49152</span> <span class="n">bytes</span>
<span class="n">Total</span> <span class="n">shared</span> <span class="n">memory</span> <span class="n">per</span> <span class="n">multiprocessor</span><span class="o">:</span> <span class="mi">65536</span> <span class="n">bytes</span>
<span class="n">Total</span> <span class="n">number</span> <span class="n">of</span> <span class="n">registers</span> <span class="n">available</span> <span class="n">per</span> <span class="n">block</span><span class="o">:</span> <span class="mi">65536</span>
<span class="n">Warp</span> <span class="n">size</span><span class="o">:</span> <span class="mi">32</span>
<span class="n">Maximum</span> <span class="n">number</span> <span class="n">of</span> <span class="n">threads</span> <span class="n">per</span> <span class="n">multiprocessor</span><span class="o">:</span> <span class="mi">1024</span>
<span class="n">Maximum</span> <span class="n">number</span> <span class="n">of</span> <span class="n">threads</span> <span class="n">per</span> <span class="n">block</span><span class="o">:</span> <span class="mi">1024</span>
<span class="n">Max</span> <span class="n">dimension</span> <span class="n">size</span> <span class="n">of</span> <span class="n">a</span> <span class="kr">thread</span> <span class="n">block</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">)</span><span class="o">:</span> <span class="p">(</span><span class="mi">1024</span><span class="p">,</span> <span class="mi">1024</span><span class="p">,</span> <span class="mi">64</span><span class="p">)</span>
<span class="n">Max</span> <span class="n">dimension</span> <span class="n">size</span> <span class="n">of</span> <span class="n">a</span> <span class="n">grid</span> <span class="n">size</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">)</span><span class="o">:</span> <span class="p">(</span><span class="mi">2147483647</span><span class="p">,</span> <span class="mi">65535</span><span class="p">,</span> <span class="mi">65535</span><span class="p">)</span>
<span class="n">Maximum</span> <span class="n">memory</span> <span class="n">pitch</span><span class="o">:</span> <span class="mi">2147483647</span> <span class="n">bytes</span>
<span class="n">Texture</span> <span class="n">alignment</span><span class="o">:</span> <span class="mi">512</span> <span class="n">bytes</span>
<span class="n">Concurrent</span> <span class="n">copy</span> <span class="n">and</span> <span class="n">kernel</span> <span class="n">execution</span><span class="o">:</span> <span class="n">Yes</span> <span class="n">with</span> <span class="mi">3</span> <span class="n">copy</span> <span class="n">engine</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
<span class="n">Run</span> <span class="n">time</span> <span class="n">limit</span> <span class="n">on</span> <span class="n">kernels</span><span class="o">:</span> <span class="n">No</span>
<span class="n">Integrated</span> <span class="n">GPU</span> <span class="n">sharing</span> <span class="n">Host</span> <span class="n">Memory</span><span class="o">:</span> <span class="n">No</span>
<span class="n">Support</span> <span class="n">host</span> <span class="n">page</span><span class="o">-</span><span class="n">locked</span> <span class="n">memory</span> <span class="n">mapping</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Alignment</span> <span class="n">requirement</span> <span class="k">for</span> <span class="n">Surfaces</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Device</span> <span class="n">has</span> <span class="n">ECC</span> <span class="n">support</span><span class="o">:</span> <span class="n">Disabled</span>
<span class="n">Device</span> <span class="n">supports</span> <span class="n">Unified</span> <span class="n">Addressing</span> <span class="p">(</span><span class="n">UVA</span><span class="p">)</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Device</span> <span class="n">supports</span> <span class="n">Managed</span> <span class="n">Memory</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Device</span> <span class="n">supports</span> <span class="n">Compute</span> <span class="n">Preemption</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Supports</span> <span class="n">Cooperative</span> <span class="n">Kernel</span> <span class="n">Launch</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Supports</span> <span class="n">MultiDevice</span> <span class="n">Co</span><span class="o">-</span><span class="n">op</span> <span class="n">Kernel</span> <span class="n">Launch</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Device</span> <span class="n">PCI</span> <span class="n">Domain</span> <span class="n">ID</span> <span class="o">/</span> <span class="n">Bus</span> <span class="n">ID</span> <span class="o">/</span> <span class="n">location</span> <span class="n">ID</span><span class="o">:</span> <span class="mi">0</span> <span class="o">/</span> <span class="mi">2</span> <span class="o">/</span> <span class="mi">0</span>
<span class="n">Compute</span> <span class="n">Mode</span><span class="o">:</span>
<span class="o"><</span> <span class="n">Default</span> <span class="p">(</span><span class="n">multiple</span> <span class="n">host</span> <span class="n">threads</span> <span class="n">can</span> <span class="n">use</span> <span class="o">::</span><span class="n">cudaSetDevice</span><span class="p">()</span> <span class="n">with</span> <span class="n">device</span> <span class="n">simultaneously</span><span class="p">)</span> <span class="o">></span>
<span class="n">Device</span> <span class="mi">1</span><span class="o">:</span> <span class="s">"Tesla P100-PCIE-12GB"</span>
<span class="n">CUDA</span> <span class="n">Driver</span> <span class="n">Version</span> <span class="o">/</span> <span class="n">Runtime</span> <span class="n">Version</span> <span class="mi">11</span><span class="p">.</span><span class="mi">5</span> <span class="o">/</span> <span class="mi">11</span><span class="p">.</span><span class="mi">5</span>
<span class="n">CUDA</span> <span class="n">Capability</span> <span class="n">Major</span><span class="o">/</span><span class="n">Minor</span> <span class="n">version</span> <span class="n">number</span><span class="o">:</span> <span class="mi">6</span><span class="p">.</span><span class="mi">0</span>
<span class="n">Total</span> <span class="n">amount</span> <span class="n">of</span> <span class="n">global</span> <span class="n">memory</span><span class="o">:</span> <span class="mi">12198</span> <span class="n">MBytes</span> <span class="p">(</span><span class="mi">12790923264</span> <span class="n">bytes</span><span class="p">)</span>
<span class="p">(</span><span class="mo">056</span><span class="p">)</span> <span class="n">Multiprocessors</span><span class="p">,</span> <span class="p">(</span><span class="mo">064</span><span class="p">)</span> <span class="n">CUDA</span> <span class="n">Cores</span><span class="o">/</span><span class="n">MP</span><span class="o">:</span> <span class="mi">3584</span> <span class="n">CUDA</span> <span class="n">Cores</span>
<span class="n">GPU</span> <span class="n">Max</span> <span class="n">Clock</span> <span class="n">rate</span><span class="o">:</span> <span class="mi">1329</span> <span class="n">MHz</span> <span class="p">(</span><span class="mi">1</span><span class="p">.</span><span class="mi">33</span> <span class="n">GHz</span><span class="p">)</span>
<span class="n">Memory</span> <span class="n">Clock</span> <span class="n">rate</span><span class="o">:</span> <span class="mi">715</span> <span class="n">Mhz</span>
<span class="n">Memory</span> <span class="n">Bus</span> <span class="n">Width</span><span class="o">:</span> <span class="mi">3072</span><span class="o">-</span><span class="n">bit</span>
<span class="n">L2</span> <span class="n">Cache</span> <span class="n">Size</span><span class="o">:</span> <span class="mi">3145728</span> <span class="n">bytes</span>
<span class="n">Maximum</span> <span class="n">Texture</span> <span class="n">Dimension</span> <span class="n">Size</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">)</span> <span class="mi">1</span><span class="n">D</span><span class="o">=</span><span class="p">(</span><span class="mi">131072</span><span class="p">),</span> <span class="mi">2</span><span class="n">D</span><span class="o">=</span><span class="p">(</span><span class="mi">131072</span><span class="p">,</span> <span class="mi">65536</span><span class="p">),</span> <span class="mi">3</span><span class="n">D</span><span class="o">=</span><span class="p">(</span><span class="mi">16384</span><span class="p">,</span> <span class="mi">16384</span><span class="p">,</span> <span class="mi">16384</span><span class="p">)</span>
<span class="n">Maximum</span> <span class="n">Layered</span> <span class="mi">1</span><span class="n">D</span> <span class="n">Texture</span> <span class="n">Size</span><span class="p">,</span> <span class="p">(</span><span class="n">num</span><span class="p">)</span> <span class="n">layers</span> <span class="mi">1</span><span class="n">D</span><span class="o">=</span><span class="p">(</span><span class="mi">32768</span><span class="p">),</span> <span class="mi">2048</span> <span class="n">layers</span>
<span class="n">Maximum</span> <span class="n">Layered</span> <span class="mi">2</span><span class="n">D</span> <span class="n">Texture</span> <span class="n">Size</span><span class="p">,</span> <span class="p">(</span><span class="n">num</span><span class="p">)</span> <span class="n">layers</span> <span class="mi">2</span><span class="n">D</span><span class="o">=</span><span class="p">(</span><span class="mi">32768</span><span class="p">,</span> <span class="mi">32768</span><span class="p">),</span> <span class="mi">2048</span> <span class="n">layers</span>
<span class="n">Total</span> <span class="n">amount</span> <span class="n">of</span> <span class="n">constant</span> <span class="n">memory</span><span class="o">:</span> <span class="mi">65536</span> <span class="n">bytes</span>
<span class="n">Total</span> <span class="n">amount</span> <span class="n">of</span> <span class="n">shared</span> <span class="n">memory</span> <span class="n">per</span> <span class="n">block</span><span class="o">:</span> <span class="mi">49152</span> <span class="n">bytes</span>
<span class="n">Total</span> <span class="n">shared</span> <span class="n">memory</span> <span class="n">per</span> <span class="n">multiprocessor</span><span class="o">:</span> <span class="mi">65536</span> <span class="n">bytes</span>
<span class="n">Total</span> <span class="n">number</span> <span class="n">of</span> <span class="n">registers</span> <span class="n">available</span> <span class="n">per</span> <span class="n">block</span><span class="o">:</span> <span class="mi">65536</span>
<span class="n">Warp</span> <span class="n">size</span><span class="o">:</span> <span class="mi">32</span>
<span class="n">Maximum</span> <span class="n">number</span> <span class="n">of</span> <span class="n">threads</span> <span class="n">per</span> <span class="n">multiprocessor</span><span class="o">:</span> <span class="mi">2048</span>
<span class="n">Maximum</span> <span class="n">number</span> <span class="n">of</span> <span class="n">threads</span> <span class="n">per</span> <span class="n">block</span><span class="o">:</span> <span class="mi">1024</span>
<span class="n">Max</span> <span class="n">dimension</span> <span class="n">size</span> <span class="n">of</span> <span class="n">a</span> <span class="kr">thread</span> <span class="n">block</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">)</span><span class="o">:</span> <span class="p">(</span><span class="mi">1024</span><span class="p">,</span> <span class="mi">1024</span><span class="p">,</span> <span class="mi">64</span><span class="p">)</span>
<span class="n">Max</span> <span class="n">dimension</span> <span class="n">size</span> <span class="n">of</span> <span class="n">a</span> <span class="n">grid</span> <span class="n">size</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">z</span><span class="p">)</span><span class="o">:</span> <span class="p">(</span><span class="mi">2147483647</span><span class="p">,</span> <span class="mi">65535</span><span class="p">,</span> <span class="mi">65535</span><span class="p">)</span>
<span class="n">Maximum</span> <span class="n">memory</span> <span class="n">pitch</span><span class="o">:</span> <span class="mi">2147483647</span> <span class="n">bytes</span>
<span class="n">Texture</span> <span class="n">alignment</span><span class="o">:</span> <span class="mi">512</span> <span class="n">bytes</span>
<span class="n">Concurrent</span> <span class="n">copy</span> <span class="n">and</span> <span class="n">kernel</span> <span class="n">execution</span><span class="o">:</span> <span class="n">Yes</span> <span class="n">with</span> <span class="mi">2</span> <span class="n">copy</span> <span class="n">engine</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
<span class="n">Run</span> <span class="n">time</span> <span class="n">limit</span> <span class="n">on</span> <span class="n">kernels</span><span class="o">:</span> <span class="n">No</span>
<span class="n">Integrated</span> <span class="n">GPU</span> <span class="n">sharing</span> <span class="n">Host</span> <span class="n">Memory</span><span class="o">:</span> <span class="n">No</span>
<span class="n">Support</span> <span class="n">host</span> <span class="n">page</span><span class="o">-</span><span class="n">locked</span> <span class="n">memory</span> <span class="n">mapping</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Alignment</span> <span class="n">requirement</span> <span class="k">for</span> <span class="n">Surfaces</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Device</span> <span class="n">has</span> <span class="n">ECC</span> <span class="n">support</span><span class="o">:</span> <span class="n">Enabled</span>
<span class="n">Device</span> <span class="n">supports</span> <span class="n">Unified</span> <span class="n">Addressing</span> <span class="p">(</span><span class="n">UVA</span><span class="p">)</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Device</span> <span class="n">supports</span> <span class="n">Managed</span> <span class="n">Memory</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Device</span> <span class="n">supports</span> <span class="n">Compute</span> <span class="n">Preemption</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Supports</span> <span class="n">Cooperative</span> <span class="n">Kernel</span> <span class="n">Launch</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Supports</span> <span class="n">MultiDevice</span> <span class="n">Co</span><span class="o">-</span><span class="n">op</span> <span class="n">Kernel</span> <span class="n">Launch</span><span class="o">:</span> <span class="n">Yes</span>
<span class="n">Device</span> <span class="n">PCI</span> <span class="n">Domain</span> <span class="n">ID</span> <span class="o">/</span> <span class="n">Bus</span> <span class="n">ID</span> <span class="o">/</span> <span class="n">location</span> <span class="n">ID</span><span class="o">:</span> <span class="mi">0</span> <span class="o">/</span> <span class="mi">130</span> <span class="o">/</span> <span class="mi">0</span>
<span class="n">Compute</span> <span class="n">Mode</span><span class="o">:</span>
<span class="o"><</span> <span class="n">Default</span> <span class="p">(</span><span class="n">multiple</span> <span class="n">host</span> <span class="n">threads</span> <span class="n">can</span> <span class="n">use</span> <span class="o">::</span><span class="n">cudaSetDevice</span><span class="p">()</span> <span class="n">with</span> <span class="n">device</span> <span class="n">simultaneously</span><span class="p">)</span> <span class="o">></span>
<span class="o">></span> <span class="n">Peer</span> <span class="n">access</span> <span class="n">from</span> <span class="n">NVIDIA</span> <span class="n">GeForce</span> <span class="n">RTX</span> <span class="mi">2080</span> <span class="n">Ti</span> <span class="p">(</span><span class="n">GPU0</span><span class="p">)</span> <span class="o">-></span> <span class="n">Tesla</span> <span class="n">P100</span><span class="o">-</span><span class="n">PCIE</span><span class="o">-</span><span class="mi">12</span><span class="n">GB</span> <span class="p">(</span><span class="n">GPU1</span><span class="p">)</span> <span class="o">:</span> <span class="n">No</span>
<span class="o">></span> <span class="n">Peer</span> <span class="n">access</span> <span class="n">from</span> <span class="n">Tesla</span> <span class="n">P100</span><span class="o">-</span><span class="n">PCIE</span><span class="o">-</span><span class="mi">12</span><span class="n">GB</span> <span class="p">(</span><span class="n">GPU1</span><span class="p">)</span> <span class="o">-></span> <span class="n">NVIDIA</span> <span class="n">GeForce</span> <span class="n">RTX</span> <span class="mi">2080</span> <span class="n">Ti</span> <span class="p">(</span><span class="n">GPU0</span><span class="p">)</span> <span class="o">:</span> <span class="n">No</span>
<span class="n">deviceQuery</span><span class="p">,</span> <span class="n">CUDA</span> <span class="n">Driver</span> <span class="o">=</span> <span class="n">CUDART</span><span class="p">,</span> <span class="n">CUDA</span> <span class="n">Driver</span> <span class="n">Version</span> <span class="o">=</span> <span class="mi">11</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span> <span class="n">CUDA</span> <span class="n">Runtime</span> <span class="n">Version</span> <span class="o">=</span> <span class="mi">11</span><span class="p">.</span><span class="mi">5</span><span class="p">,</span> <span class="n">NumDevs</span> <span class="o">=</span> <span class="mi">2</span>
<span class="n">Result</span> <span class="o">=</span> <span class="n">PASS</span>
</code></pre></div></div>
<h3 id="running-nvidia-smi">running nvidia-smi</h3>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">[</span><span class="n">root</span><span class="err">@</span><span class="n">rn</span><span class="o">-</span><span class="n">gpu</span><span class="o">-</span><span class="n">p100</span> <span class="n">deviceQuery</span><span class="p">]</span><span class="err">#</span> <span class="n">nvidia</span><span class="o">-</span><span class="n">smi</span>
<span class="n">Mon</span> <span class="n">Nov</span> <span class="mi">14</span> <span class="mi">11</span><span class="o">:</span><span class="mi">14</span><span class="o">:</span><span class="mi">38</span> <span class="mi">2022</span>
<span class="o">+-----------------------------------------------------------------------------+</span>
<span class="o">|</span> <span class="n">NVIDIA</span><span class="o">-</span><span class="n">SMI</span> <span class="mi">495</span><span class="p">.</span><span class="mi">29</span><span class="p">.</span><span class="mo">05</span> <span class="n">Driver</span> <span class="n">Version</span><span class="o">:</span> <span class="mi">495</span><span class="p">.</span><span class="mi">29</span><span class="p">.</span><span class="mo">05</span> <span class="n">CUDA</span> <span class="n">Version</span><span class="o">:</span> <span class="mi">11</span><span class="p">.</span><span class="mi">5</span> <span class="o">|</span>
<span class="o">|-------------------------------+----------------------+----------------------+</span>
<span class="o">|</span> <span class="n">GPU</span> <span class="n">Name</span> <span class="n">Persistence</span><span class="o">-</span><span class="n">M</span><span class="o">|</span> <span class="n">Bus</span><span class="o">-</span><span class="n">Id</span> <span class="n">Disp</span><span class="p">.</span><span class="n">A</span> <span class="o">|</span> <span class="n">Volatile</span> <span class="n">Uncorr</span><span class="p">.</span> <span class="n">ECC</span> <span class="o">|</span>
<span class="o">|</span> <span class="n">Fan</span> <span class="n">Temp</span> <span class="n">Perf</span> <span class="n">Pwr</span><span class="o">:</span><span class="n">Usage</span><span class="o">/</span><span class="n">Cap</span><span class="o">|</span> <span class="n">Memory</span><span class="o">-</span><span class="n">Usage</span> <span class="o">|</span> <span class="n">GPU</span><span class="o">-</span><span class="n">Util</span> <span class="n">Compute</span> <span class="n">M</span><span class="p">.</span> <span class="o">|</span>
<span class="o">|</span> <span class="o">|</span> <span class="o">|</span> <span class="n">MIG</span> <span class="n">M</span><span class="p">.</span> <span class="o">|</span>
<span class="o">|===============================+======================+======================|</span>
<span class="o">|</span> <span class="mi">0</span> <span class="n">NVIDIA</span> <span class="n">GeForce</span> <span class="p">...</span> <span class="n">Off</span> <span class="o">|</span> <span class="mo">00000000</span><span class="o">:</span><span class="mo">02</span><span class="o">:</span><span class="mo">00</span><span class="p">.</span><span class="mi">0</span> <span class="n">Off</span> <span class="o">|</span> <span class="n">N</span><span class="o">/</span><span class="n">A</span> <span class="o">|</span>
<span class="o">|</span> <span class="mi">27</span><span class="o">%</span> <span class="mi">48</span><span class="n">C</span> <span class="n">P0</span> <span class="mi">54</span><span class="n">W</span> <span class="o">/</span> <span class="mi">250</span><span class="n">W</span> <span class="o">|</span> <span class="mi">0</span><span class="n">MiB</span> <span class="o">/</span> <span class="mi">11019</span><span class="n">MiB</span> <span class="o">|</span> <span class="mi">0</span><span class="o">%</span> <span class="n">Default</span> <span class="o">|</span>
<span class="o">|</span> <span class="o">|</span> <span class="o">|</span> <span class="n">N</span><span class="o">/</span><span class="n">A</span> <span class="o">|</span>
<span class="o">+-------------------------------+----------------------+----------------------+</span>
<span class="o">|</span> <span class="mi">1</span> <span class="n">Tesla</span> <span class="n">P100</span><span class="o">-</span><span class="n">PCIE</span><span class="p">...</span> <span class="n">Off</span> <span class="o">|</span> <span class="mo">00000000</span><span class="o">:</span><span class="mi">82</span><span class="o">:</span><span class="mo">00</span><span class="p">.</span><span class="mi">0</span> <span class="n">Off</span> <span class="o">|</span> <span class="mi">0</span> <span class="o">|</span>
<span class="o">|</span> <span class="n">N</span><span class="o">/</span><span class="n">A</span> <span class="mi">32</span><span class="n">C</span> <span class="n">P0</span> <span class="mi">25</span><span class="n">W</span> <span class="o">/</span> <span class="mi">250</span><span class="n">W</span> <span class="o">|</span> <span class="mi">0</span><span class="n">MiB</span> <span class="o">/</span> <span class="mi">12198</span><span class="n">MiB</span> <span class="o">|</span> <span class="mi">2</span><span class="o">%</span> <span class="n">Default</span> <span class="o">|</span>
<span class="o">|</span> <span class="o">|</span> <span class="o">|</span> <span class="n">N</span><span class="o">/</span><span class="n">A</span> <span class="o">|</span>
<span class="o">+-------------------------------+----------------------+----------------------+</span>
<span class="o">+-----------------------------------------------------------------------------+</span>
<span class="o">|</span> <span class="n">Processes</span><span class="o">:</span> <span class="o">|</span>
<span class="o">|</span> <span class="n">GPU</span> <span class="n">GI</span> <span class="n">CI</span> <span class="n">PID</span> <span class="n">Type</span> <span class="n">Process</span> <span class="n">name</span> <span class="n">GPU</span> <span class="n">Memory</span> <span class="o">|</span>
<span class="o">|</span> <span class="n">ID</span> <span class="n">ID</span> <span class="n">Usage</span> <span class="o">|</span>
<span class="o">|=============================================================================|</span>
<span class="o">|</span> <span class="n">No</span> <span class="n">running</span> <span class="n">processes</span> <span class="n">found</span> <span class="o">|</span>
<span class="o">+-----------------------------------------------------------------------------+</span>
</code></pre></div></div>
<h3 id="nvidia-driver-gcc-maping">Nvidia driver-GCC-Maping</h3>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">cat</span> <span class="o">/</span><span class="n">proc</span><span class="o">/</span><span class="n">driver</span><span class="o">/</span><span class="n">nvidia</span><span class="o">/</span><span class="n">version</span>
<span class="n">NVRM</span> <span class="n">version</span><span class="o">:</span> <span class="n">NVIDIA</span> <span class="n">UNIX</span> <span class="n">x86_64</span> <span class="n">Kernel</span> <span class="n">Module</span> <span class="mi">495</span><span class="p">.</span><span class="mi">29</span><span class="p">.</span><span class="mo">05</span> <span class="n">Thu</span> <span class="n">Sep</span> <span class="mi">30</span> <span class="mi">16</span><span class="o">:</span><span class="mo">00</span><span class="o">:</span><span class="mi">29</span> <span class="n">UTC</span> <span class="mi">2021</span>
<span class="n">GCC</span> <span class="n">version</span><span class="o">:</span> <span class="n">gcc</span> <span class="n">version</span> <span class="mi">9</span><span class="p">.</span><span class="mi">3</span><span class="p">.</span><span class="mi">1</span> <span class="mi">20200408</span> <span class="p">(</span><span class="n">Red</span> <span class="n">Hat</span> <span class="mi">9</span><span class="p">.</span><span class="mi">3</span><span class="p">.</span><span class="mi">1</span><span class="o">-</span><span class="mi">2</span><span class="p">)</span> <span class="p">(</span><span class="n">GCC</span><span class="p">)</span>
</code></pre></div></div>
How to get verified badge for your commits
2022-09-09T19:24:20+05:30
https://mrprajesh.co.in/verified-badge-for-your-commits
<h3 id="how-to-get-verified-badge-for-your-commits">How to get verified badge for your commits</h3>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">#sign all commits by default
</span><span class="n">git</span> <span class="n">config</span> <span class="o">--</span><span class="n">global</span> <span class="n">commit</span><span class="p">.</span><span class="n">gpgsign</span> <span class="nb">true</span>
<span class="cp"># find your gpp key
</span><span class="n">gpg</span> <span class="o">--</span><span class="n">list</span><span class="o">-</span><span class="n">secret</span><span class="o">-</span><span class="n">keys</span> <span class="o">--</span><span class="n">keyid</span><span class="o">-</span><span class="n">format</span><span class="o">=</span><span class="kt">long</span>
<span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajesh</span><span class="o">/</span><span class="p">.</span><span class="n">gnupg</span><span class="o">/</span><span class="n">pubring</span><span class="p">.</span><span class="n">kbx</span>
<span class="o">-------------------------------</span>
<span class="n">sec</span> <span class="n">rsa2048</span><span class="o">/</span><span class="n">DD95F119EA64BABE</span> <span class="mi">2011</span><span class="o">-</span><span class="mo">02</span><span class="o">-</span><span class="mi">11</span> <span class="p">[</span><span class="n">SCA</span><span class="p">]</span>
<span class="mi">79</span><span class="n">B36A390B6A4BBFA103483BDD95F119EA64BABE</span>
<span class="n">uid</span> <span class="p">[</span><span class="n">ultimate</span><span class="p">]</span> <span class="n">Rajesh</span> <span class="n">Pandian</span> <span class="n">M</span> <span class="p">(</span><span class="n">This</span> <span class="n">is</span> <span class="n">my</span> <span class="n">True</span> <span class="n">Gmail</span> <span class="n">ID</span> <span class="o">-</span> <span class="n">Rajz</span><span class="p">)</span> <span class="o"><</span><span class="n">someone</span><span class="err">@</span><span class="n">gmail</span><span class="p">.</span><span class="n">com</span><span class="o">></span>
<span class="cp">#use your key here
</span><span class="n">git</span> <span class="n">config</span> <span class="o">--</span><span class="n">global</span> <span class="n">user</span><span class="p">.</span><span class="n">signingkey</span> <span class="n">DD95F119EA64BABE</span>
<span class="cp"># make available
</span> <span class="p">[</span> <span class="o">-</span><span class="n">f</span> <span class="o">~/</span><span class="p">.</span><span class="n">bashrc</span> <span class="p">]</span> <span class="o">&&</span> <span class="n">echo</span> <span class="err">'</span><span class="n">export</span> <span class="n">GPG_TTY</span><span class="o">=</span><span class="err">$</span><span class="p">(</span><span class="n">tty</span><span class="p">)</span><span class="err">'</span> <span class="o">>></span> <span class="o">~/</span><span class="p">.</span><span class="n">bashrc</span>
</code></pre></div></div>
<p>You will see <code class="language-plaintext highlighter-rouge">verified</code> badge as <a href="https://github.com/mrprajesh/blog/commits/master">here</a>.</p>
Hello world APL language
2022-09-09T16:56:02+05:30
https://mrprajesh.co.in/hello-world-apl
<p>Hope you remember I had mentioned about APL <a href="/blog/cpp-stl-enlightment.html">before</a>.</p>
<ol>
<li>Download <a href="https://www.dyalog.com/download-zone.htm">Dyalog</a> from here with email (SERIALNUMBER will be sent to your email).</li>
<li>
<p>As mentioned in <a href="https://help.dyalog.com/latest/Content/UNIX_IUG/Dyalog%20Serial%20Number.htm">here</a></p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="cp"># install dependencies
</span> <span class="n">sudo</span> <span class="n">apt</span> <span class="n">install</span> <span class="n">libncurses5</span>
<span class="cp"># Add you serial number to this file.
</span> <span class="n">vim</span> <span class="err">$</span><span class="n">HOME</span><span class="o">/</span><span class="p">.</span><span class="n">dyalog</span><span class="o">/</span><span class="n">serial</span>
</code></pre></div> </div>
</li>
<li>Download and install RIDE <a href="https://github.com/Dyalog/ride/releases">package</a></li>
<li>
<p>Run from installed programs. Look for Dyalog APL (not Dyalog APL TTY) or run the below.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="n">env</span> <span class="n">RIDE_SPAWN</span><span class="o">=/</span><span class="n">usr</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">dyalog</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">ride</span><span class="o">-</span><span class="mi">4</span><span class="p">.</span><span class="mi">4</span>
</code></pre></div> </div>
</li>
</ol>
<h2 id="hello-world">Hello World</h2>
<ul>
<li>type tick i.e. ~ without shift. It means <a href="https://en.cppreference.com/w/cpp/algorithm/iota">iota</a>. Infact, C++ got that name from APL.</li>
</ul>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">`</span><span class="n">i</span> <span class="mi">10</span>
<span class="cp"># displays 1 to 10 both inclusive.
</span>
<span class="err">⍳</span> <span class="mi">10</span>
<span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="mi">5</span> <span class="mi">6</span> <span class="mi">7</span> <span class="mi">8</span> <span class="mi">9</span> <span class="mi">10</span>
<span class="cp"># this is reduce operation
</span> <span class="o">+/</span><span class="err">⍳</span><span class="mi">10</span>
<span class="mi">55</span>
<span class="cp"># this is a scan operation.
</span>
<span class="o">+</span><span class="err">\⍳</span> <span class="mi">10</span>
<span class="mi">1</span> <span class="mi">3</span> <span class="mi">6</span> <span class="mi">10</span> <span class="mi">15</span> <span class="mi">21</span> <span class="mi">28</span> <span class="mi">36</span> <span class="mi">45</span> <span class="mi">55</span>
</code></pre></div></div>
<h2 id="online-on-a-browser">Online on a browser</h2>
<ul>
<li><a href="https://tryapl.org/">https://tryapl.org/</a></li>
</ul>
<h2 id="gettting-started">Gettting started.</h2>
<ul>
<li><a href="https://www.dyalog.com/getting-started.htm">https://www.dyalog.com/getting-started.htm</a></li>
<li><a href="https://www.dyalog.com/uploads/documents/MasteringDyalogAPL.pdf">Mastering APL</a></li>
</ul>
<h2 id="my-vision">My Vision</h2>
<blockquote>
<p>If you can think in APL for your program, you can write better parallel codes in OMP or CUDA.</p>
</blockquote>
cloud storage
2022-08-27T15:58:36+05:30
https://mrprajesh.co.in/cloud-storage
<p>As my dropbox is getting full soon. I have to resort to some other free
cloud storage provider for saving and syncing my local files on linux.</p>
<p>I have downloaded</p>
<ol>
<li>MegaSync</li>
<li>pCloud</li>
<li>Internxt</li>
</ol>
<p>All seems working fine for now.</p>
Audible alert for battery low and high
2022-05-09T19:02:06+05:30
https://mrprajesh.co.in/alert-for-battery-low--and-high
<p>As both prolonged usage with AC power on the laptop and critically low battery degreades battery life;
I decided to write a script that give an audio alert to disconnec/connect the charger.
I have scheduled this script on <code class="language-plaintext highlighter-rouge">cron</code>. Now, both my life and battery life is better.</p>
<p><strong>alert-on-full-battery.sh</strong></p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">#!/bin/bash
## ALL STATS OF BATTERY
#~ find /sys/class/power_supply/BAT0/ -type f | xargs -tn1 cat
</span>
<span class="cp">## BATTERY LOW LEVE ALERT
</span><span class="n">LOW_LEVEL</span><span class="o">=</span><span class="mi">15</span>
<span class="cp">## DEFAULT ALERT ON 95
## USER CAN SPECIFY 1st ARG AS custom threshold level
</span>
<span class="n">THRESHOLD</span><span class="o">=</span><span class="mi">95</span>
<span class="k">if</span> <span class="p">[</span> <span class="err">$#</span> <span class="o">-</span><span class="n">ge</span> <span class="mi">1</span> <span class="p">]</span>
<span class="n">then</span>
<span class="k">if</span> <span class="p">[</span> <span class="err">$</span><span class="mi">1</span> <span class="o">-</span><span class="n">ge</span> <span class="mi">0</span> <span class="o">-</span><span class="n">a</span> <span class="err">$</span><span class="mi">1</span> <span class="o">-</span><span class="n">lt</span> <span class="mi">100</span> <span class="p">]</span> <span class="err">##</span> <span class="o">-</span><span class="n">a</span> <span class="n">means</span> <span class="n">and</span> <span class="n">condition</span>
<span class="n">then</span>
<span class="n">THRESHOLD</span><span class="o">=</span><span class="err">$</span><span class="mi">1</span>
<span class="n">fi</span>
<span class="n">fi</span>
<span class="cp"># post 4.2 keernel (see using uaname -a) recommended usage to get batter percent /sys/class/power_supply/BAT0
# ll /sys/class/power_supply/BAT*
# cat /sys/class/power_supply/BAT0/capacity #in my machine somtime it might in BAT1 !? :|
</span>
<span class="cp">## GET CURRENT BATTERY STATE
</span><span class="n">CURRENT_LEVEL</span><span class="o">=</span><span class="err">$</span><span class="p">(</span><span class="n">cat</span> <span class="o">/</span><span class="n">sys</span><span class="o">/</span><span class="n">class</span><span class="o">/</span><span class="n">power_supply</span><span class="o">/</span><span class="n">BAT0</span><span class="o">/</span><span class="n">capacity</span><span class="p">)</span>
<span class="n">printf</span> <span class="s">"$(date +"</span><span class="o">%</span><span class="n">d</span><span class="o">-%</span><span class="n">b</span><span class="o">-%</span><span class="n">Y</span> <span class="o">%</span><span class="n">T</span> <span class="p">(</span><span class="o">%</span><span class="n">Z</span><span class="p">)</span><span class="s">"), $(cat /sys/class/power_supply/BAT0/status), current battery level: $CURRENT_LEVEL, threshold: $THRESHOLD"</span>
<span class="cp">## if current battery level is more than threahhold
</span><span class="k">if</span> <span class="p">[</span> <span class="err">$</span><span class="n">CURRENT_LEVEL</span> <span class="o">-</span><span class="n">ge</span> <span class="err">$</span><span class="n">THRESHOLD</span> <span class="p">]</span>
<span class="n">then</span>
<span class="cp">#~ LOUD
</span> <span class="cp">#~ paplay /usr/share/sounds/LinuxMint/stereo/phone-incoming-call.ogg
</span>
<span class="cp">#~ MILD
</span> <span class="n">paplay</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">sounds</span><span class="o">/</span><span class="n">freedesktop</span><span class="o">/</span><span class="n">stereo</span><span class="o">/</span><span class="n">complete</span><span class="p">.</span><span class="n">oga</span>
<span class="n">echo</span> <span class="s">"save power"</span> <span class="o">|</span> <span class="n">espeak</span>
<span class="n">printf</span> <span class="s">", HIGH ALERT"</span>
<span class="n">fi</span>
<span class="k">if</span> <span class="p">[</span> <span class="err">$</span><span class="n">CURRENT_LEVEL</span> <span class="o">-</span><span class="n">lt</span> <span class="err">$</span><span class="n">LOW_LEVEL</span> <span class="p">]</span>
<span class="n">then</span>
<span class="n">paplay</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">sounds</span><span class="o">/</span><span class="n">freedesktop</span><span class="o">/</span><span class="n">stereo</span><span class="o">/</span><span class="n">complete</span><span class="p">.</span><span class="n">oga</span>
<span class="n">echo</span> <span class="s">"connect charger"</span> <span class="o">|</span> <span class="n">espeak</span>
<span class="n">printf</span> <span class="s">", LOW ALERT"</span>
<span class="n">fi</span>
<span class="n">printf</span> <span class="s">"</span><span class="se">\n</span><span class="s">"</span>
<span class="cp">## CRON: crontab -e
#~ XDG_RUNTIME_DIR=/run/user/1000
#~ */5 * * * * /home/rajz/auto-scripts/alert-on-full-battery.sh 95 >> /tmp/alert-on-full-battery.log
</span>
</code></pre></div></div>
<h3 id="schedule-on-cron">schedule on cron</h3>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">crontab</span> <span class="o">-</span><span class="n">e</span>
<span class="cp">## append the below line towards the end and save. It is set to run every 5 mins.
</span><span class="n">XDG_RUNTIME_DIR</span><span class="o">=/</span><span class="n">run</span><span class="o">/</span><span class="n">user</span><span class="o">/</span><span class="mi">1000</span>
<span class="err">*/</span><span class="mi">5</span> <span class="o">*</span> <span class="o">*</span> <span class="o">*</span> <span class="o">*</span> <span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">rajz</span><span class="o">/</span><span class="k">auto</span><span class="o">-</span><span class="n">scripts</span><span class="o">/</span><span class="n">alert</span><span class="o">-</span><span class="n">on</span><span class="o">-</span><span class="n">full</span><span class="o">-</span><span class="n">battery</span><span class="p">.</span><span class="n">sh</span> <span class="mi">95</span> <span class="o">>></span> <span class="o">/</span><span class="n">tmp</span><span class="o">/</span><span class="n">alert</span><span class="o">-</span><span class="n">on</span><span class="o">-</span><span class="n">full</span><span class="o">-</span><span class="n">battery</span><span class="p">.</span><span class="n">log</span>
</code></pre></div></div>
<p>The above self explanatory.</p>
<ul>
<li>It alerts when there is low batter.</li>
<li>It alerts when the battery is almost full. You can give a custom threshold. Default is 95.</li>
<li>It also has speaks!</li>
<li>This must help the bettery life.</li>
</ul>
cmake build is easy now.
2022-04-23T16:09:19+05:30
https://mrprajesh.co.in/cmake-build
<p>Generally in many repo using <code class="language-plaintext highlighter-rouge">cmake</code>. We do the following</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">git</span> <span class="n">clone</span> <span class="o"><</span><span class="n">repo</span><span class="o">></span>
<span class="n">cd</span> <span class="o"><</span><span class="n">repo</span><span class="o">></span>
<span class="n">mkdir</span> <span class="n">build</span>
<span class="n">cd</span> <span class="n">build</span>
<span class="n">cmake</span> <span class="p">..</span> <span class="err">#</span> <span class="n">may</span> <span class="n">be</span> <span class="n">with</span> <span class="n">more</span> <span class="n">args</span><span class="p">.</span> <span class="n">For</span> <span class="n">now</span><span class="p">,</span> <span class="n">KISS</span><span class="o">!</span>
<span class="n">make</span>
</code></pre></div></div>
<p>Now in the recent <code class="language-plaintext highlighter-rouge">cmake</code> version. We can do the last 4 steps in 2 lines.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"># starting with CMake 3.13, use a simpler form:
</span><span class="n">cmake</span> <span class="o">-</span><span class="n">S</span> <span class="p">.</span> <span class="o">-</span><span class="n">B</span> <span class="s">"build"</span> <span class="err">#</span> <span class="o">-</span><span class="n">DCMAKE_BUILD_TYPE</span><span class="o">=</span><span class="n">Release</span>
<span class="cp"># Build the library.
</span><span class="n">cmake</span> <span class="o">--</span><span class="n">build</span> <span class="s">"build"</span> <span class="err">#</span> <span class="o">--</span><span class="n">config</span> <span class="n">Release</span>
</code></pre></div></div>
How to Build moderngpu
2022-03-31T11:45:52+05:30
https://mrprajesh.co.in/build-moderngpu
<p>I have</p>
<ul>
<li>Mint/Ubuntu 18.04 running GCC 7.4, CUDA 10.0 and Driver 410.73</li>
<li>cmake-3.22.3 binary.</li>
<li>GeForce 840M with Compute Capability (CC) 5.0</li>
</ul>
<p>I could build it but not run it. Because
<a href="https://github.com/moderngpu/moderngpu/blob/master/CMakeLists.txt#L53">CUDA_ARCHITECTURES</a>
is set higher. Let’s change it to <code class="language-plaintext highlighter-rouge">50</code></p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">git</span> <span class="n">clone</span> <span class="n">https</span><span class="o">:</span><span class="c1">//github.com/moderngpu/moderngpu.git</span>
<span class="n">cd</span> <span class="n">moderngpu</span>
<span class="n">mkdir</span> <span class="n">build</span> <span class="o">&&</span> <span class="n">cd</span> <span class="n">build</span>
<span class="o">~/</span><span class="n">install</span><span class="o">/</span><span class="n">cmake</span><span class="o">-</span><span class="mi">3</span><span class="p">.</span><span class="mi">22</span><span class="p">.</span><span class="mi">3</span><span class="o">-</span><span class="n">linux</span><span class="o">-</span><span class="n">x86_64</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">cmake</span> <span class="p">..</span>
<span class="n">make</span>
<span class="p">.</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">test_segreduce</span>
</code></pre></div></div>
<p>On P100.</p>
<ul>
<li>Not working with cmake 3.23</li>
<li>Just use 3.19</li>
<li><code class="language-plaintext highlighter-rouge">scl enable devtoolset-6 bash</code></li>
<li>and it should work.</li>
</ul>
build gpu graph libraries Graphit, GSwitch and SepGraph
2022-03-23T08:57:52+05:30
https://mrprajesh.co.in/build-gpu-graph-libraries
<p>On AQUA.</p>
<h3 id="gpu-graphit-g2">Gpu Graphit G2</h3>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">module</span> <span class="n">load</span> <span class="n">cmake3</span><span class="p">.</span><span class="mi">18</span> <span class="n">gcc640</span> <span class="n">python385</span> <span class="n">cuda10</span><span class="p">.</span><span class="mi">0</span>
<span class="n">mkdir</span> <span class="n">GraphItG2</span><span class="p">;</span> <span class="n">cd</span> <span class="n">GraphItG2</span><span class="p">;</span>
<span class="n">git</span> <span class="n">clone</span> <span class="o">-</span><span class="n">b</span> <span class="n">gpu</span><span class="o">-</span><span class="n">merge</span> <span class="n">https</span><span class="o">:</span><span class="c1">//github.com/GraphIt-DSL/graphit.git .</span>
<span class="n">mkdir</span> <span class="n">build</span><span class="p">;</span> <span class="n">cd</span> <span class="n">build</span>
<span class="n">cmake</span> <span class="p">..</span>
<span class="n">make</span> <span class="o">-</span><span class="n">j</span> <span class="mi">32</span>
<span class="n">cd</span> <span class="p">..</span><span class="o">/</span><span class="n">graphit_eval</span><span class="o">/</span><span class="n">g2_cgo2021_eval</span><span class="o">/</span><span class="n">dataset</span>
<span class="n">make</span> <span class="n">small</span> <span class="err">#</span> <span class="n">or</span> <span class="n">just</span> <span class="n">make</span>
<span class="n">cd</span> <span class="p">..</span>
<span class="n">python3</span> <span class="n">gen_table7</span><span class="p">.</span><span class="n">py</span> <span class="n">small</span> <span class="err">#</span> <span class="n">without</span> <span class="n">small</span> <span class="n">it</span> <span class="n">will</span> <span class="n">run</span> <span class="n">all</span> <span class="n">dataset</span>
<span class="cp"># ON AQUA
</span>
<span class="n">python3</span> <span class="n">gen_table7</span><span class="p">.</span><span class="n">py</span> <span class="n">small</span> <span class="o"><</span> <span class="n">input</span>
<span class="cp">## input file edit accordingly on aqua
</span>
<span class="n">cat</span> <span class="n">input</span>
<span class="o">/</span><span class="n">lfs</span><span class="o">/</span><span class="n">usrhome</span><span class="o">/</span><span class="n">phd</span><span class="o">/</span><span class="n">cs16d003</span><span class="o">/</span><span class="n">install</span><span class="o">/</span><span class="n">GraphItG2</span><span class="o">/</span><span class="n">graphit_eval</span><span class="o">/</span><span class="n">g2_cgo2021_eval</span><span class="o">/</span><span class="n">table7_outputs</span>
<span class="o">/</span><span class="n">lfs</span><span class="o">/</span><span class="n">usrhome</span><span class="o">/</span><span class="n">phd</span><span class="o">/</span><span class="n">cs16d003</span><span class="o">/</span><span class="n">install</span><span class="o">/</span><span class="n">GraphItG2</span><span class="o">/</span><span class="n">graphit_eval</span><span class="o">/</span><span class="n">g2_cgo2021_eval</span><span class="o">/</span><span class="p">..</span><span class="o">/</span><span class="p">..</span><span class="o">/</span><span class="n">build</span>
<span class="o">/</span><span class="n">lfs</span><span class="o">/</span><span class="n">usrhome</span><span class="o">/</span><span class="n">phd</span><span class="o">/</span><span class="n">cs16d003</span><span class="o">/</span><span class="n">install</span><span class="o">/</span><span class="n">GraphItG2</span><span class="o">/</span><span class="n">graphit_eval</span><span class="o">/</span><span class="n">g2_cgo2021_eval</span><span class="o">/</span><span class="n">dataset</span>
<span class="o">/</span><span class="n">lfs</span><span class="o">/</span><span class="n">sware</span><span class="o">/</span><span class="n">cuda</span><span class="o">-</span><span class="mi">10</span><span class="p">.</span><span class="mi">1</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">nvcc</span>
<span class="o">/</span><span class="n">lfs</span><span class="o">/</span><span class="n">sware</span><span class="o">/</span><span class="n">gcc640</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">g</span><span class="o">++</span>
<span class="c1">//TODO make it run via qsub</span>
</code></pre></div></div>
<div style="position: relative; padding-bottom: 56.25%; height: 0;"><iframe src="https://www.loom.com/embed/8f3b9e95847c4894b8f4c69aab45773f?sid=9dfd364b-ad1a-43d5-8f24-da6448bf0a12" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen="" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"></iframe></div>
<h3 id="gswitch">GSwitch</h3>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">module</span> <span class="n">load</span> <span class="n">cmake3</span><span class="p">.</span><span class="mi">18</span>
<span class="n">module</span> <span class="n">load</span> <span class="n">gcc640</span>
<span class="n">cmake</span> <span class="p">..</span>
<span class="n">make</span> <span class="o">-</span><span class="n">j</span> <span class="mi">32</span>
<span class="n">Scanning</span> <span class="n">dependencies</span> <span class="n">of</span> <span class="n">target</span> <span class="n">gswitch</span>
<span class="p">[</span> <span class="mi">7</span><span class="o">%</span><span class="p">]</span> <span class="n">Linking</span> <span class="n">CXX</span> <span class="k">static</span> <span class="n">library</span> <span class="n">libgswitch</span><span class="p">.</span><span class="n">a</span>
<span class="p">[</span> <span class="mi">7</span><span class="o">%</span><span class="p">]</span> <span class="n">Built</span> <span class="n">target</span> <span class="n">gswitch</span>
<span class="p">[</span> <span class="mi">30</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">NVCC</span> <span class="p">(</span><span class="n">Device</span><span class="p">)</span> <span class="n">object</span> <span class="n">application</span><span class="o">/</span><span class="n">CMakeFiles</span><span class="o">/</span><span class="n">GC</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">GC_generated_gc</span><span class="p">.</span><span class="n">cu</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">38</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">NVCC</span> <span class="p">(</span><span class="n">Device</span><span class="p">)</span> <span class="n">object</span> <span class="n">application</span><span class="o">/</span><span class="n">CMakeFiles</span><span class="o">/</span><span class="n">SSSP</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">SSSP_generated_sssp</span><span class="p">.</span><span class="n">cu</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">38</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">NVCC</span> <span class="p">(</span><span class="n">Device</span><span class="p">)</span> <span class="n">object</span> <span class="n">application</span><span class="o">/</span><span class="n">CMakeFiles</span><span class="o">/</span><span class="n">PageRank</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">PageRank_generated_pagerank</span><span class="p">.</span><span class="n">cu</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">38</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">NVCC</span> <span class="p">(</span><span class="n">Device</span><span class="p">)</span> <span class="n">object</span> <span class="n">application</span><span class="o">/</span><span class="n">CMakeFiles</span><span class="o">/</span><span class="n">BC</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">BC_generated_bc</span><span class="p">.</span><span class="n">cu</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">53</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">NVCC</span> <span class="p">(</span><span class="n">Device</span><span class="p">)</span> <span class="n">object</span> <span class="n">application</span><span class="o">/</span><span class="n">CMakeFiles</span><span class="o">/</span><span class="n">CC</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">CC_generated_cc</span><span class="p">.</span><span class="n">cu</span><span class="p">.</span><span class="n">o</span>
<span class="p">[</span> <span class="mi">53</span><span class="o">%</span><span class="p">]</span> <span class="n">Building</span> <span class="n">NVCC</span> <span class="p">(</span><span class="n">Device</span><span class="p">)</span> <span class="n">object</span> <span class="n">application</span><span class="o">/</span><span class="n">CMakeFiles</span><span class="o">/</span><span class="n">BFS</span><span class="p">.</span><span class="n">dir</span><span class="o">/</span><span class="n">BFS_generated_bfs</span><span class="p">.</span><span class="n">cu</span><span class="p">.</span><span class="n">o</span>
<span class="p">..</span>
<span class="n">Scanning</span> <span class="n">dependencies</span> <span class="n">of</span> <span class="n">target</span> <span class="n">PageRank</span>
<span class="p">[</span> <span class="mi">69</span><span class="o">%</span><span class="p">]</span> <span class="n">Linking</span> <span class="n">CXX</span> <span class="n">executable</span> <span class="n">PageRank</span>
<span class="p">[</span> <span class="mi">69</span><span class="o">%</span><span class="p">]</span> <span class="n">Built</span> <span class="n">target</span> <span class="n">PageRank</span>
<span class="n">Scanning</span> <span class="n">dependencies</span> <span class="n">of</span> <span class="n">target</span> <span class="n">SSSP</span>
<span class="p">[</span> <span class="mi">76</span><span class="o">%</span><span class="p">]</span> <span class="n">Linking</span> <span class="n">CXX</span> <span class="n">executable</span> <span class="n">SSSP</span>
<span class="n">Scanning</span> <span class="n">dependencies</span> <span class="n">of</span> <span class="n">target</span> <span class="n">BFS</span>
<span class="p">[</span> <span class="mi">84</span><span class="o">%</span><span class="p">]</span> <span class="n">Linking</span> <span class="n">CXX</span> <span class="n">executable</span> <span class="n">BFS</span>
<span class="n">Scanning</span> <span class="n">dependencies</span> <span class="n">of</span> <span class="n">target</span> <span class="n">GC</span>
<span class="p">[</span> <span class="mi">92</span><span class="o">%</span><span class="p">]</span> <span class="n">Linking</span> <span class="n">CXX</span> <span class="n">executable</span> <span class="n">GC</span>
<span class="p">[</span> <span class="mi">92</span><span class="o">%</span><span class="p">]</span> <span class="n">Built</span> <span class="n">target</span> <span class="n">SSSP</span>
<span class="p">[</span> <span class="mi">92</span><span class="o">%</span><span class="p">]</span> <span class="n">Built</span> <span class="n">target</span> <span class="n">BFS</span>
<span class="p">[</span> <span class="mi">92</span><span class="o">%</span><span class="p">]</span> <span class="n">Built</span> <span class="n">target</span> <span class="n">GC</span>
<span class="n">Scanning</span> <span class="n">dependencies</span> <span class="n">of</span> <span class="n">target</span> <span class="n">BC</span>
<span class="p">[</span><span class="mi">100</span><span class="o">%</span><span class="p">]</span> <span class="n">Linking</span> <span class="n">CXX</span> <span class="n">executable</span> <span class="n">BC</span>
<span class="p">[</span><span class="mi">100</span><span class="o">%</span><span class="p">]</span> <span class="n">Built</span> <span class="n">target</span> <span class="n">BC</span>
</code></pre></div></div>
<h3 id="sep-graph">SEP-Graph</h3>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">module</span> <span class="n">load</span> <span class="n">cmake3</span><span class="p">.</span><span class="mi">18</span>
<span class="n">module</span> <span class="n">load</span> <span class="n">cuda</span><span class="o">-</span><span class="mi">9</span><span class="p">.</span><span class="mi">2</span>
</code></pre></div></div>
<p><a href="https://mrprajesh.co.in/blog/install-gcc.html">src build gcc 5.4.0</a> at install prefix <code class="language-plaintext highlighter-rouge">/lfs/usrhome/phd/cs16d003/install/gcc54/bin</code></p>
<p><code class="language-plaintext highlighter-rouge">c
cmake .. -DCUDA_TOOLKIT_ROOT_DIR=/lfs/sware/cuda-9.2 -DCMAKE_C_COMPILER=/lfs/usrhome/phd/cs16d003/install/gcc54/bin/gcc-5.4 -DCMAKE_CXX_COMPILER=/lfs/usrhome/phd/cs16d003/install/gcc54/bin/g++-5.4</code></p>
<p><a href="https://github.com/mrprajesh/sep-graph/issues/1#issuecomment-1075839359">Git Issue</a></p>
building and install gcc from source on linux
2022-03-23T02:59:27+05:30
https://mrprajesh.co.in/install-gcc
<ol>
<li>Go to <a href="https://ftp.gnu.org/gnu/gcc/">GNU site</a> download the required file.</li>
<li>Let’s see how to install gcc-5.4.0.tar.gz</li>
</ol>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="cp">## Download and extract
</span><span class="n">wget</span> <span class="n">https</span><span class="o">:</span><span class="c1">//ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.gz --no-check-certificate</span>
<span class="n">tar</span> <span class="o">-</span><span class="n">xvzf</span> <span class="n">gcc</span><span class="o">-</span><span class="mi">5</span><span class="p">.</span><span class="mi">4</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="n">tar</span><span class="p">.</span><span class="n">gz</span>
<span class="cp">## dowloads prereq
</span><span class="n">cd</span> <span class="n">gcc</span><span class="o">-</span><span class="mi">5</span><span class="p">.</span><span class="mi">4</span><span class="p">.</span><span class="mi">0</span>
<span class="p">.</span><span class="o">/</span><span class="n">contrib</span><span class="o">/</span><span class="n">download_prerequisites</span>
<span class="cp">## configure Build
</span><span class="n">cd</span> <span class="o">/</span><span class="n">tmp</span>
<span class="n">mkdir</span> <span class="n">gcc54</span><span class="o">-</span><span class="n">build</span>
<span class="n">cd</span> <span class="n">gcc54</span><span class="o">-</span><span class="n">build</span><span class="o">/</span>
<span class="cp">## change arg0 and prefix to approp locations
</span><span class="o">~/</span><span class="n">install</span><span class="o">/</span><span class="n">gcc</span><span class="o">-</span><span class="mi">5</span><span class="p">.</span><span class="mi">4</span><span class="p">.</span><span class="mi">0</span><span class="o">/</span><span class="n">configure</span> <span class="o">-</span><span class="n">v</span> <span class="o">--</span><span class="n">build</span><span class="o">=</span><span class="n">x86_64</span><span class="o">-</span><span class="n">linux</span><span class="o">-</span><span class="n">gnu</span> <span class="o">--</span><span class="n">host</span><span class="o">=</span><span class="n">x86_64</span><span class="o">-</span><span class="n">linux</span><span class="o">-</span><span class="n">gnu</span> <span class="o">--</span><span class="n">target</span><span class="o">=</span><span class="n">x86_64</span><span class="o">-</span><span class="n">linux</span><span class="o">-</span><span class="n">gnu</span> <span class="o">--</span><span class="n">prefix</span><span class="o">=/</span><span class="n">lfs</span><span class="o">/</span><span class="n">usrhome</span><span class="o">/</span><span class="n">phd</span><span class="o">/</span><span class="n">cs16d003</span><span class="o">/</span><span class="n">install</span><span class="o">/</span><span class="n">gcc54</span> <span class="o">--</span><span class="n">enable</span><span class="o">-</span><span class="n">checking</span><span class="o">=</span><span class="n">release</span> <span class="o">--</span><span class="n">enable</span><span class="o">-</span><span class="n">languages</span><span class="o">=</span><span class="n">c</span><span class="p">,</span><span class="n">c</span><span class="o">++</span><span class="p">,</span><span class="n">fortran</span> <span class="o">--</span><span class="n">disable</span><span class="o">-</span><span class="n">multilib</span> <span class="o">--</span><span class="n">program</span><span class="o">-</span><span class="n">suffix</span><span class="o">=-</span><span class="mi">5</span><span class="p">.</span><span class="mi">4</span>
<span class="cp"># note --prefix=/usr/bin/gcc
</span>
<span class="n">make</span> <span class="o">-</span><span class="n">j</span> <span class="mi">32</span> <span class="err">#</span> <span class="n">or</span> <span class="n">based</span> <span class="n">on</span> <span class="n">number</span> <span class="n">of</span> <span class="n">cpus</span>
<span class="n">make</span> <span class="n">install</span>
</code></pre></div></div>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">----------------------------------------------------------------------</span>
<span class="n">Libraries</span> <span class="n">have</span> <span class="n">been</span> <span class="n">installed</span> <span class="n">in</span><span class="o">:</span>
<span class="o">/</span><span class="n">lfs</span><span class="o">/</span><span class="n">usrhome</span><span class="o">/</span><span class="n">phd</span><span class="o">/</span><span class="n">cs16d003</span><span class="o">/</span><span class="n">install</span><span class="o">/</span><span class="n">gcc54</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="p">..</span><span class="o">/</span><span class="n">lib64</span>
<span class="n">If</span> <span class="n">you</span> <span class="n">ever</span> <span class="n">happen</span> <span class="n">to</span> <span class="n">want</span> <span class="n">to</span> <span class="n">link</span> <span class="n">against</span> <span class="n">installed</span> <span class="n">libraries</span>
<span class="n">in</span> <span class="n">a</span> <span class="n">given</span> <span class="n">directory</span><span class="p">,</span> <span class="n">LIBDIR</span><span class="p">,</span> <span class="n">you</span> <span class="n">must</span> <span class="n">either</span> <span class="n">use</span> <span class="n">libtool</span><span class="p">,</span> <span class="n">and</span>
<span class="n">specify</span> <span class="n">the</span> <span class="n">full</span> <span class="n">pathname</span> <span class="n">of</span> <span class="n">the</span> <span class="n">library</span><span class="p">,</span> <span class="n">or</span> <span class="n">use</span> <span class="n">the</span> <span class="err">`</span><span class="o">-</span><span class="n">LLIBDIR</span><span class="err">'</span>
<span class="n">flag</span> <span class="n">during</span> <span class="n">linking</span> <span class="n">and</span> <span class="k">do</span> <span class="n">at</span> <span class="n">least</span> <span class="n">one</span> <span class="n">of</span> <span class="n">the</span> <span class="n">following</span><span class="o">:</span>
<span class="o">-</span> <span class="n">add</span> <span class="n">LIBDIR</span> <span class="n">to</span> <span class="n">the</span> <span class="err">`</span><span class="n">LD_LIBRARY_PATH</span><span class="err">'</span> <span class="n">environment</span> <span class="n">variable</span>
<span class="n">during</span> <span class="n">execution</span>
<span class="o">-</span> <span class="n">add</span> <span class="n">LIBDIR</span> <span class="n">to</span> <span class="n">the</span> <span class="err">`</span><span class="n">LD_RUN_PATH</span><span class="err">'</span> <span class="n">environment</span> <span class="n">variable</span>
<span class="n">during</span> <span class="n">linking</span>
<span class="o">-</span> <span class="n">use</span> <span class="n">the</span> <span class="err">`</span><span class="o">-</span><span class="n">Wl</span><span class="p">,</span><span class="o">-</span><span class="n">rpath</span> <span class="o">-</span><span class="n">Wl</span><span class="p">,</span><span class="n">LIBDIR</span><span class="err">'</span> <span class="n">linker</span> <span class="n">flag</span>
<span class="o">-</span> <span class="n">have</span> <span class="n">your</span> <span class="n">system</span> <span class="n">administrator</span> <span class="n">add</span> <span class="n">LIBDIR</span> <span class="n">to</span> <span class="err">`</span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">ld</span><span class="p">.</span><span class="n">so</span><span class="p">.</span><span class="n">conf</span><span class="err">'</span>
<span class="n">See</span> <span class="n">any</span> <span class="n">operating</span> <span class="n">system</span> <span class="n">documentation</span> <span class="n">about</span> <span class="n">shared</span> <span class="n">libraries</span> <span class="k">for</span>
<span class="n">more</span> <span class="n">information</span><span class="p">,</span> <span class="n">such</span> <span class="n">as</span> <span class="n">the</span> <span class="n">ld</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="n">and</span> <span class="n">ld</span><span class="p">.</span><span class="n">so</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span> <span class="n">manual</span> <span class="n">pages</span><span class="p">.</span>
<span class="o">----------------------------------------------------------------------</span>
</code></pre></div></div>
<h2 id="refs">Refs</h2>
<ul>
<li><a href="https://iamsorush.com/posts/build-gcc11/">Sorush</a></li>
</ul>
Build Galois release 6.0 on ubuntu and aqua
2022-03-05T04:17:47+05:30
https://mrprajesh.co.in/build-galois-for-gpu-on-ubuntu-and-aqua
<h1 id="building-galois-for-gpu-on-aqua">Building Galois for GPU on aqua</h1>
<p>Step 1. <a href="https://hpce.iitm.ac.in/content.php?navigate=aquacluster">aqua</a>, a cluster at IITM.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"># no need default is okay gcc --version gcc (GCC) 9.2.0
</span><span class="n">export</span> <span class="n">BOOST_ROOT</span><span class="o">=/</span><span class="n">sware</span><span class="o">/</span><span class="n">boost_1_74_0</span><span class="o">/</span> <span class="err">#</span><span class="n">FIX</span><span class="o">:</span> <span class="n">Error</span> <span class="mi">1</span>
<span class="n">module</span> <span class="n">load</span> <span class="n">cmake3</span><span class="p">.</span><span class="mi">18</span>
<span class="n">git</span> <span class="n">clone</span> <span class="o">-</span><span class="n">b</span> <span class="n">release</span><span class="o">-</span><span class="mi">6</span><span class="p">.</span><span class="mi">0</span> <span class="n">git</span><span class="err">@</span><span class="n">github</span><span class="p">.</span><span class="n">com</span><span class="o">:</span><span class="n">IntelligentSoftwareSystems</span><span class="o">/</span><span class="n">Galois</span><span class="p">.</span><span class="n">git</span> <span class="err">#</span><span class="n">https</span><span class="o">:</span><span class="c1">//github.com/IntelligentSoftwareSystems/Galois</span>
<span class="n">cd</span> <span class="n">Galois</span>
<span class="n">git</span> <span class="n">submodule</span> <span class="n">init</span>
<span class="n">git</span> <span class="n">submodule</span>
<span class="n">mdkir</span> <span class="n">build</span>
</code></pre></div></div>
<p>Step 2. GOTO: <a href="#llvm">LLVM</a></p>
<p>Step 3.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"># FIX: warning and ERROR 2 (last two flags)
</span><span class="n">cmake</span> <span class="p">..</span> <span class="o">-</span><span class="n">DGALOIS_CUDA_CAPABILITY</span><span class="o">=</span><span class="s">"7.0"</span> <span class="o">-</span><span class="n">DCMAKE_CUDA_ARCHITECTURES</span><span class="o">=</span><span class="mi">70</span> <span class="o">-</span><span class="n">DLLVM_DIR</span><span class="o">=/</span><span class="n">lfs</span><span class="o">/</span><span class="n">usrhome</span><span class="o">/</span><span class="n">phd</span><span class="o">/</span><span class="n">cs16d003</span><span class="o">/</span><span class="n">install</span><span class="o">/</span><span class="n">llvm</span><span class="o">-</span><span class="mi">8</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="p">.</span><span class="n">src</span><span class="o">/</span><span class="n">build</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cmake</span><span class="o">/</span><span class="n">llvm</span>
<span class="cp"># reports errors cuda not supported over 8
</span><span class="n">module</span> <span class="n">load</span> <span class="n">gcc640</span>
<span class="cp"># do not rm -rf *
</span><span class="n">cmake</span> <span class="p">..</span> <span class="o">-</span><span class="n">DGALOIS_CUDA_CAPABILITY</span><span class="o">=</span><span class="s">"7.0"</span> <span class="o">-</span><span class="n">DCMAKE_CUDA_ARCHITECTURES</span><span class="o">=</span><span class="mi">70</span> <span class="o">-</span><span class="n">DLLVM_DIR</span><span class="o">=/</span><span class="n">lfs</span><span class="o">/</span><span class="n">usrhome</span><span class="o">/</span><span class="n">phd</span><span class="o">/</span><span class="n">cs16d003</span><span class="o">/</span><span class="n">install</span><span class="o">/</span><span class="n">llvm</span><span class="o">-</span><span class="mi">8</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="p">.</span><span class="n">src</span><span class="o">/</span><span class="n">build</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">cmake</span><span class="o">/</span><span class="n">llvm</span>
<span class="cp"># get the DIR path from prev step
</span></code></pre></div></div>
<p>Step 4. GOTO: <a href="#post-build">post build</a></p>
<h2 id="on-ubuntu-1804-or-linux-mint">On Ubuntu 18.04 or Linux Mint</h2>
<p>Step 1.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp"># if boost already preset, else add the last pkg
</span><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">libfmt</span><span class="o">-</span><span class="n">dev</span> <span class="n">llvm</span><span class="o">-</span><span class="mi">7</span><span class="o">-</span><span class="n">dev</span> <span class="err">#</span><span class="n">libboost</span><span class="o">-</span><span class="n">dev</span>
</code></pre></div></div>
<p>see below</p>
<p>Step 2.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">git</span> <span class="n">clone</span> <span class="o">-</span><span class="n">b</span> <span class="n">release</span><span class="o">-</span><span class="mi">6</span><span class="p">.</span><span class="mi">0</span> <span class="n">https</span><span class="o">:</span><span class="c1">//github.com/IntelligentSoftwareSystems/Galois</span>
<span class="n">cd</span> <span class="n">Galois</span>
<span class="n">git</span> <span class="n">submodule</span> <span class="n">init</span>
<span class="n">git</span> <span class="n">submodule</span>
<span class="n">mdkir</span> <span class="n">build</span>
<span class="n">cmake</span> <span class="p">..</span> <span class="o">-</span><span class="n">DGALOIS_CUDA_CAPABILITY</span><span class="o">=</span><span class="s">"5.0"</span> <span class="err">#</span> <span class="n">as</span> <span class="n">deviceQuery</span> <span class="n">gave</span> <span class="n">me</span> <span class="n">CC</span> <span class="mi">5</span><span class="p">.</span><span class="mi">0</span>
</code></pre></div></div>
<p>Step 3. See below: <a href="#post-build">post build</a></p>
<h2 id="post-build">post build</h2>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">make</span> <span class="n">input</span>
<span class="n">cd</span> <span class="n">lonestar</span><span class="p">;</span>
<span class="n">cd</span> <span class="n">analytics</span><span class="o">/</span><span class="n">gpu</span>
<span class="n">make</span> <span class="o">-</span><span class="n">j2</span>
<span class="n">cd</span> <span class="n">sssp</span>
<span class="p">.</span><span class="o">/</span><span class="n">sssp</span><span class="o">-</span><span class="n">gpu</span>
<span class="n">usage</span><span class="o">:</span> <span class="p">.</span><span class="o">/</span><span class="n">sssp</span><span class="o">-</span><span class="n">gpu</span> <span class="p">[</span><span class="o">-</span><span class="n">q</span><span class="p">]</span> <span class="p">[</span><span class="o">-</span><span class="n">g</span> <span class="n">gpunum</span><span class="p">]</span> <span class="p">[</span><span class="o">-</span><span class="n">o</span> <span class="n">output</span><span class="o">-</span><span class="n">file</span><span class="p">]</span> <span class="p">[</span><span class="o">-</span><span class="n">l</span><span class="p">]</span> <span class="p">[</span><span class="o">-</span><span class="n">d</span> <span class="n">delta</span><span class="p">]</span> <span class="p">[</span><span class="o">-</span><span class="n">s</span> <span class="n">startNode</span><span class="p">]</span> <span class="n">graph</span><span class="o">-</span><span class="n">file</span>
<span class="o">-</span><span class="n">l</span><span class="o">:</span> <span class="n">enable</span> <span class="kr">thread</span> <span class="n">block</span> <span class="n">load</span> <span class="n">balancer</span> <span class="p">(</span><span class="n">by</span> <span class="k">default</span> <span class="nb">false</span><span class="p">)</span>
</code></pre></div></div>
<h3 id="llvm">LLVM</h3>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">wget</span> <span class="n">https</span><span class="o">:</span><span class="c1">//github.com/llvm/llvm-project/releases/download/llvmorg-8.0.1/llvm-8.0.1.src.tar.xz</span>
<span class="n">tar</span> <span class="n">xf</span> <span class="n">llvm</span><span class="o">-</span><span class="mi">8</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="p">.</span><span class="n">src</span><span class="p">.</span><span class="n">tar</span><span class="p">.</span><span class="n">xz</span>
<span class="n">cd</span> <span class="n">llvm</span><span class="o">-</span><span class="mi">8</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="p">.</span><span class="n">src</span>
<span class="n">mkdir</span> <span class="n">build</span> <span class="o">&&</span> <span class="n">cd</span> <span class="n">build</span>
<span class="n">cmake</span> <span class="p">..</span> <span class="o">-</span><span class="n">DLLVM_ENABLE_RTTI</span><span class="o">=</span><span class="n">ON</span> <span class="err">#</span><span class="n">flag</span> <span class="n">must</span> <span class="k">for</span> <span class="n">Galois</span>
<span class="cp">#note the path of build/lib/cmake
</span></code></pre></div></div>
<h2 id="for-office-use-only-">for office use only ;)</h2>
<p>The below are NOT NEEDED only my refs! It has the errors/paths I came through.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">cmake</span> <span class="o">--</span><span class="n">build</span> <span class="p">.</span>
<span class="n">cmake</span> <span class="o">--</span><span class="n">build</span> <span class="p">.</span> <span class="o">--</span><span class="n">target</span> <span class="n">install</span>
<span class="n">cmake</span> <span class="o">-</span><span class="n">DCMAKE_INSTALL_PREFIX</span><span class="o">=~/</span><span class="n">install</span><span class="o">/</span><span class="n">llvm</span> <span class="o">-</span><span class="n">P</span> <span class="n">cmake_install</span><span class="p">.</span><span class="n">cmake</span>
<span class="o">==================</span> <span class="n">ERROR</span> <span class="mi">1</span> <span class="o">===============</span>
<span class="n">CMake</span> <span class="n">Error</span> <span class="n">at</span> <span class="o">/</span><span class="n">lfs</span><span class="o">/</span><span class="n">sware</span><span class="o">/</span><span class="n">cmake3</span><span class="p">.</span><span class="mi">18</span><span class="p">.</span><span class="mi">2</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">cmake</span><span class="o">-</span><span class="mi">3</span><span class="p">.</span><span class="mi">18</span><span class="o">/</span><span class="n">Modules</span><span class="o">/</span><span class="n">FindPackageHandleStandardArgs</span><span class="p">.</span><span class="n">cmake</span><span class="o">:</span><span class="mi">165</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span><span class="o">:</span>
<span class="n">Could</span> <span class="n">NOT</span> <span class="n">find</span> <span class="n">Boost</span> <span class="p">(</span><span class="n">missing</span><span class="o">:</span> <span class="n">Boost_INCLUDE_DIR</span> <span class="n">serialization</span> <span class="n">iostreams</span><span class="p">)</span>
<span class="p">(</span><span class="n">Required</span> <span class="n">is</span> <span class="n">at</span> <span class="n">least</span> <span class="n">version</span> <span class="s">"1.58.0"</span><span class="p">)</span>
<span class="n">Call</span> <span class="n">Stack</span> <span class="p">(</span><span class="n">most</span> <span class="n">recent</span> <span class="n">call</span> <span class="n">first</span><span class="p">)</span><span class="o">:</span>
<span class="o">/</span><span class="n">lfs</span><span class="o">/</span><span class="n">sware</span><span class="o">/</span><span class="n">cmake3</span><span class="p">.</span><span class="mi">18</span><span class="p">.</span><span class="mi">2</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">cmake</span><span class="o">-</span><span class="mi">3</span><span class="p">.</span><span class="mi">18</span><span class="o">/</span><span class="n">Modules</span><span class="o">/</span><span class="n">FindPackageHandleStandardArgs</span><span class="p">.</span><span class="n">cmake</span><span class="o">:</span><span class="mi">458</span> <span class="p">(</span><span class="n">_FPHSA_FAILURE_MESSAGE</span><span class="p">)</span>
<span class="o">/</span><span class="n">lfs</span><span class="o">/</span><span class="n">sware</span><span class="o">/</span><span class="n">cmake3</span><span class="p">.</span><span class="mi">18</span><span class="p">.</span><span class="mi">2</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">cmake</span><span class="o">-</span><span class="mi">3</span><span class="p">.</span><span class="mi">18</span><span class="o">/</span><span class="n">Modules</span><span class="o">/</span><span class="n">FindBoost</span><span class="p">.</span><span class="n">cmake</span><span class="o">:</span><span class="mi">2177</span> <span class="p">(</span><span class="n">find_package_handle_standard_args</span><span class="p">)</span>
<span class="n">CMakeLists</span><span class="p">.</span><span class="n">txt</span><span class="o">:</span><span class="mi">155</span> <span class="p">(</span><span class="n">find_package</span><span class="p">)</span>
<span class="o">==================</span> <span class="n">ERROR</span> <span class="mi">2</span> <span class="o">===============</span>
<span class="n">CMake</span> <span class="n">Error</span> <span class="n">at</span> <span class="n">CMakeLists</span><span class="p">.</span><span class="n">txt</span><span class="o">:</span><span class="mi">157</span> <span class="p">(</span><span class="n">find_package</span><span class="p">)</span><span class="o">:</span>
<span class="n">Could</span> <span class="n">not</span> <span class="n">find</span> <span class="n">a</span> <span class="n">package</span> <span class="n">configuration</span> <span class="n">file</span> <span class="n">provided</span> <span class="n">by</span> <span class="s">"LLVM"</span> <span class="n">with</span> <span class="n">any</span> <span class="n">of</span>
<span class="n">the</span> <span class="n">following</span> <span class="n">names</span><span class="o">:</span>
<span class="n">LLVMConfig</span><span class="p">.</span><span class="n">cmake</span>
<span class="n">llvm</span><span class="o">-</span><span class="n">config</span><span class="p">.</span><span class="n">cmake</span>
<span class="n">Add</span> <span class="n">the</span> <span class="n">installation</span> <span class="n">prefix</span> <span class="n">of</span> <span class="s">"LLVM"</span> <span class="n">to</span> <span class="n">CMAKE_PREFIX_PATH</span> <span class="n">or</span> <span class="n">set</span>
<span class="s">"LLVM_DIR"</span> <span class="n">to</span> <span class="n">a</span> <span class="n">directory</span> <span class="n">containing</span> <span class="n">one</span> <span class="n">of</span> <span class="n">the</span> <span class="n">above</span> <span class="n">files</span><span class="p">.</span> <span class="n">If</span> <span class="s">"LLVM"</span>
<span class="n">provides</span> <span class="n">a</span> <span class="n">separate</span> <span class="n">development</span> <span class="n">package</span> <span class="n">or</span> <span class="n">SDK</span><span class="p">,</span> <span class="n">be</span> <span class="n">sure</span> <span class="n">it</span> <span class="n">has</span> <span class="n">been</span>
<span class="n">installed</span><span class="p">.</span>
<span class="o">===========</span> <span class="n">warning</span> <span class="o">=========</span>
<span class="n">CMake</span> <span class="n">Warning</span> <span class="p">(</span><span class="n">dev</span><span class="p">)</span> <span class="n">in</span> <span class="n">lonestar</span><span class="o">/</span><span class="n">scientific</span><span class="o">/</span><span class="n">gpu</span><span class="o">/</span><span class="n">delaunayrefinement</span><span class="o">/</span><span class="n">CMakeLists</span><span class="p">.</span><span class="n">txt</span><span class="o">:</span>
<span class="n">Policy</span> <span class="n">CMP0104</span> <span class="n">is</span> <span class="n">not</span> <span class="n">set</span><span class="o">:</span> <span class="n">CMAKE_CUDA_ARCHITECTURES</span> <span class="n">now</span> <span class="n">detected</span> <span class="k">for</span> <span class="n">NVCC</span><span class="p">,</span>
<span class="n">empty</span> <span class="n">CUDA_ARCHITECTURES</span> <span class="n">not</span> <span class="n">allowed</span><span class="p">.</span> <span class="n">Run</span> <span class="s">"cmake --help-policy CMP0104"</span>
<span class="k">for</span> <span class="n">policy</span> <span class="n">details</span><span class="p">.</span> <span class="n">Use</span> <span class="n">the</span> <span class="n">cmake_policy</span> <span class="n">command</span> <span class="n">to</span> <span class="n">set</span> <span class="n">the</span> <span class="n">policy</span> <span class="n">and</span>
<span class="n">suppress</span> <span class="n">this</span> <span class="n">warning</span><span class="p">.</span>
</code></pre></div></div>
<h2 id="others">OTHERS</h2>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">sssp</span> <span class="n">rmat15</span> <span class="n">rmat15</span><span class="p">.</span><span class="n">out</span> <span class="n">sssp</span> <span class="o">-</span><span class="n">s</span> <span class="mi">0</span> <span class="o">-</span><span class="n">o</span> <span class="n">rmat15</span><span class="p">.</span><span class="n">out</span> <span class="err">$</span><span class="p">{</span><span class="n">BASEINPUT</span><span class="p">}</span><span class="o">/</span><span class="n">scalefree</span><span class="o">/</span><span class="n">rmat15</span><span class="p">.</span><span class="n">gr</span>
<span class="n">cmake</span> <span class="o">-</span><span class="n">DCMAKE_C_COMPILER</span><span class="o">=</span><span class="err">$</span><span class="p">(</span><span class="n">which</span> <span class="n">gcc</span><span class="o">-</span><span class="mi">8</span><span class="p">)</span> <span class="o">-</span><span class="n">DCMAKE_CXX_COMPILER</span><span class="o">=</span><span class="err">$</span><span class="p">(</span><span class="n">which</span> <span class="n">g</span><span class="o">++-</span><span class="mi">8</span><span class="p">)</span> \
<span class="o">-</span><span class="n">DWITH_CUDA</span><span class="o">=</span><span class="n">ON</span> <span class="p">..</span>
</code></pre></div></div>
<h2 id="references">REFERENCES</h2>
<ul>
<li><a href="https://github.com/IntelligentSoftwareSystems/Galois/blob/master/lonestar/analytics/gpu/README.md">Galois GPU Readme</a></li>
<li><a href="https://github.com/llvm/llvm-project/releases/tag/llvmorg-8.0.1">LLMV Download</a></li>
<li><a href="https://llvm.org/docs/CMake.html">LLVM Build</a></li>
<li><a href="https://github.com/espressomd/espresso/issues/3654#issue-597872007">CMake edit options</a></li>
<li><a href="https://github.com/facebookresearch/faiss/issues/1424#issuecomment-699208014">CUDA Arch</a></li>
</ul>
change default login shell to bash without root access
2022-03-03T11:05:41+05:30
https://mrprajesh.co.in/change-default-login-shell-without-root
<p>Somehow our admin did not make <code class="language-plaintext highlighter-rouge">bash</code> as a default shell during user creation.
I had to type every time <code class="language-plaintext highlighter-rouge">bash</code> after login to enable bash like below:</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">Welcome</span> <span class="n">to</span> <span class="n">Ubuntu</span> <span class="mi">20</span><span class="p">.</span><span class="mo">04</span><span class="p">.</span><span class="mi">3</span> <span class="n">LTS</span> <span class="p">(</span><span class="n">GNU</span><span class="o">/</span><span class="n">Linux</span> <span class="mi">5</span><span class="p">.</span><span class="mi">13</span><span class="p">.</span><span class="mi">0</span><span class="o">-</span><span class="mi">30</span><span class="o">-</span><span class="n">generic</span> <span class="n">x86_64</span><span class="p">)</span>
<span class="o">*</span> <span class="n">Documentation</span><span class="o">:</span> <span class="n">https</span><span class="o">:</span><span class="c1">//help.ubuntu.com</span>
<span class="o">*</span> <span class="n">Management</span><span class="o">:</span> <span class="n">https</span><span class="o">:</span><span class="c1">//landscape.canonical.com</span>
<span class="o">*</span> <span class="n">Support</span><span class="o">:</span> <span class="n">https</span><span class="o">:</span><span class="c1">//ubuntu.com/advantage</span>
<span class="err">$</span>
<span class="err">$</span>
</code></pre></div></div>
<p>It is easy to make bash as default. Run <code class="language-plaintext highlighter-rouge">chsh -s /bin/bash</code> or do below:</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">chsh</span>
<span class="n">Password</span><span class="o">:</span>
<span class="n">Changing</span> <span class="n">the</span> <span class="n">login</span> <span class="n">shell</span> <span class="k">for</span> <span class="o"><</span><span class="n">usernme</span><span class="o">></span>
<span class="n">Enter</span> <span class="n">the</span> <span class="n">new</span> <span class="n">value</span><span class="p">,</span> <span class="n">or</span> <span class="n">press</span> <span class="n">ENTER</span> <span class="k">for</span> <span class="n">the</span> <span class="k">default</span>
<span class="n">Login</span> <span class="n">Shell</span> <span class="p">[</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">sh</span><span class="p">]</span><span class="o">:</span> <span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">bash</span>
<span class="err">$</span>
</code></pre></div></div>
<p>Tada! It is done. you can exit and re-login to confirm.</p>
English++
2022-01-12T13:58:02+05:30
https://mrprajesh.co.in/english
<p>Some more English words.</p>
<ul>
<li><strong>pedant(ic)</strong>: a person who is excessively concerned with minor details and rules or with displaying academic learning.</li>
<li><strong>protagonist</strong>: lead charactor of the play/movie/novel.</li>
<li><strong>antagonist</strong>: adversary or villian.</li>
<li><strong>buck tooth</strong>: an upper tooth that projects over the lower lip.</li>
<li><strong>mediocre</strong>: of only average quality; not very good.</li>
</ul>
<h3 id="tech">Tech</h3>
<ul>
<li><strong>callsite</strong>: The line in the source where the function is invoked.</li>
<li><strong>slideware</strong>: A tool for making presentation.</li>
<li><strong>digression</strong>: a temporary deviation from the main subject in speech or writing</li>
</ul>
Good programming practices
2022-01-11T13:39:09+05:30
https://mrprajesh.co.in/good-programming-practices
<p>Okay, let’s reiterate it again.</p>
<h3 id="good-for-me-programming-practices-esp-c-cpp-or-cplusplus">Good (for me!) programming practices (esp. #c++ #cpp or #cplusplus)</h3>
<p>Every wonder why I have the same language name written in three different ways.</p>
<ul>
<li><strong>1-3</strong>: Editor setup</li>
<li><strong>4-9</strong>: C++</li>
<li><strong>14-15</strong>: Git</li>
</ul>
<ol>
<li>Have a snipets for <code class="language-plaintext highlighter-rouge">cpp</code> or <code class="language-plaintext highlighter-rouge">c</code> starting template. i.e. I type cpp [HIT TAB] to get main function.</li>
<li>Have a snippet for autocompleting <code class="language-plaintext highlighter-rouge">std::</code> . e.g <code class="language-plaintext highlighter-rouge">cout</code> or <code class="language-plaintext highlighter-rouge">vector</code> [TAB].</li>
<li>Have a two space for tab. Why? deeper nesting will look back if <code class="language-plaintext highlighter-rouge">tab</code> or <code class="language-plaintext highlighter-rouge">4 spaces</code> is used.</li>
<li>filenames: put it meaniful. I prefer <code class="language-plaintext highlighter-rouge">hypen</code> over <code class="language-plaintext highlighter-rouge">underscore</code> if <code class="language-plaintext highlighter-rouge">camelcase</code> is not allowed.</li>
<li>variable and functionNames: Begin with a lower-case and camel-case if more words. functionName will have a verb in it.</li>
<li>ClassName: Singular and begin with a upper-case.</li>
<li>CONSTANTS: Use all upper-case letters. so as enums</li>
<li>Use a good option (say <code class="language-plaintext highlighter-rouge">-d</code>) to print debug info than meare print statements which require (un)commenting every time.</li>
<li>If the program, is going to be used less (2 days or lesser) and needs quick run, you may use <code class="language-plaintext highlighter-rouge">using namespace std;</code> and <code class="language-plaintext highlighter-rouge">#include <bits/stdc++.h></code></li>
<li>If the program, is going to be a library or some large project might use it in future, then ignore the above suggestion.</li>
<li>Make sure every chunck (block or few lines) of the code you write is compile-able. DO NOT write and fix bug.</li>
<li>Comment the non-obvious items. Possible exceptions that you missed and change log.</li>
<li>Add compilation (or/and execution) commands at the top of the file if it is unusual</li>
<li>Use <code class="language-plaintext highlighter-rouge">git</code> or <code class="language-plaintext highlighter-rouge">GitHub</code> to track the issues, ideas and progress.</li>
<li>Use your own file version numbering if <code class="language-plaintext highlighter-rouge">git</code> is inapproriate.</li>
</ol>
<p>// TODO</p>
new year 2022
2022-01-11T12:26:45+05:30
https://mrprajesh.co.in/new-year-2022
<p>Happy new year 2022. Hopefully I will complete my PhD this year!</p>
<h3 id="new-habits">New habits</h3>
<ul>
<li>Started to read books. (Digital Minimalism, Stillness is the key,…)</li>
<li>Starting to keep away from internet for some definite time per day.</li>
</ul>
<h3 id="big-fan-of">Big fan of</h3>
<ul>
<li>TRID (and Sheena)’s <a href="https://www.youtube.com/watch?v=Jf47F1IOmbg">videos</a> and his (their) <a href="https://www.youtube.com/watch?v=_dH3NPaLzGA">funny</a>, <a href="https://www.youtube.com/watch?v=ZYDC097mPPw">wittly</a> remarks.</li>
<li><a href="https://www.powerlanguage.co.uk/wordle/">Wordle game</a>. Found what are those square blocks circulating on twitter. Solved it on Day 2.</li>
<li>The Encanto – Disney’s latest animated movie! Love most charactors and song. Great to see animators capture visuals from choreographers and dancers.</li>
</ul>
<h3 id="phd-plan">PhD Plan</h3>
<ul>
<li>Finish DIMACS</li>
<li>Finish seminar-2</li>
<li>Finish 2nd work and submit</li>
<li>Start 3rd work (bc?)</li>
</ul>
<h3 id="nsm-project">NSM Project</h3>
<ul>
<li>bcManual bug on soc-twitter and friendster?</li>
<li>bcGeneration</li>
<li>ssspGen code clean up</li>
</ul>
<h3 id="planned-to-weekend">Planned to (weekend)</h3>
<ul>
<li>Complete Stroustrup’s chapters as videos? English? Tanglish?</li>
<li>Talk about std::algorithms?</li>
<li>do code review?</li>
</ul>
Run program with inputs and write output files
2021-12-22T09:59:47+05:30
https://mrprajesh.co.in/run-program-with-inputs-files
<p>Most of the time, We wanted to run an executable on several input
instances and store the corresponding results using a shell script.
The location of input and output folders are specified in the script. However, we wanted
output file to be in a specific format. This below thing works irrespective of the
depth of the folder location.</p>
<p>Example:</p>
<p><code class="language-plaintext highlighter-rouge">some/folder/inputFileWith.ext</code> to <code class="language-plaintext highlighter-rouge">some/other/folder/outFileWithDifferent.extension</code></p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">#!/bin/bash
</span><span class="n">INPUT</span><span class="o">=</span><span class="n">some</span><span class="o">/</span><span class="n">folder</span> <span class="err">#</span><span class="n">no</span> <span class="n">need</span> <span class="n">to</span> <span class="n">suffix</span> <span class="o">/</span>
<span class="n">OUTPUT</span><span class="o">=</span><span class="n">some</span><span class="o">/</span><span class="n">other</span><span class="o">/</span><span class="n">folder</span> <span class="err">#</span><span class="n">no</span> <span class="n">need</span> <span class="n">to</span> <span class="n">suffix</span> <span class="o">/</span>
<span class="k">for</span> <span class="n">f</span> <span class="n">in</span> <span class="err">$</span><span class="n">INPUT</span><span class="o">/*</span><span class="n">vrp</span>
<span class="k">do</span>
<span class="cp">#fileName=$(echo $f | cut -f3 -d'/' | cut -f1 -d'.') # NOT GENERIC. DOES NOT WORK for NON-TWO LEVEL LOCATION
</span> <span class="cp">#fileName=$(echo $f | rev | cut -f1 -d'/' | rev | cut -f1 -d'.') # SLOWER THAN BELOW
</span> <span class="n">fileName</span><span class="o">=</span><span class="err">$</span><span class="p">(</span><span class="n">echo</span> <span class="err">$</span><span class="n">f</span> <span class="o">|</span> <span class="n">awk</span> <span class="o">-</span><span class="n">F</span><span class="p">[.</span><span class="o">/</span><span class="p">]</span> <span class="err">'</span><span class="p">{</span><span class="n">print</span> <span class="err">$</span><span class="p">(</span><span class="n">NF</span><span class="o">-</span><span class="mi">1</span><span class="p">)}</span><span class="err">'</span><span class="p">)</span>
<span class="cp">#echo $f and $fileName
</span> <span class="p">.</span><span class="o">/</span><span class="n">runExe</span> <span class="o"><</span> <span class="err">$</span><span class="n">f</span> <span class="o">></span> <span class="err">$</span><span class="n">OUTPUT</span><span class="o">/</span><span class="err">$</span><span class="n">fileName</span><span class="p">.</span><span class="n">sol</span>
<span class="n">done</span>
</code></pre></div></div>
cpp loop fusion and fission
2021-10-18T12:13:46+05:30
https://mrprajesh.co.in/cpp-20-loop-fusion
<p>After seeing the below tweet.</p>
<blockquote class="twitter-tweet" data-theme="dark"><p lang="en" dir="ltr">IMO the two most important transformations for performant code are Array of Structs to Struct of Arrays and Loop Fusion to Loop Fission. The 1st is essential for cache perf and the 2nd breaks data dependencies and often unlocks more optimizations that were not obvious before. <a href="https://t.co/hjLvzusExz">pic.twitter.com/hjLvzusExz</a></p>— Daniel Holden (@anorangeduck) <a href="https://twitter.com/anorangeduck/status/1449420737895440393?ref_src=twsrc%5Etfw">October 16,
2021</a></blockquote>
<script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<p>This is super cool! I sense a lot of value for whoever using <code class="language-plaintext highlighter-rouge">Thurst</code> algorithms.</p>
Print Vector function
2021-10-15T11:36:26+05:30
https://mrprajesh.co.in/print-vector-function
<p>Note the comments in-line. This is how my <code class="language-plaintext highlighter-rouge">print vector</code> function refined
over the years.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">//~~~START:Fri, 15-Oct-2021, 11:44:30 IST</span>
<span class="c1">//~~~Author:Rajesh Pandian M | mrprajesh.co.in</span>
<span class="cp">#include</span> <span class="cpf"><bits/stdc++.h></span><span class="cp">
</span><span class="n">using</span> <span class="n">namespace</span> <span class="n">std</span><span class="p">;</span>
<span class="c1">// I used to print this way before I know range-based for loop</span>
<span class="kt">void</span> <span class="nf">printVec1</span><span class="p">(</span><span class="n">vector</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">vec</span><span class="p">){</span>
<span class="n">vector</span><span class="o"><</span><span class="kt">int</span><span class="o">>::</span><span class="n">iterator</span> <span class="n">it</span><span class="p">;</span>
<span class="k">for</span><span class="p">(</span><span class="k">auto</span> <span class="n">it</span><span class="o">=</span><span class="n">vec</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span> <span class="n">it</span><span class="o">!=</span><span class="n">vec</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="o">++</span><span class="n">it</span><span class="p">)</span>
<span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="o"><<</span> <span class="o">*</span><span class="n">it</span> <span class="o"><<</span> <span class="sc">' '</span><span class="p">;</span>
<span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="o"><<</span> <span class="sc">'\n'</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">// After I know range based for loop</span>
<span class="kt">void</span> <span class="nf">printVec2</span><span class="p">(</span><span class="n">vector</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">vec</span><span class="p">){</span>
<span class="k">for</span><span class="p">(</span><span class="k">auto</span> <span class="n">v</span><span class="o">:</span> <span class="n">vec</span><span class="p">)</span>
<span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="o"><<</span> <span class="n">v</span> <span class="o"><<</span> <span class="sc">' '</span><span class="p">;</span>
<span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="o"><<</span> <span class="sc">'\n'</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">// After I know templates, const usages, refs and auto</span>
<span class="n">template</span> <span class="o"><</span><span class="kr">typename</span> <span class="n">T</span><span class="o">></span>
<span class="kt">void</span> <span class="nf">printVec3</span><span class="p">(</span><span class="k">const</span> <span class="n">vector</span><span class="o"><</span><span class="n">T</span><span class="o">></span> <span class="o">&</span><span class="n">vec</span><span class="p">){</span>
<span class="k">for</span><span class="p">(</span><span class="k">const</span> <span class="k">auto</span> <span class="o">&</span><span class="n">v</span><span class="o">:</span> <span class="n">vec</span><span class="p">)</span>
<span class="n">cout</span> <span class="o"><<</span> <span class="n">v</span> <span class="o"><<</span> <span class="sc">' '</span><span class="p">;</span>
<span class="n">cout</span><span class="o"><<</span> <span class="sc">'\n'</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">// After I know copy and ostream iterator.</span>
<span class="kt">void</span> <span class="nf">printVec4</span><span class="p">(</span><span class="k">const</span> <span class="k">auto</span> <span class="o">&</span><span class="n">data</span><span class="p">){</span>
<span class="n">std</span><span class="o">::</span><span class="n">copy</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span>
<span class="n">data</span><span class="p">.</span><span class="n">end</span><span class="p">(),</span>
<span class="n">std</span><span class="o">::</span><span class="n">ostream_iterator</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="p">,</span> <span class="s">" "</span><span class="p">));</span>
<span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o"><<</span> <span class="sc">'\n'</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">// Templating above! #include <iterator></span>
<span class="n">template</span> <span class="o"><</span><span class="kr">typename</span> <span class="n">Container</span><span class="o">></span>
<span class="kt">void</span> <span class="nf">printVec5</span><span class="p">(</span><span class="k">const</span> <span class="n">Container</span> <span class="o">&</span><span class="n">data</span><span class="p">){</span>
<span class="n">std</span><span class="o">::</span><span class="n">copy</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span>
<span class="n">data</span><span class="p">.</span><span class="n">end</span><span class="p">(),</span>
<span class="n">std</span><span class="o">::</span><span class="n">ostream_iterator</span><span class="o"><</span><span class="kr">typename</span> <span class="n">Container</span><span class="o">::</span><span class="n">value_type</span><span class="o">></span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="p">,</span> <span class="s">" "</span><span class="p">));</span>
<span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o"><<</span> <span class="sc">'\n'</span><span class="p">;</span>
<span class="p">}</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span><span class="o">*</span> <span class="n">argv</span><span class="p">[]){</span>
<span class="n">vector</span> <span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">v</span><span class="o">=</span> <span class="p">{</span><span class="mi">11</span><span class="p">,</span><span class="mi">22</span><span class="p">,</span><span class="mi">33</span><span class="p">,</span><span class="mi">44</span><span class="p">,</span><span class="mi">55</span><span class="p">};</span>
<span class="n">printVec1</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
<span class="n">printVec2</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
<span class="n">printVec3</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
<span class="n">printVec4</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
<span class="n">printVec5</span><span class="p">(</span><span class="n">v</span><span class="p">);</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div>
<p>Can we template the <code class="language-plaintext highlighter-rouge">printVec4</code>? <s> I still do not know <s> . Found it!</s></s></p>
cpp20 features
2021-10-04T13:21:58+05:30
https://mrprajesh.co.in/cpp20-features
<p>With advent to range-based for loop we begin to write the below loop</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">for</span><span class="p">(</span> <span class="kt">int</span> <span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o"><</span> <span class="n">vec</span><span class="p">.</span><span class="n">size</span><span class="p">();</span> <span class="o">++</span><span class="n">i</span><span class="p">){</span> <span class="c1">//vec is just for sample</span>
<span class="c1">// use vec[i]</span>
<span class="p">}</span>
</code></pre></div></div>
<p>as this one.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">for</span><span class="p">(</span> <span class="k">auto</span> <span class="n">v</span><span class="o">:</span> <span class="n">vec</span><span class="p">){</span>
<span class="c1">// use v</span>
<span class="p">}</span>
</code></pre></div></div>
<p>However at many time we also needed the index, we have do this dirty work.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">int</span> <span class="n">index</span> <span class="o">=</span><span class="mi">0</span><span class="p">;</span>
<span class="k">for</span><span class="p">(</span> <span class="k">auto</span> <span class="n">v</span><span class="o">:</span> <span class="n">vec</span><span class="p">){</span>
<span class="c1">// use v</span>
<span class="o">++</span><span class="n">index</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div>
<p>But, we do not have to play on dirt now using <code class="language-plaintext highlighter-rouge">c++20</code> we can declare variable inside the range for loop. :)</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">for</span><span class="p">(</span><span class="kt">int</span> <span class="n">index</span><span class="p">{</span><span class="mi">0</span><span class="p">};</span> <span class="k">auto</span> <span class="n">v</span><span class="o">:</span> <span class="n">vec</span><span class="p">){</span>
<span class="c1">// use v</span>
<span class="o">++</span><span class="n">index</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div>
<h3 id="refs">Refs</h3>
<ul>
<li><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0614r1.html">P0614R1</a></li>
</ul>
CPP STL Enlightenment
2021-09-30T12:56:28+05:30
https://mrprajesh.co.in/cpp-stl-enlightment
<p>C++ is moving so fast especially in the recent decade. I learned C++ without STL (in 2010’s)
and only learned about STL containers much after 2014 (during my PG). There were
lot of useful data structure such a set, map, vector, etc.</p>
<p>STL isn’t just about that. STL algorithms is a whole new world.
I saw this Corner’s talk in CPPCON <em>Algorithm Intuition</em> and have learned a lot.
This is a amazing talk!</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/48gV1SNm3WA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
<p>I recommend one more – <strong>Jonathan Boccara</strong>’s talk on <strong>105 STL Algorithms in Less Than an Hour</strong></p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/bFSnXNIsK4A" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
<p>If you are writing CUDA or thrust programs, then I suggest one.</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/zlJg9mCNfkQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
<p>Basically, if we can solve problems with a the sequence of STL algorithms then that can be translated into CUDA/Thrust code easily using <strong>device_vector</strong>. But not problems exhibit this behaviour. But, the intuition to think and solve along those lines always help us with a better C++/Thrust code.</p>
<p>I am in :heart: with STL algorithms, recently.</p>
<p>There is new language called <a href="https://en.wikipedia.org/wiki/APL_(programming_language)">APL</a>. WHAT! Yes. I have spelled it right.
You can solve most of the competitive programming problems in just 1 or 2 lines. Watch more of his videos <a href="https://www.youtube.com/watch?v=8Njxgy4itts">here</a> OMG! :open_mouth:</p>
<p>Cheers, more later!</p>
<p>Head over the learn <a href="/blog/hello-world-apl.html">hello world APL</a></p>
<p><strong>Updated</strong>: 09-Sep-2022 19:53:35</p>
Creating Good Images for research papers
2021-09-30T12:40:41+05:30
https://mrprajesh.co.in/creating-images-for-research-papers
<p>It is a 3-step process I follow from <a href="http://faculty.iitr.ac.in/~sparshfec/">Sparsh Mittal</a>
‘s talk.</p>
<ol>
<li>Create Images using Open office Impress from a blank presentation.
<ul>
<li>// We can use shapes, or other images.</li>
<li>// We can use Text/Arrows/anything.</li>
</ul>
</li>
<li>Export as PDF.</li>
<li>Use <code class="language-plaintext highlighter-rouge">pdfcrop sample.pdf</code> to crop the extra white spaces around and directly include cropped file in begin figure on latex.</li>
</ol>
<p>PS: We can do the same for <code class="language-plaintext highlighter-rouge">Openoffice Calc</code> figures by exporting as <code class="language-plaintext highlighter-rouge">.eps</code> format.</p>
<h3 id="prerequsites">Prerequsites</h3>
<ul>
<li>Need Open or Libre office which is a FOSS.</li>
<li><code class="language-plaintext highlighter-rouge">pdfcrop</code> which you could install using apt-get commands</li>
</ul>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">texlive</span><span class="o">-</span><span class="n">extra</span><span class="o">-</span><span class="n">utils</span>
</code></pre></div></div>
Building GaloisGPU on CentOS
2021-09-01T10:45:17+05:30
https://mrprajesh.co.in/building-GaloisGPU
<h2 id="wip-building-galoisgpulonestargpu-on-linux">[WIP] Building GaloisGPU/LonestarGPU on Linux</h2>
<ul>
<li>Load gcc < 8
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">module</span> <span class="n">unload</span> <span class="n">gcc920</span>
<span class="n">module</span> <span class="n">load</span> <span class="n">gcc640</span>
</code></pre></div> </div>
</li>
<li>Get the v4 and its prerequsites mgpu and cub.</li>
</ul>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">git</span> <span class="n">clone</span> <span class="o">-</span><span class="n">b</span> <span class="n">release</span><span class="o">-</span><span class="mi">4</span><span class="p">.</span><span class="mi">0</span> <span class="n">https</span><span class="o">:</span><span class="c1">//github.com/IntelligentSoftwareSystems/GaloisGPU</span>
</code></pre></div></div>
<p>Follow below steps</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">cd</span> <span class="n">GaloisGPU</span><span class="o">/</span><span class="n">rt</span><span class="o">/</span><span class="n">include</span>
<span class="n">wget</span> <span class="n">https</span><span class="o">:</span><span class="c1">//github.com/NVlabs/cub/archive/refs/tags/v1.3.2.zip #I tried v1.3.1 it is not working. But this seems to.</span>
<span class="n">git</span> <span class="n">clone</span> <span class="o">-</span><span class="n">b</span> <span class="n">branch_1</span><span class="p">.</span><span class="mi">1</span> <span class="n">https</span><span class="o">:</span><span class="c1">//github.com/moderngpu/moderngpu.git #I tried the one in release it is not working. But this seems to.</span>
<span class="n">unzip</span> <span class="n">v1</span><span class="p">.</span><span class="mi">3</span><span class="p">.</span><span class="mi">2</span><span class="p">.</span><span class="n">zip</span>
<span class="cp">## rm old line and link both
</span><span class="n">ls</span> <span class="o">-</span><span class="n">lrt</span> <span class="err">#</span><span class="n">these</span> <span class="n">are</span> <span class="n">to</span> <span class="n">be</span> <span class="n">rm</span><span class="err">'</span><span class="n">ed</span><span class="p">.</span> <span class="n">You</span> <span class="n">should</span> <span class="n">see</span> <span class="n">them</span> <span class="n">blinking</span>
<span class="p">...</span>
<span class="n">mgpu</span> <span class="o">-></span> <span class="o">/</span><span class="n">h2</span><span class="o">/</span><span class="n">sreepai</span><span class="o">/</span><span class="n">pd</span><span class="o">/</span><span class="n">gunrock</span><span class="o">/</span><span class="n">externals</span><span class="o">/</span><span class="n">moderngpu</span>
<span class="n">cub</span> <span class="o">-></span> <span class="o">/</span><span class="n">h2</span><span class="o">/</span><span class="n">sreepai</span><span class="o">/</span><span class="n">pd</span><span class="o">/</span><span class="n">cub</span><span class="o">-</span><span class="mi">1</span><span class="p">.</span><span class="mi">3</span><span class="p">.</span><span class="mi">1</span><span class="o">/</span><span class="n">cub</span><span class="o">/</span>
<span class="p">...</span>
<span class="n">rm</span> <span class="n">mgpu</span>
<span class="n">rm</span> <span class="n">cub</span>
<span class="n">ln</span> <span class="o">-</span><span class="n">s</span> <span class="n">cub</span><span class="o">-</span><span class="mi">1</span><span class="p">.</span><span class="mi">3</span><span class="p">.</span><span class="mi">2</span><span class="o">/</span><span class="n">cub</span><span class="o">/</span> <span class="n">cub</span> <span class="err">#</span><span class="n">slash</span> <span class="n">is</span> <span class="n">imp</span>
<span class="n">ln</span> <span class="o">-</span><span class="n">s</span> <span class="n">moderngpu</span> <span class="n">mgpu</span> <span class="err">#</span><span class="n">no</span> <span class="n">slash</span> <span class="n">is</span> <span class="n">imp</span>
<span class="n">ls</span> <span class="o">-</span><span class="n">lrt</span> <span class="err">#</span><span class="n">verify</span> <span class="k">if</span> <span class="n">all</span> <span class="n">fine</span>
<span class="n">lrwxrwxrwx</span> <span class="mi">1</span> <span class="n">cs16d003</span> <span class="n">rupeshgrp</span> <span class="mi">14</span> <span class="n">Sep</span> <span class="mi">1</span> <span class="mi">10</span><span class="o">:</span><span class="mi">51</span> <span class="n">cub</span> <span class="o">-></span> <span class="n">cub</span><span class="o">-</span><span class="mi">1</span><span class="p">.</span><span class="mi">3</span><span class="p">.</span><span class="mi">2</span><span class="o">/</span><span class="n">cub</span><span class="o">/</span>
<span class="n">lrwxrwxrwx</span> <span class="mi">1</span> <span class="n">cs16d003</span> <span class="n">rupeshgrp</span> <span class="mi">18</span> <span class="n">Sep</span> <span class="mi">1</span> <span class="mi">10</span><span class="o">:</span><span class="mi">53</span> <span class="n">mgpu</span> <span class="o">-></span> <span class="n">moderngpu</span>
<span class="n">cd</span> <span class="p">..</span><span class="o">/</span><span class="p">..</span><span class="o">/</span> <span class="err">#</span><span class="n">fall</span> <span class="n">back</span> <span class="n">to</span> <span class="n">Galois</span><span class="err">'</span><span class="n">s</span> <span class="n">Root</span>
</code></pre></div></div>
<h2 id="lets-make">Let’s make</h2>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">make</span> <span class="n">inputs</span> <span class="err">#</span><span class="n">wait</span> <span class="n">till</span> <span class="mi">2</span><span class="n">GB</span> <span class="n">downloads</span> <span class="n">and</span> <span class="mi">4</span><span class="n">GB</span> <span class="n">disk</span>
</code></pre></div></div>
<ul>
<li>Before we make sssp. We have few files to had older (or arch specific) compilation flags for nvcc</li>
</ul>
<h3 id="file-commonmk">File common.mk</h3>
<ul>
<li>cat <code class="language-plaintext highlighter-rouge">common.mk</code> #at line 6, Modify the below line</li>
<li><code class="language-plaintext highlighter-rouge">CUB_DIR := $(TOPLEVEL)/cub-1.2.0</code> #incorrect path</li>
<li>to</li>
<li><code class="language-plaintext highlighter-rouge">CUB_DIR := $(TOPLEVEL)/rt/include/cub</code></li>
<li>EXTRA := $(FLAGS) $(INCLUDES) $(LINKS) <code class="language-plaintext highlighter-rouge">-Wno-deprecated-declarations</code> #Line14 suffix added</li>
</ul>
<h3 id="file-archmk">File arch.mk</h3>
<ul>
<li>cat <code class="language-plaintext highlighter-rouge">arch.mk</code>
CUDA_ARCH := <br />
-gencode arch=compute_35,code=sm_35 <br />
-gencode arch=compute_37,code=sm_37 <br />
-gencode arch=compute_50,code=sm_50 <br />
-gencode arch=compute_52,code=sm_52 <br />
-gencode arch=compute_60,code=sm_60 <br />
-gencode arch=compute_61,code=sm_61 <br />
-gencode arch=compute_61,code=compute_61 # AQUA has V100 which has a cuda capability version 7.0. What should we change this to?</li>
</ul>
<p>change to</p>
<p>CUDA_ARCH := <br />
-gencode arch=compute_60,code=sm_70 <br />
-gencode arch=compute_70,code=compute_70</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="n">make</span> <span class="err">#</span><span class="n">no</span> <span class="n">threads</span> <span class="n">please</span><span class="p">.</span>
<span class="cp">#we need libggrt.a file the be generated. Although it ended in errors looks like it is generated.
</span><span class="n">ls</span> <span class="o">-</span><span class="n">lrt</span> <span class="n">rt</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span>
<span class="n">libggrt</span><span class="p">.</span><span class="n">a</span>
<span class="n">cd</span> <span class="n">apps</span><span class="o">/</span><span class="n">sssp</span>
<span class="n">make</span>
<span class="p">.</span><span class="o">/</span><span class="n">sssp</span>
<span class="n">usage</span><span class="o">:</span> <span class="p">.</span><span class="o">/</span><span class="n">sssp</span> <span class="p">[</span><span class="o">-</span><span class="n">q</span><span class="p">]</span> <span class="p">[</span><span class="o">-</span><span class="n">g</span> <span class="n">gpunum</span><span class="p">]</span> <span class="p">[</span><span class="o">-</span><span class="n">o</span> <span class="n">output</span><span class="o">-</span><span class="n">file</span><span class="p">]</span> <span class="p">[</span><span class="o">-</span><span class="n">l</span><span class="p">]</span> <span class="p">[</span><span class="o">-</span><span class="n">d</span> <span class="n">delta</span><span class="p">]</span> <span class="p">[</span><span class="o">-</span><span class="n">s</span> <span class="n">startNode</span><span class="p">]</span> <span class="n">graph</span><span class="o">-</span><span class="n">file</span>
<span class="o">-</span><span class="n">l</span><span class="o">:</span> <span class="n">enable</span> <span class="kr">thread</span> <span class="n">block</span> <span class="n">load</span> <span class="n">balancer</span> <span class="p">(</span><span class="n">by</span> <span class="k">default</span> <span class="nb">false</span><span class="p">)</span>
<span class="n">cd</span> <span class="n">apps</span><span class="o">/</span><span class="n">pr</span> <span class="err">#</span><span class="n">Doing</span> <span class="n">the</span> <span class="n">same</span> <span class="k">for</span> <span class="n">PR</span> <span class="n">and</span> <span class="n">TC</span><span class="p">.</span> <span class="n">What</span> <span class="n">about</span> <span class="n">BC</span><span class="o">?</span>
<span class="n">make</span>
<span class="n">cd</span> <span class="n">apps</span><span class="o">/</span><span class="n">triangle</span>
<span class="n">make</span>
</code></pre></div></div>
<p>YAY!</p>
<p>Below are the error path that I had to come througth.</p>
<h2 id="errors-1">Errors 1</h2>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="mi">1</span> <span class="n">catastrophic</span> <span class="n">error</span> <span class="n">detected</span> <span class="n">in</span> <span class="n">the</span> <span class="n">compilation</span> <span class="n">of</span> <span class="s">"/tmp/tmpxft_0000f9eb_00000000-4_main.cpp4.ii"</span><span class="p">.</span>
<span class="n">Compilation</span> <span class="n">aborted</span><span class="p">.</span>
<span class="n">nvcc</span> <span class="n">error</span> <span class="o">:</span> <span class="err">'</span><span class="n">cudafe</span><span class="o">++</span><span class="err">'</span> <span class="n">died</span> <span class="n">due</span> <span class="n">to</span> <span class="n">signal</span> <span class="mi">6</span>
<span class="n">nvcc</span> <span class="n">error</span> <span class="o">:</span> <span class="err">'</span><span class="n">cudafe</span><span class="o">++</span><span class="err">'</span> <span class="n">core</span> <span class="n">dumped</span>
<span class="n">make</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">:</span> <span class="o">***</span> <span class="p">[</span><span class="n">pta</span><span class="p">]</span> <span class="n">Error</span> <span class="mi">134</span>
<span class="n">make</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">:</span> <span class="n">Leaving</span> <span class="n">directory</span> <span class="err">`</span><span class="o">/</span><span class="n">tmp</span><span class="o">/</span><span class="n">GaloisGPU</span><span class="o">/</span><span class="n">apps</span><span class="o">/</span><span class="n">pta</span><span class="err">'</span>
</code></pre></div></div>
<h3 id="errors-2">Errors 2</h3>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">make</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">:</span> <span class="n">Entering</span> <span class="n">directory</span> <span class="err">`</span><span class="o">/</span><span class="n">tmp</span><span class="o">/</span><span class="n">GaloisGPU</span><span class="o">/</span><span class="n">apps</span><span class="o">/</span><span class="n">bh</span><span class="err">'</span>
<span class="n">nvcc</span> <span class="o">-</span><span class="n">O3</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_70</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">sm_70</span> <span class="o">-</span><span class="n">gencode</span> <span class="n">arch</span><span class="o">=</span><span class="n">compute_70</span><span class="p">,</span><span class="n">code</span><span class="o">=</span><span class="n">compute_70</span> <span class="o">-</span><span class="n">w</span> <span class="o">-</span><span class="n">I</span> <span class="p">..</span><span class="o">/</span><span class="p">..</span><span class="o">/</span><span class="n">include</span> <span class="o">-</span><span class="n">I</span> <span class="p">..</span><span class="o">/</span><span class="p">..</span><span class="o">/</span><span class="n">rt</span><span class="o">/</span><span class="n">include</span><span class="o">/</span><span class="n">cub</span> <span class="o">-</span><span class="n">Wno</span><span class="o">-</span><span class="n">deprecated</span><span class="o">-</span><span class="n">declarations</span> <span class="o">-</span><span class="n">o</span> <span class="n">bh</span> <span class="n">main</span><span class="p">.</span><span class="n">cu</span>
<span class="n">ptxas</span> <span class="o">/</span><span class="n">tmp</span><span class="o">/</span><span class="n">tmpxft_00004d84_00000000</span><span class="o">-</span><span class="mi">5</span><span class="n">_main</span><span class="p">.</span><span class="n">ptx</span><span class="p">,</span> <span class="n">line</span> <span class="mi">2633</span><span class="p">;</span> <span class="n">error</span> <span class="o">:</span> <span class="n">Instruction</span> <span class="err">'</span><span class="n">vote</span><span class="err">'</span> <span class="n">without</span> <span class="err">'</span><span class="p">.</span><span class="n">sync</span><span class="err">'</span> <span class="n">is</span> <span class="n">not</span> <span class="n">supported</span> <span class="n">on</span> <span class="p">.</span><span class="n">target</span> <span class="n">sm_70</span> <span class="n">and</span> <span class="n">higher</span> <span class="n">from</span> <span class="n">PTX</span> <span class="n">ISA</span> <span class="n">version</span> <span class="mi">6</span><span class="p">.</span><span class="mi">4</span>
<span class="n">ptxas</span> <span class="n">fatal</span> <span class="o">:</span> <span class="n">Ptx</span> <span class="n">assembly</span> <span class="n">aborted</span> <span class="n">due</span> <span class="n">to</span> <span class="n">errors</span>
<span class="n">make</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">:</span> <span class="o">***</span> <span class="p">[</span><span class="n">bh</span><span class="p">]</span> <span class="n">Error</span> <span class="mi">255</span>
<span class="n">make</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">:</span> <span class="n">Leaving</span> <span class="n">directory</span> <span class="err">`</span><span class="o">/</span><span class="n">tmp</span><span class="o">/</span><span class="n">GaloisGPU</span><span class="o">/</span><span class="n">apps</span><span class="o">/</span><span class="n">bh</span><span class="err">'</span>
<span class="n">make</span><span class="o">:</span> <span class="o">***</span> <span class="p">[</span><span class="n">bh</span><span class="p">]</span> <span class="n">Error</span> <span class="mi">2</span>
</code></pre></div></div>
Install/build Gunrock on CentOS
2021-07-03T19:44:23+05:30
https://mrprajesh.co.in/install-gunrock-on-centos
<p>This post is in continuation of with my earlier <a href="https://mrprajesh.blogspot.com/2019/12/building-gunrock-on-redhatcentos.html">blog post</a>.
The recent version (v1.2) of gunrock requires <code class="language-plaintext highlighter-rouge">std=c++14</code> for building. We have modified some of the steps there. Let’s build <code class="language-plaintext highlighter-rouge">SSSP</code>.
Do check out the <a href="#short-5-min-video">5 minute-video</a> at the end.</p>
<p><strong>Step 1: Setting up env</strong></p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">scl</span> <span class="n">enable</span> <span class="n">devtoolset</span><span class="o">-</span><span class="mi">8</span> <span class="n">bash</span>
<span class="n">CUDA_BIN_PATH</span><span class="o">=/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">cuda</span><span class="o">-</span><span class="mi">10</span><span class="p">.</span><span class="mi">2</span> <span class="err">#</span> <span class="n">edit</span> <span class="n">accordingly</span><span class="p">.</span>
<span class="n">export</span> <span class="n">CUDA_BIN_PATH</span>
</code></pre></div></div>
<p><em>If you do not have devtoolset-8</em>: Root user to run yum install devtoolset-8</p>
<p><strong>Step 2: cmake 3.10+ required</strong></p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">~/</span><span class="n">install</span><span class="o">/</span><span class="n">cmake</span><span class="o">-</span><span class="mi">3</span><span class="p">.</span><span class="mi">16</span><span class="p">.</span><span class="mi">1</span><span class="o">-</span><span class="n">Linux</span><span class="o">-</span><span class="n">x86_64</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">cmake</span> <span class="o">--</span><span class="n">version</span>
<span class="n">cmake</span> <span class="n">version</span> <span class="mi">3</span><span class="p">.</span><span class="mi">16</span><span class="p">.</span><span class="mi">1</span>
</code></pre></div></div>
<p><em>If you do not have</em>: Download cmake binary of cmake-x.xx.x-linux-x86_64.tar.gz from <a href="https://cmake.org/download/">official site</a> and extract locally.</p>
<p><strong>Step 3: Downloading</strong></p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">git</span> <span class="n">clone</span> <span class="o">--</span><span class="n">recursive</span> <span class="n">https</span><span class="o">:</span><span class="c1">//github.com/gunrock/gunrock/</span>
<span class="n">cd</span> <span class="n">gunrock</span>
</code></pre></div></div>
<p><strong>Step 4: Building</strong></p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">mkdir</span> <span class="n">build</span>
<span class="n">cd</span> <span class="n">build</span>
<span class="o">~/</span><span class="n">install</span><span class="o">/</span><span class="n">cmake</span><span class="o">-</span><span class="mi">3</span><span class="p">.</span><span class="mi">16</span><span class="p">.</span><span class="mi">1</span><span class="o">-</span><span class="n">Linux</span><span class="o">-</span><span class="n">x86_64</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">cmake</span> <span class="o">-</span><span class="n">DGUNROCK_BUILD_APPLICATIONS</span><span class="o">=</span><span class="n">OFF</span> <span class="o">-</span><span class="n">DGUNROCK_APP_SSSP</span><span class="o">=</span><span class="n">ON</span> <span class="p">..</span>
<span class="n">make</span> <span class="o">-</span><span class="n">j8</span> <span class="err">#</span><span class="n">edit</span> <span class="n">to</span> <span class="n">suit</span> <span class="n">your</span> <span class="n">config</span>
</code></pre></div></div>
<p><strong>Step 5: Running</strong></p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">.</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">sssp</span> <span class="n">market</span> <span class="p">..</span><span class="o">/</span><span class="n">dataset</span><span class="o">/</span><span class="n">small</span><span class="o">/</span><span class="n">test_mst</span><span class="p">.</span><span class="n">mtx</span>
</code></pre></div></div>
<h3 id="short-5-min-video">Short 5 Min video</h3>
<script id="asciicast-423671" src="https://asciinema.org/a/423671.js" async=""></script>
Thinks To Note in C Language
2021-06-19T17:08:54+05:30
https://mrprajesh.co.in/Thinks-To-Note-C-Language
<p>Back in those days as I started as a teaching assistant (TA) we TAs would
learn things which we never knew before. I am going add few things that I
have learnt in TAing CS1111 this semester Apr-Jun 2021.</p>
<ul>
<li><code class="language-plaintext highlighter-rouge">" %c"</code> the space before the %c matters! it prevents storing white space char.
<blockquote>
<p>Otherwise it might consume the white space chars (such as <code class="language-plaintext highlighter-rouge">' ', '\t','\n'</code>) of the previous input
eg <code class="language-plaintext highlighter-rouge">scanf("%d%c", num, ch)</code> taking input “11 a” implies <code class="language-plaintext highlighter-rouge">num=11</code> and <code class="language-plaintext highlighter-rouge">ch=' '</code> i.e a space in <code class="language-plaintext highlighter-rouge">ch</code> instead of intended <code class="language-plaintext highlighter-rouge">a</code></p>
</blockquote>
</li>
<li><code class="language-plaintext highlighter-rouge">n=2i</code> assignment is valid in C because the newer compilers have a complex constants as well.
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">#include</span> <span class="cpf"><stdio.h></span><span class="cp">
</span><span class="kt">int</span> <span class="nf">main</span><span class="p">(){</span>
<span class="kt">int</span> <span class="n">j</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span>
<span class="kt">int</span> <span class="n">k</span><span class="o">=</span><span class="mi">3</span><span class="n">i</span><span class="p">;</span>
<span class="n">printf</span><span class="p">(</span><span class="s">"i=%d k=%d"</span><span class="p">,</span><span class="n">j</span><span class="p">,</span><span class="n">k</span><span class="p">);</span>
<span class="k">for</span><span class="p">(</span><span class="n">j</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span> <span class="n">j</span><span class="o"><</span><span class="n">k</span><span class="p">;</span> <span class="o">++</span><span class="n">k</span><span class="p">)</span>
<span class="n">printf</span><span class="p">(</span><span class="s">"j=%d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span><span class="n">j</span><span class="p">);</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div> </div>
<blockquote>
<p>So, this will not result in a compiler error as <code class="language-plaintext highlighter-rouge">i</code> undefined.</p>
</blockquote>
</li>
<li><code class="language-plaintext highlighter-rouge">clang</code> and <code class="language-plaintext highlighter-rouge">gcc</code> may produce different output on using of uninitialized variables. One defaults to zero and other uses garbage value.</li>
<li>We used <a href="replit.com">Replit.com</a> to running our labs. It can very much simulate a TA monitoring the students while coding. More about replt later.</li>
<li>Never assign 0 to char in the char array and print it. It will either not print or have trouble with the output.</li>
<li>Usage of bitwise-operator to make string of chars turn into: lower-case, upper-case and flip cases.</li>
</ul>
bool in C language
2021-05-16T00:01:01+05:30
https://mrprajesh.co.in/bool-in-c-language
<p>For long time I was under an impression that <code class="language-plaintext highlighter-rouge">bool</code> data type is present
only in C++ and not in C language. I just got to know that it is there
in C however it is not enabled default. So, we have to include it. It is
very surprising that it is present there from C99 standard.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">#include</span> <span class="cpf"><stdio.h></span><span class="cp">
#include</span> <span class="cpf"><stdbool.h></span><span class="cp">
</span><span class="kt">int</span> <span class="nf">main</span><span class="p">(){</span>
<span class="n">bool</span> <span class="n">a</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<span class="n">printf</span><span class="p">(</span><span class="s">"what's a? %d"</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div>
<h3 id="note">Note</h3>
<ul>
<li>Uninitialized bool defaults to <code class="language-plaintext highlighter-rouge">false</code>.</li>
<li>There is <strong>no</strong> format specifier in printf to specify bool type.</li>
</ul>
<h3 id="references">References</h3>
<ul>
<li><a href="https://en.wikibooks.org/wiki/C_Programming/stdbool.h">Wikibooks</a></li>
<li><a href="https://stackoverflow.com/a/17307307/2712045">SO</a></li>
</ul>
My encounters with nvprof metrics
2021-01-12T01:58:18+05:30
https://mrprajesh.co.in/my-encounters-with-nvprof
<p>My objective is plain and simple. I wanted <code class="language-plaintext highlighter-rouge">nvprof</code> to output
the metrics as I had mentioned in <a href="https://gist.github.com/mrprajesh/352cbe661ee27a6b4627ae72d89479e6">my gist</a></p>
<p>We have two GPU P100 and GTX2080 which has 3 versions of CUDA installed: 8.0, 9.1 and 10.2 with driver 440.31.
We got some weird errors which even google had no answers.</p>
<p>// TODO</p>
<h2 id="how-did-we-fix-it">How did we fix it</h2>
<ul>
<li>Installed Driver 440.33.01</li>
<li>sudo with nvprof</li>
</ul>
<h3 id="ref">Ref</h3>
<p>-</p>
Checker for DIMACS
2021-01-07T18:36:07+05:30
https://mrprajesh.co.in/checker-for-dimacs
<p>Created a checker for DIMACS
<a href="https://mrprajesh.co.in/blog/cvrp.html">is here</a> or
<a href="https://mrprajesh.co.in/cvrp.html">here</a>.</p>
Use standard date and time format
2021-01-06T17:59:37+05:30
https://mrprajesh.co.in/Use-date-and-time-format
<h4 id="date">Date</h4>
<p>My brother’s birth day is <code class="language-plaintext highlighter-rouge">11-04-1994</code>. It is natural to
get confused as <code class="language-plaintext highlighter-rouge">04-Nov</code> if are an US/Europen citizen. :open_mouth: His birthday is on <code class="language-plaintext highlighter-rouge">11-April</code>. :yum: So, it is always better write (or store in system)
date <strong>unambiguously</strong> despite your locality. :thinking:</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">DD</span><span class="o">-</span><span class="n">Mon</span><span class="o">-</span><span class="n">YYYY</span>
</code></pre></div></div>
<p>is my favourite for several reasons because it uses constant <code class="language-plaintext highlighter-rouge">11</code> chars. Prefer to prefix <code class="language-plaintext highlighter-rouge">0</code> if DD is single digit. You can do that to your pen signature as well. It is tamper proof. So,
the right way is <code class="language-plaintext highlighter-rouge">11-Apr-1994</code> :sunglasses:</p>
<h4 id="time">Time</h4>
<p>Similar thing goes for time as well. I am in India and we follow IST. There might be others who are reading it from a different time zone.
You might have responded to email the next minute. But
based on how email clients are configure might show a different time of you reply/received time. It compounds with AM+PM thing.
So, let’s follow a 24 hours standard time along with mentioning your shift or your time zone. e.g <code class="language-plaintext highlighter-rouge">GMT+0530</code> or <code class="language-plaintext highlighter-rouge">IST</code>. That way it is unambiguous.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nl">HH:MM:</span><span class="n">SS</span> <span class="n">GMT</span><span class="o">+/-</span> <span class="n">hhss</span>
</code></pre></div></div>
<p>If you are on linux,</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">date</span> <span class="o">+</span><span class="s">"%d-%b-%Y %T (GMT%z)"</span>
<span class="mo">06</span><span class="o">-</span><span class="n">Jan</span><span class="o">-</span><span class="mi">2021</span> <span class="mi">18</span><span class="o">:</span><span class="mi">31</span><span class="o">:</span><span class="mi">38</span> <span class="p">(</span><span class="n">GMT</span><span class="o">+</span><span class="mo">0530</span><span class="p">)</span>
<span class="n">date</span> <span class="o">+</span><span class="s">"%d-%b-%Y %T (%Z)"</span>
<span class="mo">06</span><span class="o">-</span><span class="n">Jan</span><span class="o">-</span><span class="mi">2021</span> <span class="mi">18</span><span class="o">:</span><span class="mi">32</span><span class="o">:</span><span class="mo">02</span> <span class="p">(</span><span class="n">IST</span><span class="p">)</span>
</code></pre></div></div>
<p>Again this uses constant chars irrespective of date and time 24/7 (for another ~8000 years :sweat_smile:). By the way GMT and UTC mean the same.</p>
<h4 id="currency">Currency</h4>
<p>Similarly, for currency: $ and Rs. Better to use USD or INR instead.</p>
<p>Let’s me stop here for now.</p>
<p>:mask: Up and stay safe.</p>
<p>Cheers,</p>
<p>Rajz</p>
Do you want a smart "git log"
2020-12-23T14:13:35+05:30
https://mrprajesh.co.in/smart-git-log
<p>Many at times <code class="language-plaintext highlighter-rouge">git log</code> is more difficult to read and scroll. Here is a
smart solution for it. Do you want some thing like below?</p>
<p><img src="images/rajz-git-log.png" alt="image NOT lOaDeD" /></p>
<h3 id="to-setup">To setup</h3>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">$</span> <span class="n">git</span> <span class="n">config</span> <span class="o">--</span><span class="n">global</span> <span class="n">alias</span><span class="p">.</span><span class="n">lg</span> <span class="s">"log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"</span>
</code></pre></div></div>
<p>This is just git pretty format and <code class="language-plaintext highlighter-rouge">lg</code> alias for a bigger <code class="language-plaintext highlighter-rouge">cmd</code>.</p>
<h3 id="ref">Ref</h3>
<p>For more infor <a href="https://coderwall.com/p/euwpig/a-better-git-log">see here.</a></p>
Enable recent gcc version using devtoolset on centOs
2020-12-23T13:37:55+05:30
https://mrprajesh.co.in/devtoolset-on-centos
<p>This is a trick we use for using various <code class="language-plaintext highlighter-rouge">gcc</code> version on the same machine.
The machine my advisor runs on centOs. Everyone has a different
requirement for gcc. So, they have this wonderful option of devtoolset.
Must be installed by <code class="language-plaintext highlighter-rouge">root</code> user. Assuming that appropriate version is
installed. Lets see how to enable it.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">$</span> <span class="n">g</span><span class="o">++</span> <span class="o">--</span><span class="n">version</span>
<span class="n">g</span><span class="o">++</span> <span class="p">(</span><span class="n">GCC</span><span class="p">)</span> <span class="mi">4</span><span class="p">.</span><span class="mi">8</span><span class="p">.</span><span class="mi">5</span> <span class="mi">20150623</span> <span class="p">(</span><span class="n">Red</span> <span class="n">Hat</span> <span class="mi">4</span><span class="p">.</span><span class="mi">8</span><span class="p">.</span><span class="mi">5</span><span class="o">-</span><span class="mi">28</span><span class="p">)</span>
<span class="err">$</span> <span class="n">scl</span> <span class="n">enable</span> <span class="n">devtoolset</span><span class="o">-</span><span class="mi">7</span> <span class="n">bash</span>
<span class="err">$</span> <span class="n">g</span><span class="o">++</span> <span class="o">--</span><span class="n">version</span>
<span class="n">g</span><span class="o">++</span> <span class="p">(</span><span class="n">GCC</span><span class="p">)</span> <span class="mi">7</span><span class="p">.</span><span class="mi">3</span><span class="p">.</span><span class="mi">1</span> <span class="mi">20180303</span> <span class="p">(</span><span class="n">Red</span> <span class="n">Hat</span> <span class="mi">7</span><span class="p">.</span><span class="mi">3</span><span class="p">.</span><span class="mi">1</span><span class="o">-</span><span class="mi">5</span><span class="p">)</span>
</code></pre></div></div>
<p>Usually the installation goes here.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">$</span> <span class="n">ll</span>
<span class="n">total</span> <span class="mi">0</span>
<span class="n">dr</span><span class="o">-</span><span class="n">xr</span><span class="o">-</span><span class="n">xr</span><span class="o">-</span><span class="n">x</span><span class="p">.</span> <span class="mi">3</span> <span class="n">root</span> <span class="n">root</span> <span class="mi">32</span> <span class="n">Dec</span> <span class="mi">20</span> <span class="mi">2017</span> <span class="n">devtoolset</span><span class="o">-</span><span class="mi">3</span>
<span class="n">dr</span><span class="o">-</span><span class="n">xr</span><span class="o">-</span><span class="n">xr</span><span class="o">-</span><span class="n">x</span><span class="p">.</span> <span class="mi">3</span> <span class="n">root</span> <span class="n">root</span> <span class="mi">32</span> <span class="n">Dec</span> <span class="mi">20</span> <span class="mi">2017</span> <span class="n">devtoolset</span><span class="o">-</span><span class="mi">4</span>
<span class="n">dr</span><span class="o">-</span><span class="n">xr</span><span class="o">-</span><span class="n">xr</span><span class="o">-</span><span class="n">x</span><span class="p">.</span> <span class="mi">3</span> <span class="n">root</span> <span class="n">root</span> <span class="mi">32</span> <span class="n">Dec</span> <span class="mi">20</span> <span class="mi">2017</span> <span class="n">devtoolset</span><span class="o">-</span><span class="mi">6</span>
<span class="n">dr</span><span class="o">-</span><span class="n">xr</span><span class="o">-</span><span class="n">xr</span><span class="o">-</span><span class="n">x</span><span class="p">.</span> <span class="mi">3</span> <span class="n">root</span> <span class="n">root</span> <span class="mi">32</span> <span class="n">Jun</span> <span class="mi">1</span> <span class="mi">2018</span> <span class="n">devtoolset</span><span class="o">-</span><span class="mi">7</span>
<span class="n">dr</span><span class="o">-</span><span class="n">xr</span><span class="o">-</span><span class="n">xr</span><span class="o">-</span><span class="n">x</span><span class="p">.</span> <span class="mi">3</span> <span class="n">root</span> <span class="n">root</span> <span class="mi">32</span> <span class="n">Mar</span> <span class="mi">19</span> <span class="mi">2020</span> <span class="n">rh</span><span class="o">-</span><span class="n">python35</span>
<span class="err">$</span> <span class="n">pwd</span>
<span class="o">/</span><span class="n">opt</span><span class="o">/</span><span class="n">rh</span>
</code></pre></div></div>
<h3 id="ref">Ref</h3>
<p>For more <a href="https://www.softwarecollections.org/en/scls/rhscl/devtoolset-7/">info</a>.</p>
Enable Nvidia or Intel GPUs command line for display in Ubuntu/Linux Mint
2020-12-19T03:06:07+05:30
https://mrprajesh.co.in/set-nvidia-gpu-as-default-cmd-line
<p>Do you want to set the preferred GPU if <code class="language-plaintext highlighter-rouge">nvidia x server setting</code> is not displayed
in the tray icon. Let’s go command line.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">$</span> <span class="n">sudo</span> <span class="n">prime</span><span class="o">-</span><span class="n">select</span> <span class="n">status</span>
<span class="n">Usage</span><span class="o">:</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">prime</span><span class="o">-</span><span class="n">select</span> <span class="n">nvidia</span><span class="o">|</span><span class="n">intel</span><span class="o">|</span><span class="n">query</span>
<span class="err">$</span> <span class="n">sudo</span> <span class="n">prime</span><span class="o">-</span><span class="n">select</span> <span class="n">query</span>
<span class="n">nvidia</span>
<span class="err">$</span> <span class="n">sudo</span> <span class="n">prime</span><span class="o">-</span><span class="n">select</span> <span class="n">nvidia</span>
<span class="n">Info</span><span class="o">:</span> <span class="n">the</span> <span class="n">nvidia</span> <span class="n">profile</span> <span class="n">is</span> <span class="n">already</span> <span class="n">set</span>
</code></pre></div></div>
<p>Of course, mine is already set to nvidia!
Reboot to see the changes.</p>
<p>Peace!</p>
Terminal and shell prompt customization
2020-12-17T13:40:46+05:30
https://mrprajesh.co.in/terminal-and-shell-prompt-customization
<p>Do you want your terminal prompt to look like a pro?</p>
<p><img src="images/terminal.png" alt="sample pic! Not loaded" /></p>
<h3 id="installation-steps">Installation steps.</h3>
<ol>
<li>Install <a href="https://github.com/b-ryan/powerline-shell">powerline-shell</a>
through <code class="language-plaintext highlighter-rouge">pip3 install powerline-shell</code> (and maybe fonts?!)</li>
<li>Do this
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">fonts</span><span class="o">-</span><span class="n">powerline</span>
</code></pre></div> </div>
<p>or</p>
</li>
</ol>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">$</span> <span class="n">wget</span> <span class="n">https</span><span class="o">:</span><span class="c1">//github.com/powerline/powerline/raw/develop/font/PowerlineSymbols.otf</span>
<span class="err">$</span> <span class="n">mv</span> <span class="n">PowerlineSymbols</span><span class="p">.</span><span class="n">otf</span> <span class="o">~/</span><span class="p">.</span><span class="n">local</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">fonts</span><span class="o">/</span>
<span class="err">$</span> <span class="n">fc</span><span class="o">-</span><span class="n">cache</span> <span class="o">-</span><span class="n">vf</span> <span class="o">~/</span><span class="p">.</span><span class="n">local</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">fonts</span><span class="o">/</span>
</code></pre></div></div>
<ol>
<li>Append below contents to the end of <code class="language-plaintext highlighter-rouge">~/.bashrc</code> file.
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">function</span> <span class="nf">_update_ps1</span><span class="p">()</span> <span class="p">{</span>
<span class="n">PS1</span><span class="o">=</span><span class="err">$</span><span class="p">(</span><span class="n">powerline</span><span class="o">-</span><span class="n">shell</span> <span class="err">$</span><span class="o">?</span><span class="p">)</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">[[</span> <span class="err">$</span><span class="n">TERM</span> <span class="o">!=</span> <span class="n">linux</span> <span class="o">&&</span> <span class="o">!</span> <span class="err">$</span><span class="n">PROMPT_COMMAND</span> <span class="o">=~</span> <span class="n">_update_ps1</span> <span class="p">]];</span> <span class="n">then</span>
<span class="n">PROMPT_COMMAND</span><span class="o">=</span><span class="s">"_update_ps1; $PROMPT_COMMAND"</span>
<span class="n">fi</span>
</code></pre></div> </div>
</li>
<li>Restart terminal using <code class="language-plaintext highlighter-rouge">source ~/.bashrc</code></li>
</ol>
<h3 id="custom">Custom</h3>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">$</span> <span class="n">mkdir</span> <span class="o">-</span><span class="n">p</span> <span class="o">~/</span><span class="p">.</span><span class="n">config</span><span class="o">/</span><span class="n">powerline</span><span class="o">-</span><span class="n">shell</span> <span class="o">&&</span> \
<span class="n">powerline</span><span class="o">-</span><span class="n">shell</span> <span class="o">--</span><span class="n">generate</span><span class="o">-</span><span class="n">config</span> <span class="o">></span> <span class="o">~/</span><span class="p">.</span><span class="n">config</span><span class="o">/</span><span class="n">powerline</span><span class="o">-</span><span class="n">shell</span><span class="o">/</span><span class="n">config</span><span class="p">.</span><span class="n">json</span>
</code></pre></div></div>
<p>Edit this file as mine below!</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span>
<span class="s">"segments"</span><span class="o">:</span> <span class="p">[</span>
<span class="s">"virtual_env"</span><span class="p">,</span>
<span class="s">"username"</span><span class="p">,</span>
<span class="s">"hostname"</span><span class="p">,</span>
<span class="s">"ssh"</span><span class="p">,</span>
<span class="s">"cwd"</span><span class="p">,</span>
<span class="s">"git"</span><span class="p">,</span>
<span class="s">"hg"</span><span class="p">,</span>
<span class="s">"jobs"</span><span class="p">,</span>
<span class="s">"battery"</span><span class="p">,</span>
<span class="s">"time"</span><span class="p">,</span>
<span class="s">"root"</span>
<span class="p">],</span>
<span class="s">"cwd"</span><span class="o">:</span> <span class="p">{</span>
<span class="s">"max_depth"</span><span class="o">:</span> <span class="mi">2</span><span class="p">,</span>
<span class="s">"full_cwd"</span><span class="o">:</span> <span class="s">"true"</span>
<span class="p">},</span>
<span class="s">"vcs"</span><span class="o">:</span> <span class="p">{</span>
<span class="s">"show_symbol"</span><span class="o">:</span> <span class="s">"true"</span>
<span class="p">},</span>
<span class="s">"time"</span><span class="o">:</span> <span class="p">{</span>
<span class="s">"format"</span><span class="o">:</span> <span class="s">"%H:%M"</span>
<span class="p">},</span>
<span class="s">"theme"</span><span class="o">:</span> <span class="s">"default"</span>
<span class="p">}</span>
</code></pre></div></div>
<p>or my remote config with custom theme. Themes available are</p>
<ul>
<li>default</li>
<li>basic</li>
<li>solarized_light</li>
<li>solarized_dark</li>
<li>washed</li>
<li>gruvbox</li>
</ul>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span>
<span class="s">"segments"</span><span class="o">:</span> <span class="p">[</span>
<span class="s">"virtual_env"</span><span class="p">,</span>
<span class="s">"hostname"</span><span class="p">,</span>
<span class="s">"newline"</span><span class="p">,</span>
<span class="s">"username"</span><span class="p">,</span>
<span class="s">"ssh"</span><span class="p">,</span>
<span class="s">"cwd"</span><span class="p">,</span>
<span class="s">"git"</span><span class="p">,</span>
<span class="s">"hg"</span><span class="p">,</span>
<span class="s">"jobs"</span><span class="p">,</span>
<span class="s">"root"</span>
<span class="p">],</span>
<span class="s">"mode"</span><span class="o">:</span> <span class="s">"patched"</span><span class="p">,</span>
<span class="s">"cwd"</span><span class="o">:</span> <span class="p">{</span>
<span class="s">"max_depth"</span><span class="o">:</span> <span class="mi">2</span><span class="p">,</span>
<span class="s">"full_cwd"</span><span class="o">:</span> <span class="s">"true"</span>
<span class="p">},</span>
<span class="s">"theme"</span><span class="o">:</span> <span class="s">"washed"</span> <span class="p">,</span>
<span class="s">"vcs"</span><span class="o">:</span> <span class="p">{</span>
<span class="s">"show_symbol"</span><span class="o">:</span> <span class="s">"true"</span>
<span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>
<p>I tried to achieve <a href="https://github.com/ryanoasis/powerline-extra-symbols">Rayan’s Terminal</a>
like below. But, mission not accomplished still..</p>
<p><img src="images/ryan-preview.png" alt="Ryan Terminal Pic - NOT LOADED" />
Cheers,</p>
Resolving nvidia/cuda driver conflicts
2020-12-16T14:17:15+05:30
https://mrprajesh.co.in/resolving-nvidia-driver-conflicts
<p>Recently on my advisor’s server machine, some automatic updates has messed
up with the installed drivers. So, this resulted in the following:</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">CUDA</span> <span class="n">error</span> <span class="mi">30</span><span class="o">:</span> <span class="n">unknown</span> <span class="n">error</span><span class="p">.</span>
</code></pre></div></div>
<p>Even the device query was erring.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">cudaGetDeviceCount</span> <span class="n">returned</span> <span class="mi">30</span>
<span class="o">-></span> <span class="n">unknown</span> <span class="n">error</span>
<span class="n">Result</span> <span class="o">=</span> <span class="n">FAIL</span>
</code></pre></div></div>
<p>However, <code class="language-plaintext highlighter-rouge">nvidia-smi</code> was showing
the GPUs connected.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">rajesh</span><span class="err">@</span><span class="n">rn</span><span class="o">-</span><span class="n">gpu</span><span class="o">-</span><span class="n">p100</span> <span class="o">~</span><span class="p">]</span><span class="err">$</span> <span class="n">dkms</span> <span class="n">status</span>
<span class="n">nvidia</span><span class="p">,</span> <span class="mi">396</span><span class="p">.</span><span class="mi">44</span><span class="p">,</span> <span class="mi">3</span><span class="p">.</span><span class="mi">10</span><span class="p">.</span><span class="mi">0</span><span class="o">-</span><span class="mi">862</span><span class="p">.</span><span class="mi">3</span><span class="p">.</span><span class="mi">2</span><span class="p">.</span><span class="n">el7</span><span class="p">.</span><span class="n">x86_64</span><span class="p">,</span> <span class="n">x86_64</span><span class="o">:</span> <span class="n">installed</span> <span class="p">(</span><span class="n">WARNING</span><span class="o">!</span> <span class="n">Diff</span> <span class="n">between</span> <span class="n">built</span> <span class="n">and</span> <span class="n">installed</span> <span class="n">module</span><span class="o">!</span><span class="p">)</span> <span class="p">(</span><span class="n">WARNING</span><span class="o">!</span> <span class="n">Diff</span> <span class="n">between</span> <span class="n">built</span> <span class="n">and</span> <span class="n">installed</span> <span class="n">module</span><span class="o">!</span><span class="p">)</span> <span class="p">(</span><span class="n">WARNING</span><span class="o">!</span> <span class="n">Diff</span> <span class="n">between</span> <span class="n">built</span> <span class="n">and</span> <span class="n">installed</span> <span class="n">module</span><span class="o">!</span><span class="p">)</span>
<span class="n">nvidia</span><span class="p">,</span> <span class="mi">440</span><span class="p">.</span><span class="mi">31</span><span class="p">,</span> <span class="mi">3</span><span class="p">.</span><span class="mi">10</span><span class="p">.</span><span class="mi">0</span><span class="o">-</span><span class="mi">862</span><span class="p">.</span><span class="mi">3</span><span class="p">.</span><span class="mi">2</span><span class="p">.</span><span class="n">el7</span><span class="p">.</span><span class="n">x86_64</span><span class="p">,</span> <span class="n">x86_64</span><span class="o">:</span> <span class="n">built</span>
<span class="cp"># dkms remove -m nvidia -v 396.44 --all
# dkms remove -m nvidia -v 440.31 --all
# dkms install -m nvidia -v 440.31
</span>
<span class="cp"># reboot
</span>
<span class="cp"># dkms status
</span><span class="n">nvidia</span><span class="p">,</span> <span class="mi">440</span><span class="p">.</span><span class="mi">31</span><span class="p">,</span> <span class="mi">3</span><span class="p">.</span><span class="mi">10</span><span class="p">.</span><span class="mi">0</span><span class="o">-</span><span class="mi">862</span><span class="p">.</span><span class="mi">3</span><span class="p">.</span><span class="mi">2</span><span class="p">.</span><span class="n">el7</span><span class="p">.</span><span class="n">x86_64</span><span class="p">,</span> <span class="n">x86_64</span><span class="o">:</span> <span class="n">installed</span>
</code></pre></div></div>
<p>That resolved the cuda error 30. Yay!</p>
DIMACS and PACE Implementation challenges
2020-12-06T14:52:47+05:30
https://mrprajesh.co.in/implementation-challenges
<p>There are two implementations challenges currently accepting submissions.</p>
<ul>
<li><a href="http://dimacs.rutgers.edu/programs/challenge/vrp/">12th DIMACS </a></li>
<li><a href="https://pacechallenge.org/2021/">PACE 2021 </a></li>
</ul>
<h3 id="dimacs">DIMACS</h3>
<ul>
<li><strong>Vehicle Routing</strong>
<ul>
<li>CVRP - a simplest variant</li>
<li>Generalized form of TSP</li>
</ul>
</li>
<li><strong>TSP</strong>
<ul>
<li>Input: n points with unique ids on xy plane <code class="language-plaintext highlighter-rouge">i xi y1</code></li>
<li>Output: print a permutation of n</li>
<li>Goal: Minimizing the distance travelled from first point to all others point and back to first.</li>
</ul>
</li>
</ul>
<h3 id="pace">PACE</h3>
<ul>
<li>Cluster Editing</li>
</ul>
Back on track
2020-11-23T09:20:53+05:30
https://mrprajesh.co.in/back-on-track
<p>Many at times one’s <strong>life</strong> take too many quick turns. Lately,</p>
<ul>
<li>Preethi’s Pregnancy and other complications</li>
<li>Father-in-law COVID+</li>
<li>Parents COVID+</li>
<li>All fine and back home</li>
<li>Preethi delivers a boy baby – Shiva :heart_eyes: :)</li>
</ul>
<p>Hope all my priorities and roles(as son and husband) are over now. Time
to continue my role as PhD scholar with high priority.
Of course, new role father is added to it.</p>
<p>Cheers,</p>
<p>Rajz</p>
Github renames master branch to main
2020-10-29T00:29:07+05:30
https://mrprajesh.co.in/github-renames-master-branch-to-main
<p>I happen to know this pretty late. Github is set the rename the master branch
as main branch. So, why does Github do so?</p>
<blockquote>
<p>After the brutal death of George Floyd and the Black Lives Matter protests earlier this year, tech companies wanted to show their support for the black community by abandoning non-inclusive terms such as master, slave, blacklist, and whitelist.</p>
</blockquote>
<p>That’s good.</p>
<p>From 01-Oct-2020, all new repos created will have default branch as <code class="language-plaintext highlighter-rouge">main</code>.
Github has provided <a href="https://github.com/github/renaming">details</a> for older repos to migrate.
So, should be fairly easy for old repos. Let’s see.</p>
<p>Cheers,
Bye</p>
<p>Rajesh</p>
<h3 id="reference">Reference</h3>
<ul>
<li><a href="https://www.zdnet.com/article/github-to-replace-master-with-main-starting-next-month/">Zedge</a></li>
<li><a href="https://github.com/github/renaming">Github - Official porting information</a></li>
</ul>
Card game play - Rummy
2020-04-29T13:41:09+05:30
https://mrprajesh.co.in/card-game-playing-tips-rummy
<p>Indian Rummy; 13 Cards Rummy or Points Rummy.</p>
<h3 id="types">Types</h3>
<ol>
<li>Rummy</li>
<li>Rummy with open joker</li>
</ol>
<h3 id="setup">Setup</h3>
<ul>
<li>13 x 4 + 2 jokers = 54 cards = 1 deck</li>
<li>For 2 players = 1 deck</li>
<li>If 2-5 players = 2 deck</li>
<li>If 6+ player = 3 deck</li>
</ul>
<h3 id="gameplay">Gameplay</h3>
<ul>
<li>
<p>Shuffle, dealing, start, circular turns, declare, and score!</p>
</li>
<li>Dealing: to every player with 13; cut open card and game joker.</li>
<li>Circular-turn: in a player’s turn should pick and discard</li>
<li>Declare: in a players turn after picking, closd a card and show melds</li>
<li>Scoring: verify declaration and others points, and update score!</li>
</ul>
<h3 id="rules">Rules</h3>
<p>Meld is 3+ cards of seq/run or set!
Note a set is 3 or 4!</p>
<h3 id="strategy">Strategy</h3>
<p>Prioritize these first!</p>
<ol>
<li>Aim for pure sequence/run (original rummy)</li>
<li>Aim for pure/impure sequence (or additional rummy or second run/seq)</li>
<li>Aim if sets (or dummy) or pure/impure sequence possible</li>
<li>Aim for 4th card</li>
<li>If someone declared, rearrange to minimize your score points</li>
</ol>
<h3 id="own-maximize-your-probability-towards-winning">OWN: Maximize your probability towards winning</h3>
<h3 id="minimize-points">Minimize points</h3>
<p>Assuming you have a pure run and second sequence</p>
<ol>
<li>In a two impure sequence, keep joker to the largest sequence.</li>
<li>In a 4 card meld, try to reuse start/end card to make a set</li>
<li>In a 4+ card meld with stating/ending joker, reuse the joker to other melds</li>
<li>
<p>In a 3 card meld (for 3rd) break to make set if any</p>
</li>
<li>{2 :diamonds:, 3 :diamonds:, :black_joker:} {9 :hearts:, 10 :hearts:} Point=18 :fast_forward::fast_forward: {2 :diamonds:, 3 :diamonds:} {9 :hearts:, 10 :hearts:, :black_joker:} Points=5
2.</li>
</ol>
<h3 id="other-guessing-opponents">OTHER: Guessing opponents</h3>
<p>// Todo</p>
Learning coronavirus
2020-04-16T20:44:32+05:30
https://mrprajesh.co.in/learning-coronavirus
<p>Instead of keeping myself busy with work and am keepking busy with COVID work!</p>
<p>Since the <a href="/blog/corono-virus-pedia.html">last post</a>, just wanted put the timeline of instances that we keep leaning.
There are a lot we do not know about this new virus. <em>SARS-COV-2</em>!</p>
<ol>
<li>
<p><strong>Jan/Feb/Mar</strong> Screening passengers for fever at airports. <del>7</del> 14 days quarantine of people who travelling via/from infected countries. we do not have enough quarantine facilities. Home quarantine is the best option.</p>
</li>
<li>
<p><strong>20-Jan:</strong> <del>It can spread from animal to human</del> It can spread from human to human.</p>
</li>
<li><strong>16-Mar:</strong> Lock-down inevitable to bend the curve.
<blockquote>
<p>Vox <a href="https://www.youtube.com/watch?v=dSQztKXR6k0">video</a> and <a href="https://www.youtube.com/watch?v=FVIGhz3uwuQ&t=1s">worse than flu</a></p>
</blockquote>
</li>
<li>
<p><strong>17-Mar:</strong> Social distancing, 20s of hand-washing, elbow-couching.</p>
</li>
<li><strong>20-Mar:</strong> It can live longer on surfaces like wood, plastic, stainless steel, elevator switches, door knob/handles, and railings, etc.
<blockquote>
</blockquote>
</li>
<li><strong>22-Mar:</strong> Coronavirus is a family of viruses. Even common cold is caused due to one of it.</li>
<li><strong>26-Mar:</strong> Asymptomatic patients who got infected may infect others during.</li>
<li>
<p>It takes up to 14 days to show symptoms.</p>
</li>
<li>Every one including healthy and affected must wear mask.
<blockquote>
<p>Dr. Kim of Korea <a href="https://www.youtube.com/watch?v=gAk7aX5hksU">video1</a></p>
</blockquote>
</li>
<li>It spreads to health care workers easily. It spreads in closed environment easily.</li>
<li>It might stay in air longer.
<blockquote>
<p>Source <a href="https://youtu.be/H2azcn7MqOU?t=96">video</a>: Time from 1:36</p>
</blockquote>
</li>
<li>It can spread in stool of infected and/or recovered.
<blockquote>
<p>Scary! Can it have an lasting effect on people?</p>
</blockquote>
</li>
<li>Recovered persons may get infected again. WTH!
<blockquote>
<p>Even recovered person to home quarantine extended to <del>14</del> 28 days.</p>
</blockquote>
</li>
<li><strong>16-Apr:</strong> It can spread from dead bodies of COVID death patients. Action: Cremate! no rituals.
<blockquote>
<p>Dr. Kim of Korea <a href="https://www.youtube.com/watch?v=QwoNP9QWr4Y">video2</a> //relapse vs reinfection. cremate. mask.</p>
</blockquote>
</li>
</ol>
Self realization
2020-04-11T13:58:12+05:30
https://mrprajesh.co.in/self-realization
<p><strong>TL;DR</strong></p>
<blockquote>
<p>Do not lie even once. It trains your mind to lie even when you do not what to.</p>
</blockquote>
<blockquote>
<p>Instead of thinking reasons for not working, squeeze-in and get some more work done.</p>
</blockquote>
<h4 id="blame-me">Blame me?</h4>
<p>When a work (that I am supposed to complete) is delayed or not done</p>
<ul>
<li>I use to blame me, others, and many other things surrounding me</li>
<li>I realized our mind searches/thinks for all possible reasons that (possibly)affected the work</li>
<li>In fact, some could be true or to a extent it will</li>
<li>Then, I realized instead of wasting time thinking</li>
<li>We could use those time to get the work done!</li>
</ul>
<h3 id="a--lie">A = Lie;</h3>
<p>Brain is a wonderful device</p>
<ul>
<li>You do some thing (A) just once or twice</li>
<li>It gets trained so quickly</li>
<li>tries to imitate those things (A) every time.</li>
</ul>
<p>e.g You did not have breakfast that day since you woke up late.
Also, there is no time to have because you have important meeting with your professor in 20 mins.
After quick bath you rush to meeting. To your surprise, the prof ask me if I had breakfast.
So, you say yes (A). Yes, you do not want to say the whole story and occupy your meeting time.
(why? woke late; why? late to sleep; why? first day + night show movie of your fav actor that you can not miss out)</p>
<p>Later sometime, when the prof ask if I had finished the last week assignment. He says “yes” it is nearing completion.
The reality is I had not done enough work that week. :flushed:</p>
<p><strong>why?</strong></p>
<ul>
<li>researching coronavirus,</li>
<li>tracking the #cases (wordwide, India, TN, Chennai, velachery,…, Italy, USA, Nigeria, ..),</li>
<li>reading any paper on journal about corona virus that just published, trying find vaccine,</li>
<li>panic buying veggies + groceries, batting mosquitoes at home.</li>
<li>and writing this blog</li>
</ul>
<p>I promise I will say the truth. No matter what!</p>
<h4 id="moral-of-the-story">Moral of the story</h4>
<blockquote>
<p>Do not lie even once. It trains your mind to lie even when you do not what to.
Work and do not spend (x) thinking reasons why you did not work.
Instead, squeeze-in that time (x) to do some more useful work.</p>
</blockquote>
<p>I used to self-evaluate me every day. Rupesh gave a valuable advice not do it that way.
But, instead perform over large period. More about this on a later post.</p>
Securing email servers
2020-04-10T16:08:45+05:30
https://mrprajesh.co.in/securing-email-servers
<p>To get a background on the issue,
read <a href="https://www.vox.com/recode/2020/4/2/21202852/coronavirus-scam-email-who-spoofing-domain-dmarc">this</a> or see the video from vox. :sunglasses:
We had a similar issues in our department as well.
Someone sent email impersonating our HoD’s cse email. OMG! :flushed:</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/_CrbHvbvvMw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
<blockquote>
<p>In brief, any scammers can impersonate and send email from legitimate
domain name if email admins do not have secure configuration (appropriate DMARC record). For e.g cse.iitm.ac.in or who.int domain for <a href="https://www.cse.iitm.ac.in/">CSE IITM</a> or <a href="https://www.who.int/">WHO</a></p>
</blockquote>
<p>How find if you are vulnerable? or Check your DMARC record for</p>
<blockquote>
<p>See <a href="https://www.dmarcanalyzer.com/dmarc/dmarc-record-check">here</a></p>
</blockquote>
<p>How to resolve it?</p>
<blockquote>
<p>Add a DMARC record as said <a href="https://www.dmarcanalyzer.com/how-to-create-a-dmarc-record/">here</a></p>
</blockquote>
<p>This is a simple thing
But, only 15% servers has done this setup. That’s strange, isn’t? :anguished:</p>
<p>Roll out progressively and monitor daily log.
Otherwise, you may end up genuine mails being dropped/lost.
As said in this <a href="https://www.dmarcanalyzer.com/how-to-create-a-dmarc-record/">post</a> under section <em>Deploy your DMARC policy slowly</em>.</p>
<p>Cheers, bye!</p>
List the order of calls from installed packages/commands
2020-04-02T19:45:14+05:30
https://mrprajesh.co.in/list-the-order-of-calls-from-installed
<ul>
<li>I had a ruby 2.7 version but system was using 2.5 (an older version came by default).</li>
<li>How did I managed to find out using <code class="language-plaintext highlighter-rouge">which</code> command?</li>
<li><code class="language-plaintext highlighter-rouge">which -a <cmd></code> lists the order of executable that is checked for a command</li>
</ul>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">rajz</span><span class="err">@</span><span class="n">LordOfWarriors</span><span class="o">:~</span><span class="err">$</span> <span class="n">ruby</span> <span class="o">-</span><span class="n">v</span>
<span class="n">ruby</span> <span class="mi">2</span><span class="p">.</span><span class="mi">5</span><span class="p">.</span><span class="mi">1</span><span class="n">p57</span> <span class="p">(</span><span class="mi">2018</span><span class="o">-</span><span class="mo">03</span><span class="o">-</span><span class="mi">29</span> <span class="n">revision</span> <span class="mi">63029</span><span class="p">)</span> <span class="p">[</span><span class="n">x86_64</span><span class="o">-</span><span class="n">linux</span><span class="o">-</span><span class="n">gnu</span><span class="p">]</span>
<span class="n">rajz</span><span class="err">@</span><span class="n">LordOfWarriors</span><span class="o">:~</span><span class="err">$</span> <span class="n">which</span> <span class="n">ruby</span>
<span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">ruby</span>
<span class="n">rajz</span><span class="err">@</span><span class="n">LordOfWarriors</span><span class="o">:~</span><span class="err">$</span> <span class="n">which</span> <span class="o">-</span><span class="n">a</span> <span class="n">ruby</span>
<span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">ruby</span>
<span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">linuxbrew</span><span class="o">/</span><span class="p">.</span><span class="n">linuxbrew</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">ruby</span>
<span class="n">rajz</span><span class="err">@</span><span class="n">LordOfWarriors</span><span class="o">:~</span><span class="err">$</span> <span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">linuxbrew</span><span class="o">/</span><span class="p">.</span><span class="n">linuxbrew</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">ruby</span> <span class="o">-</span><span class="n">v</span>
<span class="n">ruby</span> <span class="mi">2</span><span class="p">.</span><span class="mi">7</span><span class="p">.</span><span class="mi">0</span><span class="n">p0</span> <span class="p">(</span><span class="mi">2019</span><span class="o">-</span><span class="mi">12</span><span class="o">-</span><span class="mi">25</span> <span class="n">revision</span> <span class="mi">647</span><span class="n">ee6f091</span><span class="p">)</span> <span class="p">[</span><span class="n">x86_64</span><span class="o">-</span><span class="n">linux</span><span class="p">]</span>
<span class="n">rajz</span><span class="err">@</span><span class="n">LordOfWarriors</span><span class="o">:~</span><span class="err">$</span>
</code></pre></div></div>
GSuite tools for online teaching
2020-04-01T17:14:10+05:30
https://mrprajesh.co.in/gSuite-tools-for-online-teaching
<p>Google had a lot of tools like hangout on air and many others. But, many
because unavailable now. In this COVID19 season below tool see a surge.</p>
<ul>
<li><a href="https://zoom.us/">Zoom</a> is one possibility</li>
<li><a href="https://web.skype.com">Skype</a> Group call + Screen share</li>
<li><a href="https://meet.jit.si/">Jitsi</a> - An open-source</li>
<li><a href="https://studio.youtube.com/channel/UC/livestreaming">YouTube Live</a> - stream</li>
</ul>
<p>Everything has its own advantages + disadvantages</p>
<ul>
<li>zoom can not record 40+ mins</li>
<li>skype has can not call 50+ participants</li>
<li>web skype needs no install</li>
<li>skype mobile is available</li>
<li>Jistsi also is in mobile</li>
</ul>
<p>Google has a lot of resources</p>
<ul>
<li>Moodle == <a href="https://classroom.google.com">Classroom</a></li>
<li>Zoom == <a href="https://meet.google.com/">Meet</a></li>
<li>CamStacia/CamStudio == <a href="https://jamboard.google.com">Jamboard</a></li>
</ul>
<p>and few others. More details here at <a href="https://teachfromhome.google/intl/en/">Teaching from home.</a>
There is a nice presentation <a href="https://storage.googleapis.com/teachfromhome.appspot.com/en-toolkit.pdf">here</a>.</p>
<ul>
<li>Some of these tools are available only in Gsuite. Seems like temporary?</li>
<li>Sometime later, will tell about all open/free tools.</li>
</ul>
How to keep ssh session alive longer
2020-04-01T13:40:44+05:30
https://mrprajesh.co.in/how-to-keep-ssh-session-alive-longer
<ul>
<li>More often <code class="language-plaintext highlighter-rouge">ssh</code> times out when the user is not using the terminal for a few minutes.</li>
<li>The remote server disconnects the silent clients; Annoying! :angry:</li>
<li>Two ways to resolve from client-side on Linux Mint/Ubuntu/Any</li>
</ul>
<h3 id="way-1-works-great">Way 1 (works great!)</h3>
<ul>
<li>while connecting via ssh add few flags</li>
<li><code class="language-plaintext highlighter-rouge">ssh -o ServerAliveInterval=60 <myname>@<myremote-host-or-ip-address></code></li>
</ul>
<h3 id="way-2">Way 2</h3>
<ul>
<li><code class="language-plaintext highlighter-rouge">nano $HOME/.ssh/config</code>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">Host</span> <span class="o">*</span>
<span class="n">ServerAliveInterval</span> <span class="mi">240</span>
</code></pre></div> </div>
</li>
<li>chmod 600 $HOME/.ssh/config</li>
</ul>
<h4 id="alias-ssh---way-1">Alias ssh - Way 1</h4>
<ul>
<li>In <code class="language-plaintext highlighter-rouge">~/.bashrc</code>, towards the end</li>
</ul>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">alias</span> <span class="n">sshlive</span><span class="o">=</span><span class="err">'</span><span class="n">ssh</span> <span class="o">-</span><span class="n">o</span> <span class="n">ServerAliveInterval</span><span class="o">=</span><span class="mi">60</span><span class="err">'</span>
</code></pre></div></div>
<ul>
<li>Open a new terminal or run <code class="language-plaintext highlighter-rouge">source ~/.bashrc</code></li>
<li>See, list of aliases that are set. Type <code class="language-plaintext highlighter-rouge">alias</code></li>
<li>Next time, when I want ssh we need not remember the long command.</li>
<li>Just type <code class="language-plaintext highlighter-rouge">sshlive user@hostname</code>.</li>
<li>Thanks to <code class="language-plaintext highlighter-rouge">alias</code></li>
</ul>
<h4 id="thanks">Thanks</h4>
<p>Cheers and thanks to <a href="https://stackoverflow.com/questions/25084288/keep-ssh-session-alive">SO!</a></p>
How to add badges to your git repo or website
2020-04-01T01:35:26+05:30
https://mrprajesh.co.in/add-badges-to-your-git-repo-site
<ul>
<li>How to add badges to your Git repo like <a href="https://github.com/jekyll/jekyll#jekyll">this</a></li>
<li>There are multiple ways to add badges.</li>
<li>one such service is by <a href="https://shields.io/">shield</a>, see examples</li>
<li>put the below in your <code class="language-plaintext highlighter-rouge">readme.md</code></li>
</ul>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">!</span><span class="p">[</span><span class="n">Jekyll</span> <span class="n">Logo</span><span class="p">](</span><span class="n">https</span><span class="o">:</span><span class="c1">//img.shields.io/badge/powered_by-Jekyll-blue.svg)</span>
</code></pre></div></div>
<ul>
<li>It should look like this</li>
</ul>
<p><img src="https://img.shields.io/badge/powered_by-Jekyll-blue.svg" alt="Jekyll Logo" /></p>
<ul>
<li>the <code class="language-plaintext highlighter-rouge">.svg</code> at end of the url is optional.</li>
<li>shows last commit of this blog.</li>
</ul>
<p><img src="https://img.shields.io/github/last-commit/mrprajesh/blog" alt="Last commit" /></p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">!</span><span class="p">[</span><span class="n">Last</span> <span class="n">commit</span><span class="p">](</span><span class="n">https</span><span class="o">:</span><span class="c1">//img.shields.io/github/last-commit/mrprajesh/blog)</span>
</code></pre></div></div>
Enable latex/mathjax in your post only if needed
2020-04-01T00:19:04+05:30
https://mrprajesh.co.in/include-mathjax-only-if-needed
<ul>
<li>Assuming this is an extension of my earlier <a href="/blog/latex-jekyll.html">mathjax post</a></li>
<li>This post contains <code class="language-plaintext highlighter-rouge">latex</code> or <code class="language-plaintext highlighter-rouge">math</code> mode symbols.</li>
</ul>
\[A_1 \times B_2 = C_3\]
<ul>
<li><code class="language-plaintext highlighter-rouge">mathjax.js</code> is loaded from the <code class="language-plaintext highlighter-rouge">default.html</code>, even for the post/page</li>
<li>that was not using math/latex symbols it used load <code class="language-plaintext highlighter-rouge">mathjax.js</code> unnecessarily.</li>
<li>23 HTTP page request vs 4 (with mathjax vs without)</li>
<li>So, decided to load (mathjax.js) only for post that has math symbols</li>
<li>Have added <a href="https://jekyllrb.com/docs/front-matter/#custom-variables">custom variable</a> called
<code class="language-plaintext highlighter-rouge">mathjax</code>.</li>
<li>But, should remember to set variable to true in post’s front matter</li>
</ul>
<h4 id="_post2020-04-01-new-postmd">_post/2020-04-01-new-post.md</h4>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">---</span>
<span class="n">layout</span><span class="o">:</span> <span class="n">post</span>
<span class="n">title</span><span class="o">:</span> <span class="n">Enable</span> <span class="n">latex</span><span class="o">/</span><span class="n">mathjax</span> <span class="n">in</span> <span class="n">your</span> <span class="n">post</span> <span class="n">only</span> <span class="k">if</span> <span class="n">needed</span>
<span class="n">tags</span><span class="o">:</span> <span class="p">[</span><span class="n">jekyll</span><span class="p">,</span> <span class="n">latex</span><span class="p">]</span>
<span class="n">mathjax</span><span class="o">:</span> <span class="nb">true</span>
<span class="o">---</span>
</code></pre></div></div>
<h4 id="_layoutsdefaulthtml">_layouts/default.html</h4>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="o">%</span> <span class="k">if</span> <span class="n">page</span><span class="p">.</span><span class="n">mathjax</span> <span class="o">==</span> <span class="nb">true</span> <span class="o">%</span><span class="p">}</span>
<span class="p">{</span><span class="o">%</span> <span class="n">include</span> <span class="n">mathjax</span><span class="p">.</span><span class="n">html</span> <span class="o">%</span><span class="p">}</span>
<span class="p">{</span><span class="o">%</span> <span class="n">endif</span> <span class="o">%</span><span class="p">}</span>
</code></pre></div></div>
<p>See the <a href="https://raw.githubusercontent.com/mrprajesh/blog/master/_posts/2020-04-01-with-math.md">full post</a> and <a href="https://github.com/mrprajesh/blog/blob/master/_layouts/default.html#L23">default html</a>.</p>
Skype - How to make someone admin
2020-03-31T12:32:56+05:30
https://mrprajesh.co.in/skype-how-to-make-someone-admin
<p>How to make someone admin in skype. i.e How to update the role of
a particular person in a group chat.</p>
<ul>
<li>First, find out the <code class="language-plaintext highlighter-rouge"><username></code> of that person</li>
<li>View the current role</li>
<li>Change the role for that user. valid roles: <code class="language-plaintext highlighter-rouge">Admin</code> or <code class="language-plaintext highlighter-rouge">User</code></li>
</ul>
<p>Type the following skype chat commands on group’s chat
window!</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">/</span><span class="n">showmembers</span>
<span class="o">/</span><span class="n">setrole</span> <span class="o"><</span><span class="n">username</span><span class="o">></span> <span class="n">Admin</span>
</code></pre></div></div>
How to write bikeshed
2020-03-30T13:59:10+05:30
https://mrprajesh.co.in/how-to-bikeshed
<h3 id="install">Install</h3>
<p>As installation required Py3.7, decided not to install locally.</p>
<h3 id="so-lets-use-curl--online">So, lets use Curl + Online</h3>
<p>In 3 Steps,</p>
<ul>
<li>Let us create Makefile</li>
<li>and sample.bs</li>
<li>which generates HTML file!</li>
</ul>
<pre>
bikeshed/
├── build
│ └── sample.html
├── Makefile
└── sample.bs
</pre>
<h4 id="step-1">Step 1</h4>
<p><code class="language-plaintext highlighter-rouge">Makefile</code> contents. <a href="https://github.com/brycelelbach/wg21_p2145_evolving_cpp_remotely/blob/master/Makefile">Thanks</a> Bryce.</p>
<pre>
BUILDDIR = build
all: remote
setup:
mkdir -p $(BUILDDIR)/
remote: setup
find . -maxdepth 1 -name "*.bs" -type f | sed 's/\.bs$$//' | xargs -I{} -t -n 1 sh -c "curl https://api.csswg.org/bikeshed/ -F force=1 -F file=@{}.bs > $(BUILDDIR)/\`basename {}\`.html"
local: setup
find . -maxdepth 1 -name "*.bs" -type f | sed 's/\.bs$$//' | xargs -I{} -t -n 1 sh -c "bikeshed -f spec {}.bs $(BUILDDIR)/\`basename {}\`.html"
clean:
rm $(BUILDDIR)/*
rmdir $(BUILDDIR)
</pre>
<h4 id="step-2">Step 2</h4>
<p><code class="language-plaintext highlighter-rouge">sample.bs</code> contents. Thanks to quick start <a href="https://github.com/tabatkins/bikeshed/blob/master/docs/quick-start.md#starting-the-spec">guide</a>.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o"><</span><span class="n">pre</span> <span class="n">class</span><span class="o">=</span><span class="err">'</span><span class="n">metadata</span><span class="err">'</span><span class="o">></span>
<span class="n">Title</span><span class="o">:</span> <span class="n">Your</span> <span class="n">Spec</span> <span class="n">Title</span>
<span class="n">Shortname</span><span class="o">:</span> <span class="n">your</span><span class="o">-</span><span class="n">spec</span>
<span class="n">Level</span><span class="o">:</span> <span class="mi">1</span>
<span class="n">Status</span><span class="o">:</span> <span class="n">ED</span>
<span class="n">Group</span><span class="o">:</span> <span class="n">WGNAMEORWHATEVER</span>
<span class="n">URL</span><span class="o">:</span> <span class="n">http</span><span class="o">:</span><span class="c1">//example.com/url-this-spec-will-live-at</span>
<span class="n">Editor</span><span class="o">:</span> <span class="n">Your</span> <span class="n">Name</span><span class="p">,</span> <span class="n">Your</span> <span class="n">Company</span> <span class="n">http</span><span class="o">:</span><span class="c1">//example.com/your-company, your-email@example.com, http://example.com/your-personal-website</span>
<span class="n">Abstract</span><span class="o">:</span> <span class="n">A</span> <span class="kt">short</span> <span class="n">description</span> <span class="n">of</span> <span class="n">your</span> <span class="n">spec</span><span class="p">,</span> <span class="n">one</span> <span class="n">or</span> <span class="n">two</span> <span class="n">sentences</span><span class="p">.</span>
<span class="n">Introduction</span> <span class="p">{</span><span class="err">#</span><span class="n">intro</span><span class="p">}</span>
<span class="o">=====================</span>
<span class="n">Introduction</span> <span class="n">here</span><span class="p">.</span>
</code></pre></div></div>
<h4 id="step-3">Step 3</h4>
<p>Run <code class="language-plaintext highlighter-rouge">make</code> and open your <code class="language-plaintext highlighter-rouge">build/*.html</code> file in browser to view it. Yay!</p>
Rajesh tinkers
2020-03-30T12:52:09+05:30
https://mrprajesh.co.in/rajesh-tinkers
<p>Instead of doing work (needs to be done!) Rajesh keeps tinkering.</p>
<h3 id="bikeshed">Bikeshed</h3>
<p>Happen to see a few C++/HTML standards committee people using <a href="">Bikeshed</a> for writing
drafts/proposal. Got to know from <a href="https://github.com/brycelelbach/wg21_p2145_evolving_cpp_remotely">Bryce</a>
See how it <a href="https://api.csswg.org/bikeshed/?force=1&url=https://raw.githubusercontent.com/brycelelbach/wg21_p2145_evolving_cpp_remotely/master/evolving_cpp_remotely.bs">looks</a>. Just from bs file in git repo.
Cool. Isn’t? May be we can use this for docs?</p>
<p>How to <a href="/blog/how-to-bikeshed.html">bikeshed</a> or <a href="/blog/how-to-bikeshed.html">bikeshed</a>!</p>
<h3 id="html5">HTML5</h3>
<p>I had an impression that HTML5 is a version of HTML standard. But..</p>
<blockquote>
<p>the term “HTML5” is widely used as a buzzword to refer to
<strong>modern webtechnologies</strong>, many of which (though by no means all) are
developed at the <a href="https://whatwg.org/">WHATWG</a>.</p>
</blockquote>
<p>Quite surprised to read this <a href="https://html.spec.whatwg.org/#is-this-html5?">from</a> HTML standard.
BTW, I suspect this is generated using bikeshed!?</p>
<blockquote>
<p>The HTML Living Standard, which is developed by WHATWG, is the official version, while W3C HTML5 is no longer separate from WHATWG</p>
</blockquote>
<p>Now <code class="language-plaintext highlighter-rouge">W3C == WHATWG</code> as said in <a href="https://en.wikipedia.org/wiki/HTML#WHATWG_HTML_versus_HTML5">WIKI</a></p>
<h3 id="markdown">Markdown</h3>
<p>Ever since daring-fireball/John-Gruber introduced mark down. It became so popular.
Everyone liked it because of its simplicity and usability. Even Reddit and GitHub rely on it!</p>
<p>There are other extensions of it.</p>
<ul>
<li><a href="https://daringfireball.net/projects/markdown/">Daring Fireball</a></li>
<li><a href="https://commonmark.org/help/">CommonMark</a></li>
<li><a href="https://guides.github.com/features/mastering-markdown/">GitHub Flavored Markdown (GFM)</a></li>
<li>Some more like Markdown Extra, Pandoc, … // Read <a href="https://en.wikipedia.org/wiki/Markdown">WIKI</a></li>
</ul>
apt-get error in linux mint
2020-03-29T17:46:41+05:30
https://mrprajesh.co.in/apt-get-error-in-linux-mint
<p>The last time when I went to my relatives home which had a good internet connection.
I had faced some issues with <code class="language-plaintext highlighter-rouge">apt-get</code>.</p>
<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">rajz</span><span class="err">@</span><span class="n">LordOfWarriors</span><span class="o">:~</span><span class="err">$</span> <span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">update</span>
<span class="n">Err</span><span class="o">:</span><span class="mi">3</span> <span class="n">http</span><span class="o">:</span><span class="c1">//security.ubuntu.com/ubuntu bionic-security InRelease</span>
<span class="o">**</span><span class="n">Clearsigned</span> <span class="n">file</span> <span class="n">isn</span><span class="err">'</span><span class="n">t</span> <span class="n">valid</span><span class="p">,</span> <span class="n">got</span> <span class="err">'</span><span class="n">NOSPLIT</span><span class="err">'</span> <span class="p">(</span><span class="n">does</span> <span class="n">the</span> <span class="n">network</span>
<span class="n">require</span> <span class="n">authentication</span><span class="o">?</span><span class="p">)</span><span class="o">**</span>
<span class="n">Err</span><span class="o">:</span><span class="mi">4</span> <span class="n">http</span><span class="o">:</span><span class="c1">//mirrors.evowise.com/linuxmint/packages tara InRelease</span>
<span class="o">**</span><span class="n">Clearsigned</span> <span class="n">file</span> <span class="n">isn</span><span class="err">'</span><span class="n">t</span> <span class="n">valid</span><span class="p">,</span> <span class="n">got</span> <span class="err">'</span><span class="n">NOSPLIT</span><span class="err">'</span> <span class="p">(</span><span class="n">does</span> <span class="n">the</span> <span class="n">network</span>
<span class="n">require</span> <span class="n">authentication</span><span class="o">?</span><span class="p">)</span><span class="o">**</span>
<span class="o"><</span><span class="n">snip</span><span class="o">></span>
<span class="n">Reading</span> <span class="n">package</span> <span class="n">lists</span><span class="p">...</span> <span class="n">Done</span>
<span class="n">N</span><span class="o">:</span> <span class="n">See</span> <span class="n">apt</span><span class="o">-</span><span class="n">secure</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span> <span class="n">manpage</span> <span class="k">for</span> <span class="n">repository</span> <span class="n">creation</span> <span class="n">and</span> <span class="n">user</span>
<span class="n">configuration</span> <span class="n">details</span><span class="p">.</span>
<span class="n">N</span><span class="o">:</span> <span class="n">Updating</span> <span class="n">from</span> <span class="n">such</span> <span class="n">a</span> <span class="n">repository</span> <span class="n">can</span><span class="err">'</span><span class="n">t</span> <span class="n">be</span> <span class="n">done</span> <span class="n">securely</span><span class="p">,</span> <span class="n">and</span> <span class="n">is</span>
<span class="n">therefore</span> <span class="n">disabled</span> <span class="n">by</span> <span class="k">default</span><span class="p">.</span>
<span class="n">E</span><span class="o">:</span> <span class="n">The</span> <span class="n">repository</span> <span class="err">'</span><span class="n">http</span><span class="o">:</span><span class="c1">//security.ubuntu.com/ubuntu bionic-security</span>
<span class="n">InRelease</span><span class="err">'</span> <span class="n">is</span> <span class="n">no</span> <span class="n">longer</span> <span class="kt">signed</span><span class="p">.</span>
<span class="n">E</span><span class="o">:</span> <span class="n">Failed</span> <span class="n">to</span> <span class="n">fetch</span> <span class="n">http</span><span class="o">:</span><span class="c1">//security.ubuntu.com/ubuntu/dists/bionic-security/InRelease</span>
<span class="n">Clearsigned</span> <span class="n">file</span> <span class="n">isn</span><span class="err">'</span><span class="n">t</span> <span class="n">valid</span><span class="p">,</span> <span class="n">got</span> <span class="err">'</span><span class="n">NOSPLIT</span><span class="err">'</span> <span class="p">(</span><span class="n">does</span> <span class="n">the</span> <span class="n">network</span> <span class="n">require</span> <span class="n">authentication</span><span class="o">?</span><span class="p">)</span>
<span class="n">N</span><span class="o">:</span> <span class="n">See</span> <span class="n">apt</span><span class="o">-</span><span class="n">secure</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span> <span class="n">manpage</span> <span class="k">for</span> <span class="n">repository</span> <span class="n">creation</span> <span class="n">and</span> <span class="n">user</span> <span class="n">configuration</span> <span class="n">details</span><span class="p">.</span>
<span class="n">N</span><span class="o">:</span> <span class="n">Updating</span> <span class="n">from</span> <span class="n">such</span> <span class="n">a</span> <span class="n">repository</span> <span class="n">can</span><span class="err">'</span><span class="n">t</span> <span class="n">be</span> <span class="n">done</span> <span class="n">securely</span><span class="p">,</span>
<span class="n">and</span> <span class="n">is</span> <span class="n">therefore</span> <span class="n">disabled</span> <span class="n">by</span> <span class="k">default</span><span class="p">.</span>
<span class="n">E</span><span class="o">:</span> <span class="n">The</span> <span class="n">repository</span> <span class="err">'</span><span class="n">http</span><span class="o">:</span><span class="c1">//mirrors.evowise.com/linuxmint/packages tara InRelease'</span>
<span class="n">is</span> <span class="n">no</span> <span class="n">longer</span> <span class="kt">signed</span><span class="p">.</span>
<span class="n">E</span><span class="o">:</span> <span class="n">Failed</span> <span class="n">to</span> <span class="n">fetch</span> <span class="n">http</span><span class="o">:</span><span class="c1">//mirrors.evowise.com/linuxmint/packages/dists/tara/InRelease</span>
<span class="n">Clearsigned</span> <span class="n">file</span> <span class="n">isn</span><span class="err">'</span><span class="n">t</span> <span class="n">valid</span><span class="p">,</span> <span class="n">got</span> <span class="err">'</span><span class="n">NOSPLIT</span><span class="err">'</span> <span class="p">(</span><span class="n">does</span> <span class="n">the</span> <span class="n">network</span> <span class="n">require</span> <span class="n">authentication</span><span class="o">?</span><span class="p">)</span>
<span class="o"><</span><span class="n">snip</span><span class="o">></span>
</code></pre></div></div>
<ul>
<li>I tried a lot changing the servers in sources softwares.</li>
<li>But, the solution was simple. The network had an authentication for the internet from ISP.</li>
<li>When I switched to the other/Mobile network.</li>
<li>
<table>
<tbody>
<tr>
<td>This problem got resolved. :-</td>
<td>wierd!</td>
</tr>
</tbody>
</table>
</li>
</ul>
New technologies in web/mobile/GUI Application development
2020-03-29T17:09:54+05:30
https://mrprajesh.co.in/new-tech-mobile-web-app
<p>There is angular js and node js – java script based front-end web/GUI apps.
Similarly, on mobile we need separated development environment for Android and iOS.
Devs use Android studio and Apple’s Software etc.But, then there were apps which does both but it is not very flexible as native tools.</p>
<p>There are some <em>new</em> technologies (at least to me) where you can create
web, desktop, mobile (andriod+ios) in a single development, open-source mobile application framework.</p>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Flutter_(software)">Flutter</a></li>
<li><a href="https://en.wikipedia.org/wiki/React_Native">React Native</a></li>
<li><a href="https://en.wikipedia.org/wiki/Ionic_(mobile_app_framework)">IONIC</a></li>
</ul>
<p>These kind of hybrid-development will surely save a “lot” of time.</p>
<p>Previously, I was introduced to <a href="https://en.wikipedia.org/wiki/Electron_(software_framework)">electron</a> framework which creates an universal GUI application irrespective of the operating system (Windows, Linux, Mac). It used HTML5 + Chromium engine.</p>
<p>Nice to see! world is changing so fast. I am rarely catching up these days.</p>
Searching jekyll posts and enabling tags in GitHub pages
2020-03-29T16:42:59+05:30
https://mrprajesh.co.in/search-jekyll-post-content
<h3 id="search-post">Search Post</h3>
<p>Ronv’s Sidey theme already had the search ability; But, was not searching post’s content.
It is using the <a href="https://github.com/christian-fei/Simple-Jekyll-Search">Java script</a> search.
It has nice <a href="https://github.com/christian-fei/Simple-Jekyll-Search/wiki#enabling-full-text-search">wiki</a> which listed all the options.</p>
<p>In the <code class="language-plaintext highlighter-rouge">search.json</code> file add the below line to enable it!</p>
<div class="language-cpp highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="s">"content"</span> <span class="o">:</span> <span class="p">{{</span> <span class="n">post</span><span class="p">.</span><span class="n">content</span> <span class="o">|</span> <span class="n">jsonify</span> <span class="p">}}</span>
</code></pre></div></div>
<h3 id="jekyll-tags-in-github-pages">Jekyll Tags in Github Pages</h3>
<p>I have explained the issue and my workaround for this. Sometimes the solution can be
<a href="https://github.com/mrprajesh/blog/issues/4">simple</a>.</p>
War against corona virus disease (COVID) 2019
2020-03-29T15:10:24+05:30
https://mrprajesh.co.in/stop-corono-tn
<p>We are entering stage 3.The is a call for volunteers at various levels
namely India, Tamil Nadu, Chennai, and even IT volunteers.</p>
<h3 id="volunteers">Volunteers</h3>
<ul>
<li><a href="https://self4society.mygov.in/volunteer/">India</a></li>
<li><a href="https://stopcorona.xenovex.com/login">TN</a></li>
<li><a href="http://www.chennaicorporation.gov.in/relief_2016/sel_grp.htm">Chennai</a></li>
<li><a href="https://tnega.tn.gov.in/volunteers/login">IT/E-Gov</a></li>
<li><a href="https://stopcoronatn.in/files/COVID-19-Volunteers_List_28.03.2020_3_Pages_407_KB.pdf">STATS - TN</a></li>
</ul>
<h3 id="tn-has-exclusive-links-for-covid-19">TN has exclusive links for COVID-19</h3>
<ul>
<li><a href="https://stopcoronatn.in/">https://stopcoronatn.in</a></li>
<li><a href="https://stopcoronatn.in/dailybulletin.html">Daily TN updates</a></li>
<li><a href="https://stopcoronatn.in/healthadvisory.html">Posters</a></li>
<li><a href="https://stopcoronatn.in/importantinformation.html">IMP updates</a></li>
<li><a href="https://twitter.com/NHM_TN">NHM - TN</a></li>
<li><a href="https://twitter.com/Vijayabaskarofl">Health Minister</a></li>
<li><a href="https://www.facebook.com/tamilnadunhm/?ti=as">Facebook</a></li>
<li><a href="https://www.youtube.com/channel/UCey5XaVBUChYMfsBcpcxeuw/featured?view_as=subscriber">YouTube</a></li>
<li><a href="https://t.me/TN_Together_AgainstCorona">Telegram Group</a></li>
</ul>
<h3 id="challenges">Challenges</h3>
<ul>
<li><a href="https://innovate.mygov.in/covid19/">India</a> last day 31-Mar</li>
<li><a href="https://www.mygov.in/group-issue/share-your-ideas-suggestions-help-fight-coronavirus/?utm_source=webcampaign&group_issue&285571">BrainStrom Ideas to combat</a></li>
<li><a href="https://fold.it/portal/node/2008963">Fold.it</a></li>
<li><a href="https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge">Kaggle Challenge</a></li>
</ul>
<h3 id="ias-officers-are-doing-a-very-good-job">IAS Officers are doing a very good job</h3>
<ul>
<li>I have created a twitter list where you can see <a href="https://twitter.com/i/lists/1243768845015240705">their actions</a></li>
</ul>
Corona, origin, story, and some links
2020-03-19T22:52:50+05:30
https://mrprajesh.co.in/corono-virus-pedia
<h2 id="originated">Originated</h2>
<ul>
<li>The 2019 novel coronavirus was identified in Wuhan, Hubei province of China</li>
<li>People were dying of an unknown disease causing pnuemonia</li>
<li>The first case may be occurred on/after 17-Nov-2019</li>
<li>China notified WHO, 31-Dec-2019</li>
<li>Majority of the case had some connections to Wuhan wild-life market</li>
<li>China shutdown Wuhan and closed-down sea food wet market</li>
<li>International countries restricted their travelling to/from China</li>
<li>First death in China <a href="https://www.aljazeera.com/news/2020/01/timeline-china-coronavirus-spread-200126061554884.html">9-Jan-2020</a> announced on 11-Jan.</li>
<li>On 30-Jan-2020 WHO declared coronavirus a global emergency</li>
<li>On 11-Mar-2020 WHO declared pandemic</li>
</ul>
<h2 id="naming">Naming</h2>
<ul>
<li><code class="language-plaintext highlighter-rouge">2019-nCOV</code> or <code class="language-plaintext highlighter-rouge">2019 novel coronavirus</code> is initial temporary name</li>
<li>It is a novel type in human coronavirus <a href="https://en.wikipedia.org/wiki/Coronavirus#Human_coronaviruses">family</a></li>
<li>cornavirus is amoung the viruses that causes common cold</li>
<li>This is the 7th type</li>
<li>On 11-Feb-2020 International Committee on Taxonomy of Viruses (ICTV) named virus a <code class="language-plaintext highlighter-rouge">SAR-COV-2</code></li>
<li>due to the similarity with 2003 SARS virus</li>
<li>disease as coronavirus disease (COVID-19)</li>
<li>virus as Severe acute respiratory syndrome coronavirus 2 (SARS-CoV-2)</li>
<li>similar as HIV is virus; AIDS is disease</li>
<li>WHO <a href="https://www.who.int/emergencies/diseases/novel-coronavirus-2019/technical-guidance/naming-the-coronavirus-disease-(covid-2019)-and-the-virus-that-causes-it">call is</a> as
<blockquote>
<p>From a risk communications perspective, using the name SARS can have unintended consequences in terms of creating unnecessary fear for some populations, especially in Asia which was worst affected by the SARS outbreak in 2003.
For that reason and others, WHO has begun referring to the virus as “the virus responsible for COVID-19” or “the COVID-19 virus” when communicating with the public.</p>
</blockquote>
</li>
</ul>
<h2 id="virus-origin">Virus origin</h2>
<ul>
<li>Possibly mutated from bat and then maybe pangolin</li>
<li>Then to a human</li>
<li>Definitely Zoonotic</li>
<li>Human-human transmission</li>
</ul>
<h2 id="characteristics">Characteristics</h2>
<ul>
<li>Respiratory disease - affects tissues in the lungs.</li>
<li>
<p>It has a R0 factor of 1.4-2.5 as said <a href="https://www.who.int/news-room/detail/23-01-2020-statement-on-the-meeting-of-the-international-health-regulations-(2005)-emergency-committee-regarding-the-outbreak-of-novel-coronavirus-(2019-ncov)">here</a></p>
</li>
<li>It is highly contagious - transmitted from person affect</li>
<li>Aerosol, contacting the Plastic/metal Items and touhcing eye/nose/face/mouth</li>
<li>It is incubation period (time between infection to show symptoms) of 2-14 days.</li>
<li>Fatality rate is 1-7% (varies based on region and age-group)</li>
<li>Affects the elderly persons and immune deficient person (who has high blood pressure, heart disease, lung disease, cancer or diabetes) than the healthy young ones</li>
<li>Common <a href="https://en.wikipedia.org/wiki/Coronavirus_disease_2019#Signs_and_symptoms">Symptoms</a> - Fever, Dry cough, Fatigue, Sputum production, Shortness of breath</li>
</ul>
<h2 id="prevention-measure">Prevention measure</h2>
<ul>
<li>Frequent hand-washing with soap/sanitizer 20 seconds</li>
<li>Cover your mouth/nose when sneezing/coughing; otherwise elbow cough</li>
<li>Use mask when visiting an affected person or in hospital</li>
<li>Maintain social distancing (1 meter) with public</li>
<li>Avoid crowded places</li>
</ul>
<h2 id="treatment">Treatment</h2>
<ul>
<li>Unknown!</li>
<li>Symptomatic - Treat the symptoms</li>
<li>Healthy person recovers on their own</li>
<li>Weak persons - Breathing problems/Pneumonia, ARDS,</li>
</ul>
<h2 id="vaccine">Vaccine</h2>
<ul>
<li>Not present</li>
<li>Would take at least 18 months</li>
</ul>
<h2 id="links">Links</h2>
<ul>
<li>WHO <a href="https://www.who.int/emergencies/diseases/novel-coronavirus-2019/situation-reports">situation reports</a></li>
<li>WHO <a href="https://experience.arcgis.com/experience/685d0ace521648f8a5beeeee1b9125cd">dash board</a></li>
<li><a href="https://www.worldometers.info/coronavirus/">Worldometer</a></li>
<li><a href="https://coronavirus.jhu.edu/map.html">Johns Hopkins University.</a></li>
<li><a href="https://www.bing.com/covid">BING</a></li>
<li><a href="https://covidout.in/"><del>India</del></a> - decommissioned</li>
<li><a href="http://covidindiaupdates.in/index.php">India - ICMR</a></li>
<li><a href="https://www.mohfw.gov.in/">Govt. of India</a></li>
</ul>
Hovering anchor tag heading in Jekyll
2020-03-19T20:23:24+05:30
https://mrprajesh.co.in/hovering-anchor-tags-headings
<p>I like when (sub)heading has anchor links on a long blog post.</p>
<h2 id="this-is-an-example">This is an example</h2>
<p>Can you see a link for the above heading? Try moving the cursor over the heading</p>
<h3 id="how-to-achieve-it">How to achieve it?</h3>
<ul>
<li>in <code class="language-plaintext highlighter-rouge">_layouts/default.html</code> after html tag</li>
</ul>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><html></span>
<span class="nt"><script </span><span class="na">src=</span><span class="s">"https://cdn.jsdelivr.net/npm/anchor-js/anchor.min.js"</span><span class="nt">></span>
<span class="nt"></script></span>
...
</code></pre></div></div>
<ul>
<li>and just before <code class="language-plaintext highlighter-rouge"></body></code></li>
</ul>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>...
<span class="nt"><script></span>
<span class="nx">anchors</span><span class="p">.</span><span class="nf">add</span><span class="p">();</span>
<span class="nt"></script></span>
<span class="nt"></body></span>
</code></pre></div></div>
<h2 id="have-customized-it">Have customized it?</h2>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><style></span>
<span class="nc">.anchorjs-link</span> <span class="p">{</span>
<span class="nl">color</span><span class="p">:</span> <span class="m">#aaa</span><span class="p">;</span>
<span class="p">}</span>
<span class="nc">.anchorjs-link</span><span class="nd">:hover</span> <span class="p">{</span>
<span class="nl">color</span><span class="p">:</span> <span class="m">#ff5231</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt"></style></span>
<span class="nt"><script></span>
<span class="nx">anchors</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">placement</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">left</span><span class="dl">'</span><span class="p">;</span>
<span class="nx">anchors</span><span class="p">.</span><span class="nf">add</span><span class="p">();</span>
<span class="nt"></script></span>
</code></pre></div></div>
<h3 id="references">References</h3>
<ul>
<li>As <a href="https://github.com/allejo/jekyll-anchor-headings">jekyll-anchor-heading</a> did not work</li>
<li><a href="https://www.bryanbraun.com/anchorjs/#installation">AnchorJs</a> helped me</li>
<li>we can anchor <code class="language-plaintext highlighter-rouge">para</code> as well.</li>
</ul>
using "raw" tag in jekyll to view liquid tags
2020-03-19T19:44:39+05:30
https://mrprajesh.co.in/raw-tag-jekyll
<ul>
<li>For example in a <a href="/blog/latex-jekyll.html">post</a>
I mentioned how to enable \(\LaTeX\) in jekyll</li>
<li>at 4th step i said include the below tag.
<blockquote>
<p>{% include mathjax.html %}</p>
</blockquote>
</li>
<li>jekyll did not allow me to <code class="language-plaintext highlighter-rouge">include</code> above line into <code class="language-plaintext highlighter-rouge">code blocks</code> in post.</li>
<li>that is where I found this <code class="language-plaintext highlighter-rouge">raw</code> tag to be very helpful. use as below</li>
</ul>
<div class="language-cpp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="o">%</span> <span class="n">raw</span> <span class="o">%</span><span class="p">}</span>
<span class="p">{</span><span class="o">%</span> <span class="n">include</span> <span class="n">mathjax</span><span class="p">.</span><span class="n">html</span> <span class="o">%</span><span class="p">}</span>
<span class="p">{</span><span class="o">%</span> <span class="n">endraw</span> <span class="o">%</span><span class="p">}</span>
</code></pre></div></div>
<p>Alternatively, we can disable liquid processing (jekyll v4.0+) in the post’s front matter use</p>
<p><code class="language-plaintext highlighter-rouge">render_with_liquid: false</code></p>
<ul>
<li>see more <a href="https://jekyllrb.com/docs/liquid/tags/">here</a>.</li>
</ul>
How to add mins to read in jekyll post like medium
2020-03-19T18:53:53+05:30
https://mrprajesh.co.in/add-min-read-to-jekyll
<p>Edit the <code class="language-plaintext highlighter-rouge">_layouts/post.html</code> and place below lines appropriately.</p>
<blockquote>
<p>{% assign words = content | number_of_words %}</p>
<p>{{ words | plus:179 | divided_by:180 }} min read</p>
</blockquote>
<h2 id="references">References</h2>
<ul>
<li>I got this idea from <a href="https://carlosbecker.com/posts/jekyll-reading-time-without-plugins">Carlos Becker’s post</a></li>
<li>He has used <code class="language-plaintext highlighter-rouge">if-else</code></li>
<li>Whereas I have <strong>avoided</strong> that using <code class="language-plaintext highlighter-rouge">ceil(words/180)</code> i.e same as <code class="language-plaintext highlighter-rouge">(words+179)/180</code></li>
</ul>
<blockquote>
<p><span class="reading-time" title="Estimated read time"></span></p>
<p>{% assign words = content | number_of_words %}</p>
<p>{% if words < 360 %}</p>
<p>1 min</p>
<p>{% else %}</p>
<p>{{ words | divided_by:180 }} mins</p>
<p>{% endif %}</p>
<p></span></p>
</blockquote>
Thrust library and CUDA API
2020-03-18T15:49:47+05:30
https://mrprajesh.co.in/thrust
<p>For long time, I was under the impression that thrust functions can be
invoked only from the main function/Host device. Just got to know that thrust
(v1.8+) fucntion can be invocked inside the kernel</p>
<div class="language-cuda highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">__global__</span> <span class="kt">void</span> <span class="nf">test</span><span class="p">(</span><span class="kt">float</span> <span class="o">*</span><span class="n">d_A</span><span class="p">,</span> <span class="kt">int</span> <span class="n">N</span><span class="p">)</span> <span class="p">{</span>
<span class="kt">float</span> <span class="n">sum</span> <span class="o">=</span> <span class="n">thrust</span><span class="o">::</span><span class="n">reduce</span><span class="p">(</span><span class="n">thrust</span><span class="o">::</span><span class="n">seq</span><span class="p">,</span> <span class="n">d_A</span><span class="p">,</span> <span class="n">d_A</span> <span class="o">+</span> <span class="n">N</span><span class="p">);</span>
<span class="n">printf</span><span class="p">(</span><span class="s">"Device side result = %f</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">sum</span><span class="p">);</span>
<span class="p">}</span>
</code></pre></div></div>
<p><a href="https://stackoverflow.com/a/26784463/2712045">Source: SO link</a></p>
CUDA and its questions
2020-03-18T15:49:43+05:30
https://mrprajesh.co.in/cuda
<p>There we were some question raised during Rupesh’s GPU class today.</p>
<ul>
<li>what is sequence of actions for ‘D[1]=10’ in <code class="language-plaintext highlighter-rouge">cuda</code>/<code class="language-plaintext highlighter-rouge">thrust</code>
<blockquote>
<ul>
<li>first the index operator</li>
<li>in device_vector.h <a href="http://thrust.github.io/doc/device__vector_8h_source.html#l00239">Line 240+290/300</a>
<blockquote>
<p>declare these members for the purpose of Doxygenating them. they actually exist in a derived-from class</p>
</blockquote>
</li>
<li>then vector_base.h <a href="https://github.com/thrust/thrust/blob/master/thrust/detail/vector_base.h#L242">L242</a> <a href="https://github.com/thrust/thrust/blob/master/thrust/detail/vector_base.h#L42">L42</a></li>
<li>then contiguous_storage.h</li>
<li>in thrust::detail::contiguous_storage::reference <a href="https://github.com/thrust/thrust/blob/master/thrust/detail/contiguous_storage.h#L36">L36</a></li>
<li>then operator[] at <a href="https://github.com/thrust/thrust/blob/a33734bdcabd2bb723b7edca0957ebf3e4b387d5/thrust/detail/contiguous_storage.inl#L173">line173</a></li>
</ul>
</blockquote>
</li>
</ul>
<blockquote>
<p><strong>CAUTION:</strong> Not sure about device_reference is focus!? <a href="https://github.com/thrust/thrust/blob/7df7efe3542a0ab549530bc478467320467e0094/thrust/device_reference.h#L290">L290</a>
device_reference.inl <a href="https://github.com/thrust/thrust/blob/7df7efe3542a0ab549530bc478467320467e0094/thrust/detail/device_reference.inl#L28">L2+42</a>
reference.h <a href="https://github.com/thrust/thrust/blob/master/thrust/detail/reference.h#L82">L82</a>
reference.inl at operator= <a href="https://github.com/thrust/thrust/blob/master/thrust/detail/reference.inl#L65">L65</a></p>
</blockquote>
<ul>
<li>Why is the <code class="language-plaintext highlighter-rouge">blockDim.z</code> 64 whereas <code class="language-plaintext highlighter-rouge">x</code> and <code class="language-plaintext highlighter-rouge">y</code> is 1024
<blockquote>
<p>That is how it is designed to be in cuda/GPU.</p>
</blockquote>
</li>
<li>Why is <code class="language-plaintext highlighter-rouge">gridDim.y or z</code> is not \(2^{16}\) but \(2^{16}-1\)
<blockquote>
<p>Good question! unknown! Some curious people <a href="https://forums.developer.nvidia.com/t/why-65535-instead-of-65536-at-maximum-size-for-each-griddimension-and-2d-tex-reference/24528">1</a></p>
<blockquote>
<p>Some people <a href="https://forums.developer.nvidia.com/t/grid-dimention-why-65535/6853">2</a>
Since block IDs begin at zero, shouldn’t the maximum dimension therefore be 65536? Having the limit as 65535 allows for block IDs [0, 65534], so we’re losing one ID.</p>
</blockquote>
</blockquote>
</li>
<li>Does GTX 680 has limit of 2048 threads per thread block?
<blockquote>
<p>I think NO. See <a href="https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#features-and-technical-specifications__technical-specifications-per-compute-capability">this!</a> and <a href="https://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_C_Programming_Guide.pdf">table F2 in Guide v4</a>
From CC v2.0+ it is 1024</p>
</blockquote>
</li>
<li>Valid limits of kernel launches
<blockquote>
<p>There are multiple limits. All must be satisfied.</p>
<blockquote>
<ol>
<li>The maximum number of threads in the block is limited to 1024. This is the product of whatever your threadblock dimensions are (xyz).</li>
<li>The maximum x-dimension is 1024. (1024,1,1) is legal. (1025,1,1) is not legal.</li>
<li>The maximum y-dimension is 1024. (1,1024,1) is legal. (1,1025,1) is not legal.</li>
<li>The maximum z-dimension is 64. (1,1,64) is legal. (2,2,64) is also legal. (1,1,65) is not legal.
Also, threadblock dimensions of 0 in any position are not legal.</li>
</ol>
</blockquote>
<p>Your choice of threadblock dimensions (x,y,z) must satisfy each of the rules 1-4 above.</p>
</blockquote>
</li>
</ul>
<p>Source <a href="https://forums.developer.nvidia.com/t/maximum-number-of-threads-on-thread-block/46392/2">Devtalk</a></p>
<ul>
<li><code class="language-plaintext highlighter-rouge">dim3</code> is actually a struct of <code class="language-plaintext highlighter-rouge">uint3</code>
<blockquote>
<p><code class="language-plaintext highlighter-rouge">int3 make_int3(2,3,4);</code></p>
</blockquote>
</li>
</ul>
How to use Latex / MathJax in Jekyll
2020-03-17T16:12:01+05:30
https://mrprajesh.co.in/latex-jekyll
<ul>
<li>create <code class="language-plaintext highlighter-rouge">_include/mathjax.html</code></li>
<li>add the below code</li>
</ul>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><script </span><span class="na">type=</span><span class="s">"text/x-mathjax-config"</span><span class="nt">></span>
<span class="nx">MathJax</span><span class="p">.</span><span class="nx">Hub</span><span class="p">.</span><span class="nc">Config</span><span class="p">({</span>
<span class="na">extensions</span><span class="p">:</span> <span class="p">[</span>
<span class="dl">"</span><span class="s2">MathMenu.js</span><span class="dl">"</span><span class="p">,</span>
<span class="dl">"</span><span class="s2">MathZoom.js</span><span class="dl">"</span><span class="p">,</span>
<span class="dl">"</span><span class="s2">AssistiveMML.js</span><span class="dl">"</span><span class="p">,</span>
<span class="dl">"</span><span class="s2">a11y/accessibility-menu.js</span><span class="dl">"</span>
<span class="p">],</span>
<span class="na">jax</span><span class="p">:</span> <span class="p">[</span><span class="dl">"</span><span class="s2">input/TeX</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">output/CommonHTML</span><span class="dl">"</span><span class="p">],</span>
<span class="na">TeX</span><span class="p">:</span> <span class="p">{</span>
<span class="na">extensions</span><span class="p">:</span> <span class="p">[</span>
<span class="dl">"</span><span class="s2">AMSmath.js</span><span class="dl">"</span><span class="p">,</span>
<span class="dl">"</span><span class="s2">AMSsymbols.js</span><span class="dl">"</span><span class="p">,</span>
<span class="dl">"</span><span class="s2">noErrors.js</span><span class="dl">"</span><span class="p">,</span>
<span class="dl">"</span><span class="s2">noUndefined.js</span><span class="dl">"</span><span class="p">,</span>
<span class="p">]</span>
<span class="p">}</span>
<span class="p">});</span>
<span class="nx">MathJax</span><span class="p">.</span><span class="nx">Hub</span><span class="p">.</span><span class="nx">Register</span><span class="p">.</span><span class="nc">StartupHook</span><span class="p">(</span><span class="dl">"</span><span class="s2">TeX Jax Ready</span><span class="dl">"</span><span class="p">,</span><span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">TEX</span> <span class="o">=</span> <span class="nx">MathJax</span><span class="p">.</span><span class="nx">InputJax</span><span class="p">.</span><span class="nx">TeX</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">COLS</span> <span class="o">=</span> <span class="nf">function </span><span class="p">(</span><span class="nx">W</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">WW</span> <span class="o">=</span> <span class="p">[];</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">m</span> <span class="o">=</span> <span class="nx">W</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">m</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span>
<span class="p">{</span><span class="nx">WW</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">=</span> <span class="nx">TEX</span><span class="p">.</span><span class="nx">Parse</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nc">Em</span><span class="p">(</span><span class="nx">W</span><span class="p">[</span><span class="nx">i</span><span class="p">])}</span>
<span class="k">return</span> <span class="nx">WW</span><span class="p">.</span><span class="nf">join</span><span class="p">(</span><span class="dl">"</span><span class="s2"> </span><span class="dl">"</span><span class="p">);</span>
<span class="p">};</span>
<span class="nx">TEX</span><span class="p">.</span><span class="nx">Definitions</span><span class="p">.</span><span class="nc">Add</span><span class="p">({</span>
<span class="na">environment</span><span class="p">:</span> <span class="p">{</span>
<span class="na">psmallmatrix</span><span class="p">:</span> <span class="p">[</span><span class="dl">'</span><span class="s1">Array</span><span class="dl">'</span><span class="p">,</span><span class="kc">null</span><span class="p">,</span><span class="dl">'</span><span class="s1">(</span><span class="dl">'</span><span class="p">,</span><span class="dl">'</span><span class="s1">)</span><span class="dl">'</span><span class="p">,</span><span class="dl">'</span><span class="s1">c</span><span class="dl">'</span><span class="p">,</span><span class="nc">COLS</span><span class="p">([</span><span class="mi">1</span><span class="o">/</span><span class="mi">3</span><span class="p">]),</span><span class="dl">"</span><span class="s2">.2em</span><span class="dl">"</span><span class="p">,</span><span class="dl">'</span><span class="s1">S</span><span class="dl">'</span><span class="p">,</span><span class="mi">1</span><span class="p">],</span>
<span class="p">}</span>
<span class="p">});</span>
<span class="p">});</span>
<span class="nt"></script></span>
<span class="nt"><script </span><span class="na">type=</span><span class="s">"text/javascript"</span> <span class="na">async</span>
<span class="na">src=</span><span class="s">"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js"</span><span class="nt">></span>
<span class="nt"></script></span>
</code></pre></div></div>
<ul>
<li>edit <code class="language-plaintext highlighter-rouge">_layouts/default.html</code> add a include line before <code class="language-plaintext highlighter-rouge"></body></code></li>
</ul>
<blockquote>
<p>…</p>
<p>{% include mathjax.html %}</p>
<p></body></p>
</blockquote>
<ul>
<li>that’s it. Enclose math symbols within <code class="language-plaintext highlighter-rouge">$$</code></li>
<li>e.g Some random \(A_{m \times n} \cdot B^{n} = C_n\)
<div class="language-tex highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">$$</span><span class="nb">A</span><span class="p">_{</span><span class="nb">m </span><span class="nv">\times</span><span class="nb"> n</span><span class="p">}</span><span class="nb"> </span><span class="nv">\cdot</span><span class="nb"> B</span><span class="p">^{</span><span class="nb">n</span><span class="p">}</span><span class="nb"> </span><span class="o">=</span><span class="nb"> C</span><span class="p">_</span><span class="nb">n </span><span class="p">$$</span>
</code></pre></div> </div>
</li>
<li>some text \(\TeX\)</li>
</ul>
<h3 id="references">References</h3>
<ul>
<li>Thanks to Arthur O’Dwyer</li>
<li><a href="https://quuxplusone.github.io/blog/2018/08/05/mathjax-in-jekyll/">Blog</a></li>
<li><a href="https://github.com/Quuxplusone/blog/commit/a829f7fae66a51771c30ed259739650524c60e66">Git code</a></li>
</ul>
Some new words - inspired by COVID-19
2020-03-11T19:17:59+05:30
https://mrprajesh.co.in/new-words
<p>In this novel coronavirus season learnt some new words.</p>
<ol>
<li>epidemic
<blockquote>
<p>a widespread occurrence of an infectious disease in a community at a particular time.</p>
</blockquote>
</li>
<li>pandemic
<blockquote>
<p>(of a disease) prevalent over a whole country or the world.</p>
</blockquote>
</li>
<li>Price gouging
<blockquote>
<p>Price gouging is a term referring to when a seller <strong>increases the prices</strong> of goods, to a level <strong>much higher than</strong> is considered <strong>reasonable</strong>, and is considered exploitative, potentially to an unethical extent. Usually this event occurs after a demand or supply shock.</p>
</blockquote>
</li>
<li>Paywall
<blockquote>
<p>A paywall is a method of restricting access to content via a purchase or paid subscription</p>
</blockquote>
</li>
</ol>
<h3 id="example-sentence">Example sentence.</h3>
<p>WHO said COVID-19 disease is epidemic and <del>nearly pandemic</del> officially pandemic today. While sellers are price gouging masks/sanitizing items, nature journal removed the paywall for all research involving coronavirus. Sweet!</p>
Same spelling but different pronunciation.
2020-03-11T10:53:15+05:30
https://mrprajesh.co.in/overseas-pronounciation
<p>So, we know homonyms. Same pronunciation but different spelling/meaning.</p>
<blockquote>
<p>e.g. right and write</p>
</blockquote>
<p>But, this word <strong>overseas</strong> has same spelling but different meaning/pronunciation.</p>
<blockquote>
<p>adverb: overseas; /əʊvəˈsiːz/</p>
<blockquote>
<p>in or to a foreign country, especially one across the sea.
“he spent quite a lot of time working overseas”</p>
</blockquote>
</blockquote>
<blockquote>
<p>adjective: overseas; /ˈəʊvəsiːz/</p>
<blockquote>
<p>from, to, or relating to a foreign country, especially one across the sea.
“overseas trips”</p>
</blockquote>
</blockquote>
<p>Is this also homonyms? Time to see its <a href="https://www.google.com/search?q=Homonyms">definition</a>.
It seems like. Are there more?</p>
Ready, get-set, and go!
2020-03-09T18:58:11+05:30
https://mrprajesh.co.in/check-code-blocks
<p>This is to check if the syntax highlighting is working fine.</p>
<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"> <span class="cp">#include</span> <span class="cpf"><iostream></span><span class="cp">
</span> <span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span><span class="o">*</span> <span class="n">argv</span><span class="p">[]){</span>
<span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o"><<</span> <span class="s">"Hello There!"</span><span class="o"><<</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
<span class="k">return</span> <span class="n">EXIT_SUCCESS</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>
Hello World
2020-03-09T12:39:20+05:30
https://mrprajesh.co.in/helloworld
<p>This is my first post in <a href="https://mrprajesh.github.io/blog">Github.io</a>
blog.</p>