<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Gpu on tsvinc</title>
		<link>https://tsvinc.dev/tags/gpu/</link>
		<description>Recent content in Gpu on tsvinc</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<lastBuildDate>Mon, 26 Oct 2026 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://tsvinc.dev/tags/gpu/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Load gpu_unlock before nvidia on Bazzite for an RTX 3090</title>
				<link>https://tsvinc.dev/guides/gpu-unlock-on-bazzite/</link>
				<pubDate>Mon, 26 Oct 2026 00:00:00 +0000</pubDate>
				<guid>https://tsvinc.dev/guides/gpu-unlock-on-bazzite/</guid>
				<description>&lt;p&gt;This installs the &lt;code&gt;gpu_unlock&lt;/code&gt; kernel module on Bazzite so that it runs from the initramfs, before &lt;code&gt;nvidia&lt;/code&gt; binds the card, and leaves an RTX 3090 with full-rate FP16/BF16 (FP32-accumulate) and TF32 tensor math on every boot that carries the kernel option &lt;code&gt;gpu_unlock.targets=all&lt;/code&gt;.&lt;/p&gt;&#xA;&#xA;&lt;dl class=&#34;guide-scope&#34;&gt;&lt;div class=&#34;guide-scope-row&#34;&gt;&lt;dt&gt;Tested on&lt;/dt&gt;&lt;dd&gt;Bazzite 44.20261023 (&lt;code&gt;bazzite-nvidia-open&lt;/code&gt; image, kernel 7.2.9-ogc3.1.fc44), NVIDIA open driver 615.78.08, RTX 3090 (&lt;code&gt;10de:2204&lt;/code&gt;) with VBIOS 94.02.26.80.8C, Secure Boot off; gpu-unlock at upstream commit &lt;code&gt;af28cbb&lt;/code&gt;, NVIDIA firmware pin 610.43.03 (2026-10-26).&lt;/dd&gt;&lt;/div&gt;&lt;div class=&#34;guide-scope-row is-gap&#34;&gt;&lt;dt&gt;Not verified&lt;/dt&gt;&lt;dd&gt;the redo after an image update brings a new kernel (none has arrived yet); the file-removal half of Undo; the login check on a real failed boot (tested with its override variables only); Secure Boot; any card other than this one RTX 3090; the boot-menu keys in Recovery come from Bazzite&#39;s docs.&lt;/dd&gt;&lt;/div&gt;&lt;div class=&#34;guide-scope-row&#34;&gt;&lt;dt&gt;Needs&lt;/dt&gt;&lt;dd&gt;a login user that can read the kernel log with &lt;code&gt;journalctl -k&lt;/code&gt; (on the tested box: a member of &lt;code&gt;wheel&lt;/code&gt;); an rpm-ostree image that puts &lt;code&gt;nvidia&lt;/code&gt; in its initramfs (Bazzite&#39;s &lt;code&gt;nvidia&lt;/code&gt; and &lt;code&gt;nvidia-open&lt;/code&gt; images do); a GA102/GA103/GA104/GA106 GeForce card from the upstream list; sudo; about 340 MB of downloads; a keyboard on the box to reach the hidden boot menu.&lt;/dd&gt;&lt;/div&gt;&lt;div class=&#34;guide-scope-row&#34;&gt;&lt;dt&gt;Time&lt;/dt&gt;&lt;dd&gt;30 min (plus one full power off).&lt;/dd&gt;&lt;/div&gt;&lt;div class=&#34;guide-scope-row&#34;&gt;&lt;dt&gt;Risk&lt;/dt&gt;&lt;dd&gt;if the unlock fails partway, the card can stay unusable until a full power off; on a single-GPU box that is a black screen, recovered from the boot menu (Recovery below). Reversible: the option lives in one deployment, the speed selectors do not survive a power off. Step 11 (optional) removes the rollback entry for good.&lt;/dd&gt;&lt;/div&gt;&lt;/dl&gt;&#xA;&lt;p&gt;The steps replace upstream&#39;s &lt;code&gt;make install&lt;/code&gt; (DKMS plus packages), which cannot work on rpm-ostree: &lt;code&gt;/usr&lt;/code&gt; is read-only, and the image&#39;s prebuilt initramfs loads &lt;code&gt;nvidia&lt;/code&gt; before anything on the root file system runs. Here the module, its firmware and a loader script live in &lt;code&gt;/etc&lt;/code&gt;, &lt;code&gt;rpm-ostree initramfs-etc&lt;/code&gt; adds them to the initramfs as an overlay, and a &lt;code&gt;modprobe.d&lt;/code&gt; &lt;code&gt;install&lt;/code&gt; rule runs the loader before every load of &lt;code&gt;nvidia&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The benchmark said it was waiting. Once.</title>
				<link>https://tsvinc.dev/posts/bench-said-waiting-once/</link>
				<pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate>
				<guid>https://tsvinc.dev/posts/bench-said-waiting-once/</guid>
				<description>&lt;p&gt;At 12:36 on 25 October the proxy learned to see the A9&#39;s benchmark between two of its jobs. At 12:58 it learned to see the benchmark waiting behind the proxy&#39;s own engine. At 13:14 it learned that the benchmark mentions the waiting exactly once. At 13:59 it learned that once means once for the whole queue, not once per job. Four commits on a feature branch in 83 minutes, and each one found somewhere else the benchmark could be. Four more review passes went over them before any of it shipped, as v0.3.1, at 15:16.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The first engine on the A9 was started to be stopped</title>
				<link>https://tsvinc.dev/posts/started-to-be-stopped/</link>
				<pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate>
				<guid>https://tsvinc.dev/posts/started-to-be-stopped/</guid>
				<description>&lt;p&gt;Stopping a process is the easy half of proving that my LLM proxy gives a GPU back. On the A9 the hard half was letting it take the GPU at all. The one rule I keep about that box is that nothing gets in its benchmark&#39;s way, and the proxy had never started an engine there. The day before, its idle stop had sent the A9 a stop anyway (&lt;a href=&#34;https://tsvinc.dev/posts/cutting-a-stream-doesnt-cancel-the-turn/&#34;&gt;how idle stop managed that&lt;/a&gt;).&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
