Files
Misaki.HighPerformance/Misaki.HighPerformance.Mathematics.SPMD
Misaki 208e1aa975 feat(allocator): add unified Reallocate to all allocators
Introduce a unified Reallocate method to all memory allocator types (Arena, Stack, FreeList, VirtualArena, VirtualStack, DynamicArena) and require it in the IMemoryAllocator interface. This enables efficient resizing of memory blocks, with fast-path optimizations for stack-like allocators.

Update AllocationManager and MemoryPool to use the new Reallocate method, simplifying and optimizing memory resizing logic. Add public properties for buffer pointers, sizes, and offsets to allocator structs for easier diagnostics.

Set FreeList's default concurrency level to 1 and make its allocation method return null on dispose instead of throwing. Clean up vector types for formatting, fix UnsafeList's RemoveRangeSwapBack logic, and simplify RemoveAtSwapBack.

Simplify Program.cs to only run SPMDBenchmark. Add new unit tests for FixedString, UnsafeList, UnsafeHashMap, and UnsafeHashSet. Apply minor test code cleanups for consistency in TestUnsafeQueue.

BREAKING CHANGE: IMemoryAllocator now requires a Reallocate method, and allocator APIs have changed accordingly.
2026-04-04 14:16:52 +09:00
..
2026-03-30 12:47:29 +09:00

Misaki.HighPerformance.Mathematics.SPMD

SPMD-oriented math abstractions built on top of the mathematics layer.

This package is intended for code that wants to express vectorized work in a way that is portable across lane widths and easier to reason about than raw intrinsics alone.

What it includes

  • SPMD lane interfaces
  • scalar and wide lane abstractions
  • vector template helpers
  • shuffle table generation support
  • job-oriented SPMD helpers

Highlights

  • abstracts lane width through a common interface
  • supports sequence creation, load/store, and compress-store style workflows
  • built for vectorized algorithms and data-parallel execution
  • useful when you need explicit lane semantics rather than ad hoc SIMD code

Main types

  • ISPMD
  • ISPMD<TSelf, TNumber>
  • ScalerLane
  • WideLane
  • IJobSPMD
  • Vector{T}Helper

Example

// Define an SPMD-friendly numeric lane type and use it to express data-parallel work.
// See the source templates for the current concrete lane implementations.

Package reference

dotnet add package Misaki.HighPerformance.Mathematics.SPMD

Notes

This project targets net10.0 and depends on the mathematics project for shared numeric concepts.