<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Hpc on Tyler Collins</title>
    <link>https://www.tk11br.ca/tags/hpc/</link>
    <description>Recent content in Hpc on Tyler Collins</description>
    <generator>Hugo</generator>
    <language>en</language>
    <copyright>2022-2026 Tyler Collins. Content licensed under CC BY-NC 4.0.</copyright>
    <lastBuildDate>Wed, 03 Dec 2025 12:00:00 -0500</lastBuildDate>
    <atom:link href="https://www.tk11br.ca/tags/hpc/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Serial Farms: Package Options and When to Switch to Farming</title>
      <link>https://www.tk11br.ca/posts/serial-farms/</link>
      <pubDate>Wed, 03 Dec 2025 12:00:00 -0500</pubDate>
      <guid>https://www.tk11br.ca/posts/serial-farms/</guid>
      <description>A practical comparison of job arrays and serial-farming tools for running many small jobs on HPC systems.</description>
      <content:encoded><![CDATA[<p>Submitting a few small jobs one at a time is fine. Submitting hundreds that way is annoying for you and hard on the scheduler.</p>
<p>This webinar compared ways to group lots of serial tasks into manageable jobs. I covered when ordinary submissions stop making sense, how array indexes can drive repeated runs, and when it is time to use a serial farm.</p>
<iframe src="https://www.youtube.com/embed/sMZ13XJQiWo" title="Serial Farms: Package Options and When to Switch to Farming" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<h2 id="abstract">Abstract</h2>
<p>Small jobs are convenient to submit individually, but at scale they can overload a scheduler, inflate queue times, and ultimately reduce throughput. This webinar examines practical strategies for consolidating large numbers of short tasks, including job arrays, task-bundling techniques, and wrapper-based aggregation. We will discuss how these approaches differ in overhead, portability, scheduler behavior, and job-failure handling. The session will also provide guidance on recognizing when packaging options no longer yield sufficient throughput and when transitioning to a serial-farming model becomes advantageous. Serial farms can mitigate scheduler pressure, improve wait times on busy clusters, and offer more predictable performance. Examples will be provided throughout the webinar and shared on GitHub for future reference.</p>
<p>The <a href="https://helpwiki.sharcnet.ca/wiki/Online_Seminars">SHARCNET seminar archive</a> has the event listing.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Diagnosing Wasted Resources from User-Facing Portals</title>
      <link>https://www.tk11br.ca/posts/diagnosing-wasted-resources/</link>
      <pubDate>Wed, 14 Aug 2024 12:00:00 -0400</pubDate>
      <guid>https://www.tk11br.ca/posts/diagnosing-wasted-resources/</guid>
      <description>A walkthrough of using national cluster portals to investigate wait times, priority, and wasted CPU, memory, and GPU allocations.</description>
      <content:encoded><![CDATA[<p>A slow job and a slow queue are different problems. This talk was about using the national cluster portals to figure out which one you&rsquo;re dealing with.</p>
<p>I covered job history, account priority, wait times, and resource-use reports. The examples looked at CPU, memory, and GPU requests that did not match the work being done. The point was to check the evidence before changing a job request.</p>
<iframe src="https://www.youtube.com/embed/RQaXX2yrED0" title="Diagnosing Wasted Resources from User-Facing Portals on the National Clusters" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<h2 id="abstract">Abstract</h2>
<p>Researchers often leave resources on the table when specifying their job requirements on the national systems. This talk builds on previous sessions and uses the Digital Research Alliance of Canada&rsquo;s User Facing Portals to explore what different types of jobs look like when they waste resources. Demonstrations will include interactive jobs, parallel jobs, GPU workflows, and more. With more accurate job specifications, researchers can expect shorter wait times and more throughput on any general-purpose system.</p>
<p><a href="https://helpwiki.sharcnet.ca/wiki/images/9/9e/DiagnosingWaste.pdf">Download the slides</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Modern Approaches to Profiling in Python with Scalene</title>
      <link>https://www.tk11br.ca/posts/scalene/</link>
      <pubDate>Wed, 03 May 2023 12:00:00 -0400</pubDate>
      <guid>https://www.tk11br.ca/posts/scalene/</guid>
      <description>A practical introduction to profiling Python CPU, memory, and GPU use with Scalene on HPC systems.</description>
      <content:encoded><![CDATA[<p>Before rewriting slow Python or moving it into Cython, it helps to find out what is actually slow.</p>
<p>This Compute Ontario Colloquium was an introduction to <a href="https://github.com/plasma-umass/scalene">Scalene</a>. Scalene separates time spent in Python from time spent in native libraries, and it can also profile memory and GPU use. I ran it on the Alliance systems from a Jupyter notebook, then compared native Python, vectorized code, Cython, and just-in-time compilation.</p>
<iframe src="https://www.youtube.com/embed/Uq60vknROcM" title="Modern Approaches to Profiling in Python with Scalene" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<h2 id="abstract">Abstract</h2>
<p>Python is a language developers choose to write in for convenience rather than speed. However, speed can be recovered by offloading calculations to libraries which leverage lower-level languages like NumPy, Cython, and more. Scalene is a high-performance CPU, GPU, and memory profiler which can illustrate where code should be passing calculations to other libraries for significant increases in speed. Scalene also includes support for Jupyter Notebooks, OpenAI suggestions for vectorizing code, as well as a significantly lower overhead and higher accuracy than other profilers. This talk will introduce the concepts required for understanding why external libraries are faster than native Python, interactions with approaches such as Cython and just-in-time compilers, as well as a live demonstration of Scalene on the Alliance systems inside of a Jupyter Notebook. Familiarity with Python, virtual environments, and Jupyter notebooks will be assumed.</p>
<p>The <a href="https://github.com/Andesha/sharcnet-scalene">slides, notebooks, and examples are available on GitHub</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>ViewClust: Early Days</title>
      <link>https://www.tk11br.ca/posts/viewclust1/</link>
      <pubDate>Tue, 22 Mar 2022 13:23:54 -0400</pubDate>
      <guid>https://www.tk11br.ca/posts/viewclust1/</guid>
      <description>Early notes on packaging ViewClust and ViewClust-Vis for cluster metrics and HPC usage analysis.</description>
      <content:encoded><![CDATA[<p>In the early days of working for <a href="https://www.sharcnet.ca/my/front/">SHARCNET</a>, my colleague and I decided to standardize how cluster metrics were computed across our internal data frames. As mentioned in a <a href="/posts/pandas1/">previous post</a>, part of the solution was pandas.</p>
<p>The second part was figuring out how to deploy the package for others to contribute to, as well as install on their own specific HPC clusters. Some quick searching revealed that <a href="https://pypi.org/">PyPI</a> and <a href="https://pip.pypa.io/en/stable/"><code>pip</code></a> were the way to go.</p>
<p>To make a long story short, here are a few references that made it approachable:</p>
<ul>
<li><a href="https://pip.pypa.io/en/latest/cli/pip_install/#cmdoption-e">Editable/interactive mode for pip</a>.</li>
<li><a href="https://cookiecutter.readthedocs.io/en/1.7.2/">Cookiecutter</a>.</li>
<li><a href="https://docs.python.org/3/tutorial/venv.html">Virtual environments</a>.</li>
</ul>
<p>The package is still in use today inside SHARCNET and has also received development support from <a href="https://www.westgrid.ca/">WestGrid</a>, <a href="https://www.calculquebec.ca/en/">Calcul Québec</a>, and <a href="https://mila.quebec/en/">MILA</a>.</p>
<p>ViewClust can be found on <a href="https://github.com/Andesha/ViewClust">GitHub</a>. Its cousin package, <a href="https://github.com/Andesha/ViewClust-Vis">ViewClust-Vis</a>, implements several summary figures.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Conquering the Scheduler</title>
      <link>https://www.tk11br.ca/posts/conq_sched/</link>
      <pubDate>Tue, 22 Mar 2022 00:50:54 -0400</pubDate>
      <guid>https://www.tk11br.ca/posts/conq_sched/</guid>
      <description>A talk about choosing job configurations and scheduler strategies for responsive HPC workloads.</description>
      <content:encoded><![CDATA[<p>Coming from a slightly different angle this time, I found that researchers were often isolating themselves to fewer resources on HPC systems by not investigating what the node feature mixture looked like.</p>
<p>As such, this talk was created to help direct potentially abstract development efforts toward optimizing for the feature sets that are most available on an HPC cluster.</p>
<p>Below is my abstract for the talk as well as the recording:</p>
<iframe src="https://www.youtube.com/embed/lPsp97ZGoF8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<p>&ldquo;Determining the optimal job configuration for a given workload on HPC systems can be a difficult problem. Researchers often have different job needs, different responsiveness requirements, and different scales. This webinar will discuss these differences and how to investigate making the scheduler as responsive as possible. Topics will include whole node scheduling, by core MPI jobs, GLOST, META, and more. This presentation will assume basic knowledge of job submission, and the Linux environment. Practical examples will be discussed and used as introductions to new tools to maximize performance on the general purpose systems. Open questions will be allowed at the end of the seminar.&rdquo;</p>
]]></content:encoded>
    </item>
    <item>
      <title>Cython: A First Look</title>
      <link>https://www.tk11br.ca/posts/cython/</link>
      <pubDate>Sun, 20 Mar 2022 14:40:38 -0400</pubDate>
      <guid>https://www.tk11br.ca/posts/cython/</guid>
      <description>A first look at using Cython to recover performance when Python code needs to run faster.</description>
      <content:encoded><![CDATA[<p>Back when I first got hired at SHARCNET, I used a lot of Python. I mean a lot. This meant I quickly became the lightning rod for all Python-related questions and commentary.</p>
<p>During a fun Friday chat, a colleague remarked that Python was, on average, 40x slower than C++. I defended my current language of choice, saying it was better than that, surely. To make a long story short, I was wrong. It really is about 40x slower depending on the problem. Determined to prove myself capable, and my language of choice a bit more defensible, I decided to look into ways to make Python faster.</p>
<p>I eventually landed on Cython. It turns out the best way to make Python faster was to use as much C++ as possible.</p>
<p>Below is my abstract for the talk as well as the recording:</p>
<iframe src="https://www.youtube.com/embed/y6bKDKFavPA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<p>&ldquo;Often we write programs in Python for convenience, not for speed. When work becomes elevated to High Performance Computing (HPC) environments, speed once again becomes a concern. Cython is an extension of Python which allows functions to be compiled as C (or C++) and recover the significant performance trade-offs of Python. Cython achieves this by supporting calling C functions, declaring of type information, as well as providing access to C++ STL functionality. Popular packages and libraries that take advantage of Cython include: TensorFlow, OpenCV, NumPy, Pandas, and more. This webinar will cover a basic introduction to Cython, a demo translating vanilla Python into Cython, followed by a short demo of how to run Cython in our own Compute Canada HPC environments. Experience with Python will be expected, while familiarity with C/C++ and Jupyter notebooks will be helpful. Webinar material and code will be made available on GitHub for reference.&rdquo;</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
