<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>TinyComputers.io (Posts about spacemit x100)</title><link>https://tinycomputers.io/</link><description></description><atom:link href="https://tinycomputers.io/categories/spacemit-x100.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Original site content © 2022–2026 Tiny Machines Workshop, LLC, except where otherwise noted. Some rights reserved.</copyright><lastBuildDate>Sat, 26 Sep 2026 16:30:00 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>The SpacemiT K3: RISC-V Finally Competes, and the Vendor Kernel Gets in the Way</title><link>https://tinycomputers.io/posts/spacemit-k3-pico-itx-review.html?utm_source=feed&amp;utm_medium=rss&amp;utm_campaign=rss</link><dc:creator>A.C. Jokela</dc:creator><description>&lt;div class="audio-widget"&gt;
&lt;div class="audio-widget-header"&gt;
&lt;span class="audio-widget-icon"&gt;🎧&lt;/span&gt;
&lt;span class="audio-widget-label"&gt;Listen to this article&lt;/span&gt;
&lt;/div&gt;
&lt;audio controls preload="metadata"&gt;
&lt;source src="https://tinycomputers.io/spacemit-k3-pico-itx-review_tts.mp3" type="audio/mpeg"&gt;
&lt;/source&gt;&lt;/audio&gt;
&lt;div class="audio-widget-footer"&gt;29 min · AI-generated narration&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Every RISC-V board I have reviewed here has needed an excuse. The &lt;a href="https://tinycomputers.io/posts/pine64-star64-riscv-review.html"&gt;Pine64 Star64&lt;/a&gt; compiles Rust slower than a quad Cortex-A53 from 2012. The &lt;a href="https://tinycomputers.io/posts/mangopi-mq-pro-riscv-review.html"&gt;MangoPi MQ Pro&lt;/a&gt; takes two hours and ten minutes to do what a Raspberry Pi 5 does in seventy-seven seconds. The &lt;a href="https://tinycomputers.io/posts/the-orangepi-rv2.html"&gt;Orange Pi RV2&lt;/a&gt; spends eight cores losing to four. The reviews all end the same way: buy it because it is RISC-V, not because it is good.&lt;/p&gt;
&lt;p&gt;The SpacemiT K3 Pico-ITX does not need that excuse. It compiles the benchmark in 161.80 seconds, which puts it seventh of thirteen boards on my bench and ahead of the Banana Pi CM5-Pro. It pushes 2,372 MB/s of AES-128-GCM, beating the Cortex-A76 in a Rockchip RK3588. On SHA-512 it is 1.72x faster than that A76. A single SpacemiT X100 core scores 94% of an A76 on sysbench.&lt;/p&gt;
&lt;p&gt;This is the first RISC-V machine I have tested that competes on the merits.&lt;/p&gt;
&lt;p&gt;It also cost \$1,175.09 delivered, cannot schedule a single job across more than 8 of its 16 cores, and cannot run a virtual machine at all, which is the specific thing I bought it for.&lt;/p&gt;
&lt;p&gt;&lt;img alt="The SpacemiT K3 retail box, black with white lettering reading RISC-V AI CPU K3, RVA23 Profile Chip, with the SpacemiT logo on the kraft sleeve behind it" src="https://tinycomputers.io/images/spacemit-k3/box-rva23.jpeg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;"RVA23 Profile Chip" on the box is the part that matters. RVA23 is the RISC-V application profile that mandates the vector extension and the vector crypto suite, which is exactly why this board's ISA string is so much richer than every other RISC-V machine on my bench.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;What it cost&lt;/h3&gt;
&lt;p&gt;I am putting this near the top because every other review of frontier RISC-V hardware buries it.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Cost breakdown: board \$889.00, shipping \$45.00, customs duty \$241.09, total \$1,175.09" src="https://tinycomputers.io/images/spacemit-k3/cost-breakdown.png"&gt;&lt;/p&gt;
&lt;p&gt;The board was \$889 for the 32 GB RAM and 128 GB storage configuration, \$45 shipping, and then \$241.09 in customs duty collected by DHL four days later. That duty is 27.1% on top of the order and appears on no spec sheet or product page.&lt;/p&gt;
&lt;p&gt;&lt;img alt="The shipping box as it arrived, wrapped in plastic with two DHL Express Worldwide waybills, origin Hong Kong, recipient details blacked out" src="https://tinycomputers.io/images/spacemit-k3/package-dhl.jpeg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Origin HKG, shipped by Firefly Technology out of Tsing Yi. Declared contents: "plastic main board for to drive display", 0.85 kg. That declaration is what the \$241.09 got assessed against.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A Raspberry Pi 5 with 8 GB currently sells for around \$200 on Amazon, not the \$80 I quoted in older reviews here. So the honest multiple is roughly 5.9x the price for a board with four times the RAM, twice the cores on paper, vector crypto, PCIe, an NVMe slot and a hypervisor extension. It is not a \$1,095 difference in value, but it is also not the 15x gouging that a stale MSRP comparison would suggest.&lt;/p&gt;
&lt;h3&gt;The hardware&lt;/h3&gt;
&lt;p&gt;&lt;img alt="SpacemiT K3 Pico-ITX seen from above under a clear acrylic cover, showing the SpacemiT logo silkscreen, a yellow coin-cell RTC battery, two M.2 slots, a SIM slot and an eDP connector" src="https://tinycomputers.io/images/spacemit-k3/board-top.jpeg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Pico-ITX, under the acrylic cover it ships with. Two M.2 slots, a coin-cell RTC, an eDP header, and MAC address stickers on the right.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Port edge of the SpacemiT K3 showing two USB-C connectors, four USB-A ports in two stacks, a gigabit Ethernet jack and an SFP cage" src="https://tinycomputers.io/images/spacemit-k3/board-ports.jpeg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The port edge: two USB-C, four USB-A, gigabit Ethernet, and an SFP cage on the right. Only the gigabit port had a link during testing.&lt;/em&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Specification&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SoC&lt;/td&gt;
&lt;td&gt;SpacemiT K3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CPU&lt;/td&gt;
&lt;td&gt;16 cores enumerated: 8x Spacemit X100 @ 2.2 GHz, 8x Spacemit A100 @ 1.8 GHz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ISA&lt;/td&gt;
&lt;td&gt;&lt;code&gt;rv64imafdcvh&lt;/code&gt; plus Zba/Zbb/Zbc/Zbs, V (vector, &lt;code&gt;vlen:256&lt;/code&gt;), H (hypervisor)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vector crypto&lt;/td&gt;
&lt;td&gt;Zvkned, Zvknha, Zvknhb, Zvksed, Zvksh, Zvkg, Zvbb, Zvbc&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RAM&lt;/td&gt;
&lt;td&gt;32 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage&lt;/td&gt;
&lt;td&gt;119 GB onboard UFS, plus an NVMe slot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPU&lt;/td&gt;
&lt;td&gt;PowerVR B-Series BXM-4-64 MC1, DRM nodes present&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Network&lt;/td&gt;
&lt;td&gt;Gigabit, link up on &lt;code&gt;end0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OS as shipped&lt;/td&gt;
&lt;td&gt;Bianbu 4.0.4, kernel 6.18.3-generic&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;That ISA string is the most complete of any RISC-V board I have tested, and by a wide margin. Every previous one was &lt;code&gt;rv64imafdc&lt;/code&gt; with nothing above baseline. This one has vectors, bit manipulation, the full vector crypto suite, and the hypervisor extension.&lt;/p&gt;
&lt;p&gt;I parsed it with the &lt;code&gt;rv64&lt;/code&gt; prefix stripped before matching single letters, because a naive substring search finds the &lt;code&gt;v&lt;/code&gt; in &lt;code&gt;rv64&lt;/code&gt; and reports a vector unit that is not there. That mistake cost me an hour on the Star64.&lt;/p&gt;
&lt;p&gt;&lt;img alt="fastfetch output on the K3 showing Bianbu 4.0.4 riscv64, kernel 6.18.3-generic, 16 cores at 2.20 GHz, 31.31 GiB of RAM, a PowerVR B-Series BXM-4-64 GPU and a 1.79 TiB NVMe mounted at /srv" src="https://tinycomputers.io/images/spacemit-k3/fastfetch.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;As shipped, plus the NVMe I added. Note the sixteen cores it reports, and hold that thought.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Compiling Rust&lt;/h3&gt;
&lt;p&gt;The workload is a clean release build of &lt;a href="https://github.com/ajokela/ballistics-engine"&gt;ballistics-engine&lt;/a&gt;, three runs after &lt;code&gt;cargo clean&lt;/code&gt;, in two tiers: the pinned tree at commit &lt;code&gt;2821bba&lt;/code&gt; that every archived fleet result used, and current &lt;code&gt;HEAD&lt;/code&gt; at &lt;code&gt;b0cfcd4&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Pinned tier (&lt;code&gt;2821bba&lt;/code&gt;, 16,639 LOC, 144 crates):&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Run&lt;/th&gt;
&lt;th&gt;Time&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;160.68 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;162.41 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;162.30 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mean&lt;/td&gt;
&lt;td&gt;161.80 s (sigma 0.97, 0.60% CV)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;HEAD tier (&lt;code&gt;b0cfcd4&lt;/code&gt;, 155,867 LOC, 243 crates):&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Run&lt;/th&gt;
&lt;th&gt;Time&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1271.27 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;1273.18 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;1271.06 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mean&lt;/td&gt;
&lt;td&gt;1271.84 s (sigma 1.16, 0.09% CV)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;A 0.09% coefficient of variation across three twenty-one minute builds is the tightest result on my bench. Nothing on this board wobbles: the governor is &lt;code&gt;userspace&lt;/code&gt; pinned at maximum, both clusters hold their clocks, and there is no thermal headroom being negotiated.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Two-panel benchmark chart. Left: Rust compile times across thirteen boards, with the SpacemiT K3's X100 cluster at 161.8 s in seventh place and its A100 cluster shown separately as a hatched bar at 342.8 s. Right: single-thread crypto throughput for the K3, a Cortex-A76 and a Pine64 Star64 across four algorithms" src="https://tinycomputers.io/images/spacemit-k3-benchmarks.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Left: the pinned-tree fleet. The K3 appears twice because its two clusters are, in practice, two separate eight-core machines. The MangoPi MQ Pro is omitted at 7,824 s, which is 48x the next slowest board and would flatten the chart. Right: single-thread crypto throughput, linear scale, three platforms.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The generational comparison is the cleanest number here. The Orange Pi RV2 runs SpacemiT's previous Ky X1 and takes 650.60 s on the same tree with the same rustc 1.98.1. The K3 does it in 161.80. That is 4.02x faster from the same vendor, one generation later.&lt;/p&gt;
&lt;p&gt;Against ARM it is a tie rather than a win. 161.80 s versus the Banana Pi CM5-Pro's 167.15 s is a 3% margin, which I would not defend as a victory. But a RISC-V board landing within noise of an eight-core ARM part is new.&lt;/p&gt;
&lt;h3&gt;Cryptography, where it actually wins&lt;/h3&gt;
&lt;p&gt;Single-thread OpenSSL 3.5.5, 16 KB blocks:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Algorithm&lt;/th&gt;
&lt;th&gt;SpacemiT K3&lt;/th&gt;
&lt;th&gt;RK3588 Cortex-A76&lt;/th&gt;
&lt;th&gt;Pine64 Star64&lt;/th&gt;
&lt;th&gt;vs A76&lt;/th&gt;
&lt;th&gt;vs Star64&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AES-128-GCM&lt;/td&gt;
&lt;td&gt;2372.7&lt;/td&gt;
&lt;td&gt;2185.7&lt;/td&gt;
&lt;td&gt;21.7&lt;/td&gt;
&lt;td&gt;1.09x&lt;/td&gt;
&lt;td&gt;109x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AES-256-GCM&lt;/td&gt;
&lt;td&gt;1853.0&lt;/td&gt;
&lt;td&gt;1763.9&lt;/td&gt;
&lt;td&gt;17.9&lt;/td&gt;
&lt;td&gt;1.05x&lt;/td&gt;
&lt;td&gt;104x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SHA-256&lt;/td&gt;
&lt;td&gt;1520.6&lt;/td&gt;
&lt;td&gt;1429.4&lt;/td&gt;
&lt;td&gt;35.4&lt;/td&gt;
&lt;td&gt;1.06x&lt;/td&gt;
&lt;td&gt;43x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SHA-512&lt;/td&gt;
&lt;td&gt;646.8&lt;/td&gt;
&lt;td&gt;376.1&lt;/td&gt;
&lt;td&gt;63.5&lt;/td&gt;
&lt;td&gt;1.72x&lt;/td&gt;
&lt;td&gt;10x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AES-128-CBC&lt;/td&gt;
&lt;td&gt;1622.7&lt;/td&gt;
&lt;td&gt;1831.8&lt;/td&gt;
&lt;td&gt;31.4&lt;/td&gt;
&lt;td&gt;0.89x&lt;/td&gt;
&lt;td&gt;52x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ChaCha20-Poly1305&lt;/td&gt;
&lt;td&gt;372.4&lt;/td&gt;
&lt;td&gt;674.4&lt;/td&gt;
&lt;td&gt;51.0&lt;/td&gt;
&lt;td&gt;0.55x&lt;/td&gt;
&lt;td&gt;7x&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;A RISC-V board beating a Cortex-A76 on AES-GCM, SHA-256 and SHA-512 has not happened before on this bench.&lt;/p&gt;
&lt;p&gt;Isolating the extensions makes the mechanism obvious. Restricting &lt;code&gt;OPENSSL_riscvcap&lt;/code&gt; to plain &lt;code&gt;rv64gc&lt;/code&gt; disables the vector crypto fast paths:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Algorithm&lt;/th&gt;
&lt;th&gt;Full detection&lt;/th&gt;
&lt;th&gt;&lt;code&gt;rv64gc&lt;/code&gt; only&lt;/th&gt;
&lt;th&gt;Gain&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AES-128-GCM&lt;/td&gt;
&lt;td&gt;2373.3 MB/s&lt;/td&gt;
&lt;td&gt;68.8 MB/s&lt;/td&gt;
&lt;td&gt;34.5x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AES-256-GCM&lt;/td&gt;
&lt;td&gt;1854.3 MB/s&lt;/td&gt;
&lt;td&gt;56.7 MB/s&lt;/td&gt;
&lt;td&gt;32.7x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SHA-256&lt;/td&gt;
&lt;td&gt;1520.0 MB/s&lt;/td&gt;
&lt;td&gt;146.1 MB/s&lt;/td&gt;
&lt;td&gt;10.4x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SHA-512&lt;/td&gt;
&lt;td&gt;646.8 MB/s&lt;/td&gt;
&lt;td&gt;270.6 MB/s&lt;/td&gt;
&lt;td&gt;2.4x&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Strip the extensions and this board performs like every other RISC-V machine I have tested. That 68.8 MB/s figure is in the same league as the Star64's 21.7. The silicon is not what changed; the instruction set is.&lt;/p&gt;
&lt;p&gt;The two losses are informative rather than embarrassing. Zvkned and Zvknh accelerate AES and SHA specifically, so ChaCha20 gets nothing from them and falls behind a chip whose general SIMD is better tuned in OpenSSL. If you are terminating TLS on this board, prefer AES-GCM, which is the opposite of the advice I gave for the Star64.&lt;/p&gt;
&lt;p&gt;Asymmetric work is unremarkable: RSA-2048 at 245 signs/s, ECDSA P-256 at 4,437 signs/s. Nobody accelerates those in silicon here.&lt;/p&gt;
&lt;h3&gt;You get eight cores at a time, never sixteen&lt;/h3&gt;
&lt;p&gt;This is the finding that changes how you should read every number above. I got it wrong twice before I got it right, so here is the whole path.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/proc/cpuinfo&lt;/code&gt; lists sixteen processors. Eight report &lt;code&gt;model name: Spacemit(R) X100&lt;/code&gt; and eight report &lt;code&gt;Spacemit(R) A100&lt;/code&gt;, with distinct &lt;code&gt;marchid&lt;/code&gt; and &lt;code&gt;mimpid&lt;/code&gt; values. The boot log says &lt;code&gt;smp: Brought up 1 node, 16 CPUs&lt;/code&gt;. The &lt;code&gt;possible&lt;/code&gt;, &lt;code&gt;present&lt;/code&gt; and &lt;code&gt;online&lt;/code&gt; masks all read &lt;code&gt;0-15&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;And then:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="n"&gt;nproc&lt;/span&gt;&lt;span class="w"&gt;                          &lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;
&lt;span class="n"&gt;PID&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Cpus_allowed_list&lt;/span&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;
&lt;span class="n"&gt;taskset&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;anything&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;failed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;affinity&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Invalid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;argument&lt;/span&gt;
&lt;span class="n"&gt;cpu8&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;jiffies&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;after&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;burn&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="n"&gt;cpu0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;jiffies&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;after&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;burn&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;301&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;My first reading was that the vendor kernel was hiding half the machine. My second reading, after actually looking up what an A100 is, was that the A100 cluster is a 60 TOPS AI engine that merely happens to be built from RISC-V harts, so &lt;code&gt;nproc&lt;/code&gt; returning 8 is correct and there is nothing to complain about.&lt;/p&gt;
&lt;p&gt;Both readings are wrong, and the truth is more annoying than either.&lt;/p&gt;
&lt;p&gt;The A100 cores are reachable. You write a PID to &lt;code&gt;/proc/set_ai_thread&lt;/code&gt;, which is world-writable, and that thread's affinity mask flips from &lt;code&gt;0-7&lt;/code&gt; to &lt;code&gt;8-15&lt;/code&gt;. The setting is inherited by children, so it is enough to do it once in a shell and then run whatever you like. &lt;code&gt;taskset&lt;/code&gt; works normally afterwards, within the new mask. That is why plain &lt;code&gt;taskset -c 8&lt;/code&gt; fails as root: the affinity mask is not the door, but there is a door.&lt;/p&gt;
&lt;p&gt;And once you are through it, the A100 cores run ordinary code perfectly well. Not AI kernels. Not vector math. &lt;code&gt;rustc&lt;/code&gt;.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;Rust clean release build, pinned tree 2821bba, cargo -j8, n=2:

  X100 cluster (cpu0-7,  2.2 GHz) : 161.58 s, 161.00 s   mean 161.29 s
  A100 cluster (cpu8-15, 1.8 GHz) : 344.32 s, 341.23 s   mean 342.78 s
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The A100 cluster compiles the same tree 2.13x slower than the X100 cluster. Correct for the 2.2 versus 1.8 GHz clock difference and the A100 cores land at 57.5% of X100 per-clock throughput. sysbench, a completely different workload, puts the same figure at 57.4% (428 events/s against 912 single-threaded, 3,430 against 7,245 across eight). Two unrelated benchmarks agreeing to a tenth of a point is about as solid as this kind of measurement gets.&lt;/p&gt;
&lt;p&gt;So these are not accelerator lanes that cannot run general code. They are eight real, if unexceptional, RISC-V application cores, roughly 57% the per-clock performance of the big ones, that SpacemiT has tuned for AI work by giving them 1024-bit vectors instead of the X100's 256-bit.&lt;/p&gt;
&lt;p&gt;Here is the actual problem. You cannot have both clusters at once. After opting in, &lt;code&gt;taskset -pc 0-15&lt;/code&gt; fails:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="n"&gt;taskset&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;failed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;56055&lt;/span&gt;&lt;span class="s1"&gt;'s affinity: Invalid argument&lt;/span&gt;
&lt;span class="s1"&gt;pid 56055'&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;current&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;affinity&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;0-7&lt;/code&gt; or &lt;code&gt;8-15&lt;/code&gt;. Never &lt;code&gt;0-15&lt;/code&gt;. No process on this machine can be scheduled across all sixteen cores, so no single job can use the whole chip. That is why the compile pinned to &lt;code&gt;cpu0-7&lt;/code&gt; finished in 161.14 s against 161.80 s for the nominally sixteen-core run: the nominally sixteen-core run was always an eight-core run, because sixteen-core runs do not exist here.&lt;/p&gt;
&lt;p&gt;What that costs is easy to bound. Summing the two clusters' throughput puts a hypothetical combined build at about 110 seconds, roughly 1.47x faster than the X100 cluster alone. Treat that as a ceiling rather than a prediction, because this build's serialised LTO link would eat into it and cross-cluster scheduling on a chip this asymmetric is not free. But the gap between 161 s and something near 110 s is real compute, sitting in the same coherence domain, fenced off by software.&lt;/p&gt;
&lt;p&gt;I am not sure whether the fence is deliberate product design, a limitation of the vendor scheduler patches, or a hardware constraint I cannot see from userspace. SpacemiT's marketing splits the chip into "130K DMIPS of general-purpose compute and 60 TOPS of AI compute", which suggests they think of the two clusters as separate products that happen to share a die. That is a defensible way to build a chip. It is a poor way to describe one, because nothing on the board, in &lt;code&gt;fastfetch&lt;/code&gt;, or in the shipped OS tells you any of this. You find out by pinning a compile to &lt;code&gt;cpu8-15&lt;/code&gt; and getting a 0.016 second result.&lt;/p&gt;
&lt;p&gt;The one A100 claim I still cannot check is the interesting one: SpacemiT's IME2 llama.cpp build reportedly puts the A100 cluster ahead of X100 on token generation, which is the entire point of those 1024-bit vectors. That needs their runtime and a proper model, and it belongs in its own piece.&lt;/p&gt;
&lt;p&gt;Geekbench makes the same mistake I made first, which is some comfort. I uploaded a run as &lt;a href="https://browser.geekbench.com/v7/cpu/466791"&gt;Geekbench 7 result 466791&lt;/a&gt;: 363 single-core, 2019 multi-core under Geekbench 7.0.0 Preview for Linux RISC-V. Its system panel reports "1 Processor, 16 Cores", labels the whole chip &lt;code&gt;Spacemit(R) X100&lt;/code&gt;, and then gives up with "Cluster 1: 0 Cores". That is detection logic meeting a topology it has no model for.&lt;/p&gt;
&lt;p&gt;The scores contradict the topology it printed. Multi-core comes in at 5.56x single-core, and the Clang subtest at 6.43x. Those are eight-core scaling factors, measured on the eight cores Geekbench was allowed to touch.&lt;/p&gt;
&lt;h3&gt;The benchmark's own blind spot&lt;/h3&gt;
&lt;p&gt;While measuring this I found a flaw in my own workload that applies to every board I have tested.&lt;/p&gt;
&lt;p&gt;The project's release profile sets &lt;code&gt;lto = true&lt;/code&gt; and &lt;code&gt;codegen-units = 1&lt;/code&gt;, which forces the final crate through a single-threaded link. Parallel efficiency on the K3 falls from 46% on the pinned tree to 22% on HEAD, because HEAD's final crate is much larger and the serial portion grows faster than the parallel one.&lt;/p&gt;
&lt;p&gt;That penalises wide machines. A four-core board loses little to a serial link; an eight or sixteen-core board idles through it. Every board ran the identical profile so the fleet numbers remain comparable to each other, but they measure "compile this specific LTO-heavy project" rather than general compile throughput. The K3 is the first machine wide enough to make that visible, and I should have caught it sooner.&lt;/p&gt;
&lt;h3&gt;Thermals, memory, storage&lt;/h3&gt;
&lt;p&gt;Nothing dramatic, which is itself worth reporting.&lt;/p&gt;
&lt;p&gt;Seven thermal zones sit at 51 to 56 C idle. Under 120 seconds of sixteen-worker &lt;code&gt;stress-ng&lt;/code&gt; the hottest cluster peaked at 65 C and both clusters held full clock throughout. No throttling.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Underside of the SpacemiT K3 showing a large aluminium heatsink with an integrated blower fan bolted over the board" src="https://tinycomputers.io/images/spacemit-k3/board-cooler.jpeg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The reason the thermal numbers look good: an aluminium heatsink with an integrated blower fan, bolted to the board. No other RISC-V board in this comparison ships with active cooling.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Worth being precise about why: this board is actively cooled. It ships with a substantial aluminium heatsink and a blower fan bolted to the underside, which is not something any other RISC-V board in this comparison has. Holding 65 C under full load is a good result, but it is a good result with a fan, not in spite of having none.&lt;/p&gt;
&lt;p&gt;Memory measured 32,468 MB/s read and 23,768 MB/s write. The onboard UFS does 903 MB/s buffered read via hdparm, 238 MB/s write and 932 MB/s read by &lt;code&gt;dd&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I also fitted a WD_BLACK SN850X 2 TB in the NVMe slot, which does 1.0 GB/s write and 2.1 GB/s read. That is a different universe from the microSD-bound RISC-V boards I have reviewed, where the Star64 managed 22.4 MB/s because its controller never leaves SD high-speed mode.&lt;/p&gt;
&lt;h3&gt;KVM is broken&lt;/h3&gt;
&lt;p&gt;I bought this board to run virtual machines. Thirty-two gigabytes of RAM and a hypervisor extension is a credible small virtualization host, and RISC-V finally having RVH 1.0 with AIA and an IOMMU is the reason to care about the K3 over anything else on this list.&lt;/p&gt;
&lt;p&gt;It does not work.&lt;/p&gt;
&lt;p&gt;The ISA string advertises &lt;code&gt;h&lt;/code&gt;. The kernel ships &lt;code&gt;CONFIG_KVM=m&lt;/code&gt;. Loading the module produces a kernel oops:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="n"&gt;Unable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;handle&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;kernel&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;paging&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;at&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;virtual&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ffffffff81a0f1c0&lt;/span&gt;
&lt;span class="n"&gt;Oops&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="c1"&gt;#1]&lt;/span&gt;
&lt;span class="n"&gt;CPU&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;UID&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;PID&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;55989&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Comm&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;modprobe&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tainted&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;6.18&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;generic&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;#1.0.5.4&lt;/span&gt;
&lt;span class="n"&gt;Hardware&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SpacemiT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;K3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Pico&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ITX&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;DT&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;epc&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;jump_label_module_notify&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mh"&gt;0x1de&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mh"&gt;0x368&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="n"&gt;load_module&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mh"&gt;0x15d4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;blocking_notifier_call_chain_robust&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;notifier_call_chain&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The fault is in the static-key relocation path during module load, so &lt;code&gt;/dev/kvm&lt;/code&gt; is never created and no virtual machine can start. This is a software defect in Bianbu's kernel build, not a hardware limitation: SpacemiT's own materials describe RVH 1.0, AIA and IOMMU support, and K3 KVM work has been landing upstream.&lt;/p&gt;
&lt;p&gt;Do not buy this board expecting to run VMs on the image it ships with.&lt;/p&gt;
&lt;h3&gt;Who this is for&lt;/h3&gt;
&lt;p&gt;Buy it if you are doing RISC-V platform work and need real hardware that does not make you wait: a build machine, a CI runner, a place to port and profile software where the compile times are tolerable and the crypto is genuinely fast. On those terms it is the first RISC-V board I would actually choose rather than tolerate.&lt;/p&gt;
&lt;p&gt;Do not buy it if you want the virtualization host its spec sheet promises, at least not yet, and not on Bianbu. Do not buy it as a compile box either: a \$200 Raspberry Pi 5 does the same tree 2.11x faster, and nothing here changes that. The case for the price is the 32 GB of RAM and the 60 TOPS AI engine, and this review tests neither.&lt;/p&gt;
&lt;p&gt;The honest summary is that SpacemiT built genuinely competitive silicon and shipped it with a kernel that cannot load KVM. The hardware is ready. The software is not, and the documentation is worse than the software.&lt;/p&gt;
&lt;h3&gt;What is broken, restated plainly&lt;/h3&gt;
&lt;p&gt;Because these are the things that will cost you time if you buy one:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;KVM does not work on the SpacemiT-provided kernel. &lt;code&gt;modprobe kvm&lt;/code&gt; oopses in &lt;code&gt;jump_label_module_notify&lt;/code&gt; on Bianbu 4.0.4 with kernel 6.18.3-generic &lt;code&gt;#1.0.5.4&lt;/code&gt;. The hardware supports RVH 1.0; the shipped kernel cannot use it. If virtualization is why you are buying this board, you cannot use the image it arrives with.&lt;/li&gt;
&lt;li&gt;No process can use more than 8 of the 16 cores. The A100 cluster is reachable by writing a PID to &lt;code&gt;/proc/set_ai_thread&lt;/code&gt;, and those cores run ordinary code at 57.5% of X100 per-clock throughput. But the mask is &lt;code&gt;0-7&lt;/code&gt; or &lt;code&gt;8-15&lt;/code&gt;, never &lt;code&gt;0-15&lt;/code&gt;, so the whole chip is never available to one job. Every other benchmark here was produced by the eight X100 cores.&lt;/li&gt;
&lt;li&gt;A newer BSP kernel did not help. I installed &lt;code&gt;6.18.3-1.0.8.4&lt;/code&gt; from the porting repo and tried to boot it with kexec. The board did not come back and needed a power cycle. Notably, kexec also failed with a kernel that unquestionably has full K3 support, which suggests kexec itself is unreliable on this vendor firmware rather than the kernel being at fault.&lt;/li&gt;
&lt;li&gt;Ubuntu's generic 7.0.0 kernel is not a workaround. It carries one &lt;code&gt;spacemit&lt;/code&gt; config entry against the BSP's sixty-six, ships no K3 device trees, and lacks the &lt;code&gt;dwmac-spacemit-ethqos&lt;/code&gt; driver this board's network port needs. Booting it would produce an unreachable machine.&lt;/li&gt;
&lt;li&gt;The customs duty is real. \$241.09 on a \$934 order, payable on delivery.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;A follow-up is coming&lt;/h3&gt;
&lt;p&gt;Canonical officially supports the SpacemiT K3 starting with Ubuntu 26.10 "Stonking Stingray", and that is the interesting thread to pull. The supported path replaces SpacemiT's U-Boot with EDK2 UEFI firmware, flashed over fastboot with the board in FDL mode, and then installs Ubuntu from a USB stick.&lt;/p&gt;
&lt;p&gt;The reason I think it will matter: Ubuntu 26.10 ships kernel 7.3.0, and the mainline SpacemiT device tree pull request that adds K3 support was titled &lt;em&gt;RISC-V SpacemiT Devicetrees for v7.3&lt;/em&gt;. That is the first kernel where this board's support is upstream rather than carried in a vendor tree. It is the obvious candidate to fix the KVM oops, which is a kernel-side failure rather than a silicon one.&lt;/p&gt;
&lt;p&gt;I have the 26.10 daily image written to a USB stick and the flashing procedure mapped out. The next piece will cover whether official Ubuntu turns this from a fast compile box into the virtualization host it was supposed to be, and whether a mainline kernel lets one process schedule across all sixteen cores instead of eight.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;By the numbers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rust clean release build, pinned tree (&lt;code&gt;2821bba&lt;/code&gt;, 16,639 LOC): 161.80 s mean, 7th of 13 on my bench&lt;/li&gt;
&lt;li&gt;Rust clean release build, current tree (&lt;code&gt;b0cfcd4&lt;/code&gt;, 155,867 LOC): 1271.84 s mean, 0.09% CV&lt;/li&gt;
&lt;li&gt;vs SpacemiT's own previous generation: 4.02x faster than the Ky X1 in the Orange Pi RV2&lt;/li&gt;
&lt;li&gt;Single X100 core: 911 sysbench events/s, 94% of a Cortex-A76 at 2.35 GHz&lt;/li&gt;
&lt;li&gt;Geekbench 7: 363 single-core, 2019 multi-core (&lt;a href="https://browser.geekbench.com/v7/cpu/466791"&gt;result 466791&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;AES-128-GCM 2372.7 MB/s, ahead of a Cortex-A76 and 109x the Pine64 Star64&lt;/li&gt;
&lt;li&gt;Vector crypto contribution: 34.5x on AES-128-GCM, 10.4x on SHA-256&lt;/li&gt;
&lt;li&gt;Cores usable by one process: 8 of 16, either cluster but never both&lt;/li&gt;
&lt;li&gt;A100 cluster on the same compile: 342.78 s against X100's 161.29 s, 57.5% of X100 per clock&lt;/li&gt;
&lt;li&gt;KVM: broken, kernel oops on module load&lt;/li&gt;
&lt;li&gt;Thermals: 51 C idle, 65 C peak under sixteen-worker load, no throttling&lt;/li&gt;
&lt;li&gt;NVMe: 1.0 GB/s write, 2.1 GB/s read&lt;/li&gt;
&lt;li&gt;Cost: \$1,175.09 delivered, including \$241.09 customs duty&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Caveats. Every figure except the A100 compile and sysbench runs comes from the eight X100 cores. The A100 numbers are n=2 on the compile and single runs on sysbench. I did not test the A100 cluster on AI workloads at all, which is what it exists for, so its 60 TOPS rating remains SpacemiT's number rather than a measurement of mine. The compile workload uses &lt;code&gt;lto = true&lt;/code&gt; and &lt;code&gt;codegen-units = 1&lt;/code&gt;, which serialises the final link and understates wide machines. Commit &lt;code&gt;2821bba&lt;/code&gt; predates the project having a &lt;code&gt;Cargo.lock&lt;/code&gt;, so dependency versions resolve fresh. Network throughput was not measured. The sysbench comparison against the Cortex-A76 uses version 1.0.20 on both boards; the Star64 shipped 0.4.12 and its sysbench figures are not comparable to either.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Review Date: September 25, 2026&lt;/p&gt;
&lt;p&gt;Hardware Tested: SpacemiT K3 Pico-ITX, 32 GB RAM, 128 GB UFS, WD_BLACK SN850X 2 TB NVMe added&lt;/p&gt;
&lt;p&gt;OS Tested: Bianbu 4.0.4, kernel 6.18.3-generic &lt;code&gt;#1.0.5.4&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Benchmark Workload: &lt;a href="https://github.com/ajokela/ballistics-engine"&gt;ballistics-engine&lt;/a&gt; clean release builds at commits &lt;code&gt;2821bba&lt;/code&gt; and &lt;code&gt;b0cfcd4&lt;/code&gt;, rustc 1.98.1&lt;/p&gt;
&lt;p&gt;Conclusion: The first RISC-V board that competes with ARM on performance rather than on novelty, sold at a price that is defensible only if you need what it uniquely offers, and shipped with a kernel that disables half its cores and cannot start a virtual machine.&lt;/p&gt;</description><category>benchmarks</category><category>bianbu</category><category>hardware review</category><category>hypervisor extension</category><category>k3</category><category>kvm</category><category>openssl</category><category>pico-itx</category><category>risc v</category><category>riscv64</category><category>rust compilation</category><category>rva23</category><category>rvv</category><category>single board computers</category><category>spacemit</category><category>spacemit a100</category><category>spacemit x100</category><category>ubuntu</category><category>vector crypto</category><category>virtualization</category><guid>https://tinycomputers.io/posts/spacemit-k3-pico-itx-review.html</guid><pubDate>Fri, 25 Sep 2026 13:00:00 GMT</pubDate></item></channel></rss>