<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Simd on Jasper</title><link>https://jasper-aa64.github.io/tags/simd/</link><description>Recent content in Simd on Jasper</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 15 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://jasper-aa64.github.io/tags/simd/index.xml" rel="self" type="application/rss+xml"/><item><title>Trading System Notes #15: SIMD Vectorization and Intrinsics</title><link>https://jasper-aa64.github.io/posts/simd-vectorization-intrinsics/</link><pubDate>Thu, 15 Oct 2026 00:00:00 +0000</pubDate><guid>https://jasper-aa64.github.io/posts/simd-vectorization-intrinsics/</guid><description>One instruction computes a row of numbers only if the compiler knows how wide a register it may use, is sure nothing overlaps, and is allowed to reorder; when it can&amp;rsquo;t get all three, intrinsics let you write it yourself, at the cost of alignment, instruction-set detection and the last few digits of the result.</description></item><item><title>Trading System Notes #9: Loop Optimization</title><link>https://jasper-aa64.github.io/posts/loop-optimization/</link><pubDate>Mon, 12 Oct 2026 00:00:00 +0000</pubDate><guid>https://jasper-aa64.github.io/posts/loop-optimization/</guid><description>A dot-product loop reports “vectorized” at -O3, yet its four additions still wait on each other: floating-point addition isn&amp;rsquo;t associative, so the compiler won&amp;rsquo;t reorder it. What loop optimization really asks of you is to spot what blocks the compiler, and to make the changes it won&amp;rsquo;t make for you.</description></item><item><title>Low-Latency Trading — Memory Latency and Bandwidth</title><link>https://jasper-aa64.github.io/posts/low-latency-memory-latency-bandwidth/</link><pubDate>Fri, 09 Oct 2026 00:00:00 +0000</pubDate><guid>https://jasper-aa64.github.io/posts/low-latency-memory-latency-bandwidth/</guid><description>One memory access takes about 100 ns and brings back 64 B. One at a time, that&amp;rsquo;s 0.64 GB/s, yet one core reading sequentially gets 15–60 GB/s. The missing factor is the number of requests in flight. Whether the next load&amp;rsquo;s address has to wait for this load decides whether your code is latency-bound or bandwidth-bound.</description></item></channel></rss>