shakedown.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
A community for live music fans with roots in the jam scene. Shakedown Social is run by a team of volunteers (led by @clifff and @sethadam1) and funded by donations.

Administered by:

Server stats:

252
active users

#simd

0 posts0 participants0 posts today
Continued thread

Updated "Sep 0.10.0 - 21 GB/s CSV Parsing Using SIMD on AMD 9950X 🚀" to make it 300% clear the graph shows #performance progression over different Sep, #dotnet versions and CPUs.

To show how runtime and library improvements go hand in hand with hardware changes. E.g. AVX512 #SIMD
As it should be 👾

#simd

there's this trick i randomly found a few years ago and i've been wondering if there's a name for it or if other people have done this before

```
for enforcing floating point determinism with realigned buffers

if we have
x x x 0 1 2 3 4 5 6 7 x x x

where x is the identity for my operation, and our operation is commutative (not necessarily associative)

then adding x padding doesn't affect the result as long as we do a tree reduction at the end

e.g.

accumulate in register: v = 0+4 1+5 2+6 3+7

tree reduction step 0: (0+4)+(2+6) (1+5)+(3+7)
tree reduction step 1: ((0+4)+(2+6)) + ((1+5)+(3+7))

if we add padding (e.g., by realigning the buffer and using a masked load)

accumulate in register: v = x+1+5 x+2+6 x+3+7 0+4+x

tree reduction step 0: (1+5)+(3+7) (0+4)+(2+6)
tree reduction step 1: ((1+5)+(3+7)) + ((0+4)+(2+6))

commuting the elements shows us that this is the exact same result as the previous one, so the bit pattern of the final result is unaffected (modulo signed zero, nan, etc)
```

Yesterday, one year ago... (Still wondering how many people actually have read or tried out any of these)

mastodon.thi.ng/@toxi/11134859

Mastodon Glitch EditionKarsten Schmidt (@toxi@mastodon.thi.ng)#HowToThing #Epilogue #LongRead: After 66 days of addressing 30 wildly varied use cases and building ~20 new example projects of varying complexity to illustrate how #ThingUmbrella libraries can be used & combined, I'm taking a break to concentrate on other important thi.ngs... With this overall selection I tried shining a light on common architectural patterns, but also some underexposed, yet interesting niche topics. Since there were many different techniques involved, it's natural not everything resonated with everyone. That's fine! Though, my hope always is that readers take an interest in a wide range of topics, and so many of these new examples were purposefully multi-faceted and hopefully provided insights for at least some parts, plus (in)directly communicated a core essence of the larger project: Only individual packages (or small clusters) are designed & optimized for a set of particular use cases. At large, though, thi.ng explicitly does NOT offer any such guidance or even opinion. All I can offer are possibilities, nudges and cross-references, how these constructs & techniques can be (and have been) useful and/or the theory underpinning them. For some topics, thi.ng libs provide multiple approaches to achieve certain goals. This again is by design (not lack of it!) and stems from hard-learned experience, showing that many (esp. larger) projects highly benefit from more nuanced (sometimes conflicting approaches) compared to popular defacto "catch-all" framework solutions. To avid users (incl. myself) this approach has become a somewhat unique offering and advantage, yet in itself seems to be the hardest and most confusing aspect of the entire project to communicate to newcomers. So seeing this list of new projects together, to me really is a celebration (and confirmation/testament) of the overall #BottomUpDesign #ThingUmbrella approach (which I've been building on since ~2006): From the wide spectrum/flexibility of use cases, the expressiveness, concision, the data-first approach, the undogmatic mix of complementary paradigms, the separation of concerns, no hidden magic state, only minimal build tooling requirements (a bundler is optional, but recommended for tree shaking, no more) — these are all aspects I think are key to building better (incl. more maintainable & reason-able) software. IMO they are worth embracing & exposing more people to and this is what I've partially attempted to do with this series of posts... ICYMI here's a summary of the 10 most recent posts (full list in the https://thi.ng/umbrella readme). Many of those examples have more comments than code... 021: Iterative animated polygon subdivision & heat map viz https://mastodon.thi.ng/@toxi/111221943333023306 022: Quasi-random voronoi lattice generator https://mastodon.thi.ng/@toxi/111244412425832657 023: Tag-based Jaccard similarity ranking using bitfields https://mastodon.thi.ng/@toxi/111256960928934577 024: 2.5D hidden line visualization of DEM files https://mastodon.thi.ng/@toxi/111269505611983570 025: Transforming & plotting 10k data points using SIMD https://mastodon.thi.ng/@toxi/111283262419126958 026: Shader meta-programming to generate 16 animated function plots https://mastodon.thi.ng/@toxi/111295842650216136 027: Flocking sim w/ neighborhood queries to visualize proximity https://mastodon.thi.ng/@toxi/111308439597090930 028: Randomized, space-filling, nested 2D grid layout generator https://mastodon.thi.ng/@toxi/111324566926701431 029: Forth-like DSL & livecoding playground for 2D geometry https://mastodon.thi.ng/@toxi/111335025037332972 030: Procedural text generation via custom DSL & parse grammar https://mastodon.thi.ng/@toxi/111347074558293056 #ThingUmbrella #OpenSource #TypeScript #JavaScript #Tutorial

