<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Daniel Park</title><link>https://parxd.github.io/posts/</link><description>Recent content in Posts on Daniel Park</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Wed, 24 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://parxd.github.io/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>a learning journey through ML systems</title><link>https://parxd.github.io/posts/a-learning-journey-through-ml-systems/</link><pubDate>Wed, 24 Jun 2026 00:00:00 +0000</pubDate><guid>https://parxd.github.io/posts/a-learning-journey-through-ml-systems/</guid><description>&lt;p&gt;As I approach a little over a year since formally starting my journey of self-learning and stumbling through the world of ML systems, I wanted to look back and recap / document my entire roadmap and the insane rabbit holes I&amp;rsquo;ve fallen through during the past year, and also outline what my goals are for the next couple months.&lt;/p&gt;
&lt;p&gt;The real story started in my sophomore year of college, when I started my project GroundUpNeuralNet, a &lt;em&gt;very&lt;/em&gt; minimal implementation of an MLP library I wrote in C++ after taking a DSA class. At this point, I wasn&amp;rsquo;t very concerned (or knowledgeable) about performance, so I leaned heavily on Eigen for the compute. Nevertheless, I still learned a good deal about multivariate calc, backprop, and just generally how to structure a relatively big C++ project.
You can still play around with it today &lt;a href="https://github.com/Parxd/GroundUpNeuralNet"target="_blank"
 class="inline-flex items-center gap-1"
&gt;here&lt;svg class="h-3 w-3 flex-shrink-0" id="external-link" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/&gt;&lt;/svg&gt;
&lt;/a&gt;, although it only supports linear layers and a handful of activation + loss functions.&lt;/p&gt;</description></item><item><title>CuTe-ly writing an SM86 SGEMM</title><link>https://parxd.github.io/posts/cute-ly-writing-an-sm86-sgemm/</link><pubDate>Thu, 05 Feb 2026 00:00:00 +0000</pubDate><guid>https://parxd.github.io/posts/cute-ly-writing-an-sm86-sgemm/</guid><description>&lt;p&gt;I know what you&amp;rsquo;re thinking. A &lt;code&gt;fp32&lt;/code&gt; GEMM in 2026? For Ampere??&lt;/p&gt;
&lt;p&gt;Yes, SGEMM is rarely ever used these days in the ML space given the massive compute throughput gap between CUDA and tensor cores. For reference, an A100 PCIe&amp;rsquo;s (now almost 6 years old) peak theoretical performance for &lt;code&gt;bf16&lt;/code&gt; is 312 TFLOPs/sec. and 156 TFLOPs/sec. for &lt;code&gt;tf32&lt;/code&gt;, while &lt;code&gt;fp32&lt;/code&gt; sits at a &amp;ldquo;measly&amp;rdquo; 19.5 TFLOPs/sec. With &lt;a href="https://docs.nvidia.com/deeplearning/performance/mixed-precision-training/index.html"target="_blank"
 class="inline-flex items-center gap-1"
&gt;mixed-precision&lt;svg class="h-3 w-3 flex-shrink-0" id="external-link" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/&gt;&lt;/svg&gt;
&lt;/a&gt; training and quantized inference being the norm, GEMM itself is practically never done in &lt;code&gt;fp32&lt;/code&gt; today.&lt;/p&gt;</description></item><item><title>Image Rendering Test</title><link>https://parxd.github.io/posts/image-rendering-test/</link><pubDate>Tue, 16 Jan 2024 22:30:00 +0800</pubDate><guid>https://parxd.github.io/posts/image-rendering-test/</guid><description>&lt;h1 id="image-rendering-test"&gt;Image Rendering Test&lt;/h1&gt;
&lt;p&gt;The Demo comes from &lt;a href="https://www.lightgalleryjs.com/demos/thumbnails/"target="_blank"
 class="inline-flex items-center gap-1"
&gt;LightGallery&lt;svg class="h-3 w-3 flex-shrink-0" id="external-link" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/&gt;&lt;/svg&gt;
&lt;/a&gt;
All images are from &lt;a href="https://unsplash.com/"target="_blank"
 class="inline-flex items-center gap-1"
&gt;Unsplash&lt;svg class="h-3 w-3 flex-shrink-0" id="external-link" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/&gt;&lt;/svg&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="single-image"&gt;Single Image&lt;/h2&gt;
&lt;p&gt;
&lt;figure class="image-figure not-prose my-8" 
 data-lightbox-enabled="true"
 data-gallery-type="auto"&gt;
 &lt;div class="image-container"&gt;
 &lt;img
 src="https://parxd.github.io/posts/image-rendering-test/bundle.avif"
 alt="https://unsplash.com/@danielleone)"
 title="Photo by - Daniel Leone"
 
 
 
 
 loading="lazy"
 decoding="async"
 data-gallery-src="https://parxd.github.io/posts/image-rendering-test/bundle.avif"
 data-gallery-alt="https://unsplash.com/@danielleone)"
 data-gallery-title="Photo by - Daniel Leone" /&gt;&lt;/div&gt;

 &lt;figcaption class="image-caption"&gt;
 Photo by - Daniel Leone
 &lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;</description></item></channel></rss>