Clang/LLVM friends, trying to understand *why* Clang (18) doesn't see through what seems to me like an obvious optimization.

#compiler_explorer link here, explanation of what I don't understand follows:
godbolt.org/z/j8WqsMjb6

Going through Hackers delight and doing some of the dirt simple exercises, I dumped the assembly for Chapter 1 exercise 2 "loop that goes from 1 to 0xFFFFFFFF". (changed to not fault in CE)

(continues in next post, but putting hashtags here)

godbolt.orgCompiler ExplorerCompiler Explorer is an interactive online compiler which shows the assembly output of compiled C++, Rust, Go (and many more) code.

One of the best SIMD intro articles I've ever come across thus far. Very nicely explains all the core concepts and operations, lots of sketches/diagrams... Noice! 👏

mcyoung.xyz/2023/11/27/simd-ba

Btw. If you're using TypeScript/JavaScript, you can play with some of these concepts/ops directly from the REPL using thi.ng/simd. This package uses WASM behind the scenes, but doesn't expose the full set of available SIMD instructions (it's a lil' bit more highlevel...)

Also see recent #HowToThing post and practical example about it here:
mastodon.thi.ng/@toxi/11128326

mcyoung.xyzDesigning a SIMD Algorithm from Scratch · mcyoung
#SIMD#Tutorial#Rust

#HowToThing #025 — Sampling, fitting, transforming & plotting 10k data points per frame using a whole bunch of underexposed thi.ng packages:

- thi.ng/colored-noise: using violet noise as fake data source
- thi.ng/matrices: fitting/transformation matrix creation
- thi.ng/simd: WASM-based batch processing
- thi.ng/malloc: Memory management for WASM/SIMD data buffers
- thi.ng/hiccup-canvas: 2D canvas visualization

As noted in the comments, the SIMD batch processing here is to illustrate the overall usage and handling. In this specific example, the main bottleneck is the actual canvas drawing step (esp. in Firefox, which in this case is ~3.75x slower than Chrome [latter easily manages 60fps]). The SIMD step could handle magnitude(s) more points per frame, also on FF...

As an aside, this is now already the 140th (!!!) fully documented small example project, bundled as part of the thi.ng/umbrella monorepo... Please do tell me at which point the prejudice of not having enough starting points & info about these packages will be fading into oblivion... 😅

Demo:
demo.thi.ng/umbrella/simd-plot

Source:
github.com/thi-ng/umbrella/tre

Also big thanks to Maximillian Schulte for sending me off on this topic (as a tangent) via an issue on GitHub... I've been meaning to create more examples for these above packages for a while! Last but not least, hat tip & nerd sniping @demofox re: colored noise... 😎🤩

Hi friends! Very excited to announce that I'll be giving an @easybuild Tech Talk on the 13th of October on #AVX10!

The Talk is titled "AVX10 for HPC:
A reasonable solution to the 7 levels of AVX-512 folly"

Registration is free, all #x86, #AVX, #AVX512, #SIMD, and #HPC experience levels welcome!

The page is here: easybuild.io/tech-talks/008_av

And you can register here! event.ugent.be/registration/eb

easybuild.ioEasyBuild Tech Talks

As I've been updating the build files for my various #ziglang projects & templates, also learned that quite a few of them have to be overhauled/refactored due to syntax changes and a more strict compiler. One example is this #WASM #voxel #renderer from 1.5 years ago which doesn't build anymore without major code updates, but the old build still works:

demo.thi.ng/zig/voxel-trace/

Reload for random views. Press `x` to export current frame. The renderer is incremental (never finishes) and slowly reduces pixel size from 8 down to 1. It would be much faster, but I had some ideas for creating a more stylistic output and in this current state it only renders a fixed area per frame...

The 2-bit 512^3 voxel model was generated with a custom fork of @R4_Unit's voxel automata... 🥰

Other renders & process on my old Twitter:

twitter.com/search?q=from%3A%4

Ps. This renderer is heavily using this #SIMD vector library:

github.com/thi-ng/zig-thing/tr

...and is a rewrite of my 2013 hybrid #OpenCL #Clojure voxel renderer:

github.com/thi-ng/raymarchcl

An #introduction,

I'm Nick, a principal software engineer at #Akamai. I've been working on Image & Video Manager to make working with images on the #web fast and easy. I've worked on bits as high as frontend UI and as low as hand written #ASM and #SIMD. #webperf

I'm enthusiastic about synthesizers, particularly modular synths. I use a large #Buchla clone system in the studio and a #Eurorack system when I perform live. #synth

I also enjoy ergonomic mechanical keyboards.

Nice to meet you!