跳到正文
cccskills
免费在 GitHub 公开

dotnet-simd

Vectorize hot loops in C#/.NET the right way — reach for System.Numerics.Tensors (TensorPrimitives) first, then System.Runtime.Intrinsics (Vector128/256/512) for hand-written algorithms, hardware intrinsics only as a last resort. USE FOR: choosing between TensorPrimitives, Vector<T>, Vector128/256/512, and X86/Arm/Wasm intrinsics; MemoryMarshal/LoadUnsafe/StoreUnsafe span-to-vector patterns; hardware-acceleration checks (IsHardwareAccelerated, IsSupported); widest-vector-first code paths with scalar/small-input fallbacks; masked remainder handling for non-idempotent vs idempotent ops; lane-crossing pitfalls with Vector256/512 horizontal reductions; eliminating bounds checks/branches in scalar/remainder code; multi-core parallelization via Parallel.Invoke chunking over TensorPrimitives calls; testing SIMD paths via DOTNET_Enable* env vars and .runsettings; benchmarking with BenchmarkDotNet job configs. DO NOT USE FOR: GPU compute (CUDA/TorchSharp); SIMD in non-.NET languages.

中文简介正在准备中。当前显示原文说明。

NetFabric/NetFabric.Numerics星标 36(GitHub 36 + cccskills 0)

实测评分 未实测

查看安装方法

包含的文件(7)

  • SKILL.md4.7 KB
  • references/hardware-intrinsics.md1.9 KB
  • references/performance-optimization-ladder.md5.0 KB
  • references/tensor-primitives.md2.7 KB
  • references/testing-and-benchmarking.md4.2 KB
  • references/vector-t-and-fixed-shape.md2.7 KB
  • references/vector128-vectorization.md8.1 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

.NET SIMD & Vectorization

Requires using System.Numerics; / using System.Runtime.Intrinsics; / using System.Numerics.Tensors; (TensorPrimitives, package System.Numerics.Tensors) depending on the step below.

Decision Ladder

Only escalate to the next step when a benchmark shows the current one doesn't cover your case — most code should stop at step 1.

StepAPIWhen
1TensorPrimitives (tensor-primitives.md)Default choice — ~200 ready-made vectorized span operations (arithmetic, math functions, reductions, cosine similarity, ...). Don't hand-roll what's already optimized and tested.
2Vector128<T>/Vector256<T>/Vector512<T> (vector128-vectorization.md)No TensorPrimitives overload covers your exact operation. Recommended starting point for hand-written vectorization — broadest hardware support, fine-grained control.
3Vector<T> (vector-t-and-fixed-shape.md)A quick, simple portable loop where per-width control isn't worth the complexity. Simpler to write than step 2, but less control.
4Platform intrinsics — System.Runtime.Intrinsics.X86/.Arm/.Wasm (hardware-intrinsics.md)A specific processor instruction measurably beats what Vector128/256 generate, on a proven hot path.

Steps 1–2 handle almost everything. General CPU-level techniques for the scalar/remainder code inside a hand-written algorithm (bounds-check elimination, branch removal, multi-accumulator unrolling) and multi-core chunking live in performance-optimization-ladder.md.

Quick Pattern: Reach for TensorPrimitives First

public static float[] MultiplyAdd(float[] left, float[] right, float[] addend)
{
    var result = new float[left.Length];
    TensorPrimitives.Multiply(left, right, result);   // result = left * right
    TensorPrimitives.Add(result, addend, result);     // result += addend (in-place)
    return result;
}

Only drop to hand-written Vector128<T> (see vector128-vectorization.md) when no TensorPrimitives overload exists for your exact operation:

public static T Sum<T>(ReadOnlySpan<T> buffer) where T : unmanaged, INumberBase<T>
{
    if (Vector128.IsHardwareAccelerated && Vector128<T>.IsSupported)
        return buffer.Length >= Vector128<T>.Count ? SumVector128(buffer) : SumVectorSmall(buffer);
    return SumScalar(buffer);
}

Reference Files

FileLoad When
references/tensor-primitives.mdUsing TensorPrimitives/Tensor<T>; deciding when it's not enough
references/vector128-vectorization.mdHand-writing Vector128/256/512 code, hardware-acceleration checks, remainder handling, lane-crossing pitfalls, safe load/store
references/hardware-intrinsics.mdPlatform-specific X86/Arm/Wasm intrinsics as a last resort
references/vector-t-and-fixed-shape.mdVector<T> portable vectorization; Vector2/Vector3/Vector4/Matrix/Quaternion graphics types
references/performance-optimization-ladder.mdBounds-check elimination, branch removal, loop unrolling, multi-core chunking recipes
references/testing-and-benchmarking.mdTesting across Scalar/Vector128/256/512; .runsettings; BenchmarkDotNet job configs

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Abstract math for 3D rotation representations and conversions. USE FOR: understanding axis-angle representation; Euler angles (yaw/pitch/roll, convention choices); rotation matrices (SO(3)); quaternion-based rotation; converting between representations; identifying and avoiding gimbal lock; composing rotations; half-angle formula; right-hand rule. DO NOT USE FOR: quaternion arithmetic details (use quaternion-algebra); slerp/lerp interpolation (use interpolation-on-manifolds); coordinate system definitions (use coordinate-system-conversions).

中文简介正在准备中。当前显示原文说明。

NetFabric/NetFabric.Numerics362026年8月10日 更新

Design and scaffold multi-agent squads/swarms using the graph orchestration pattern (nodes = agents, edges = dependencies/data flow). USE FOR: designing a coordination topology for a multi-agent squad (sequential pipeline, parallel fan-out/aggregation, branching, feedback loop, cyclic); building an orchestrator agent that delegates to specialist agents; setting up an adversarial/tribunal code or document review with independent reviewers; scaffolding a squad's agent files for a target coding-agent harness (e.g. Copilot CLI or Claude Code custom agents). DO NOT USE FOR: authoring a single agent's frontmatter/prompt body (use copilot-cli-custom-agents, claude-code-custom-agents, or the target harness's own skill); SKILL.md authoring (use create-skill); ad-hoc multi-agent chat with no explicit topology.

中文简介正在准备中。当前显示原文说明。

NetFabric/NetFabric.Numerics362026年8月10日 更新

Find, inspect, query, redact, and troubleshoot logs, transcripts, sessions, and OpenTelemetry data from coding-agent harnesses on Windows, macOS, Linux, and WSL. USE FOR: GitHub Copilot in VS Code; Copilot CLI; Claude Code; OpenAI Codex; Gemini CLI; OpenCode; Cursor, Windsurf, Kiro, or other VS Code-family editors; locating log files; diagnosing tool or model failures; correlating turns, subagents, and tool calls; querying JSONL, plaintext, or SQLite without spending model tokens; preparing sanitized diagnostics. DO NOT USE FOR: application logs unrelated to coding agents; uploading raw logs; treating unstable transcript schemas as public APIs.

中文简介正在准备中。当前显示原文说明。

NetFabric/NetFabric.Numerics362026年8月10日 更新

agents-md

免费

Author and maintain AGENTS.md files — the open, tool-agnostic format for giving coding agents project context. Use when: creating AGENTS.md; writing an agent instructions file; root or nested AGENTS.md for monorepos; migrating CLAUDE.md, AGENT.md, .cursor/rules, or copilot-instructions.md to AGENTS.md; greenfield project setup before code exists; brownfield onboarding for an existing codebase; documenting build/test/lint commands, code style, PR/commit conventions, and security considerations for agents; AGENTS.md discovery and precedence rules. Works for any language, framework, or project size. DO NOT USE FOR: authoring SKILL.md skill files (use create-skill); APM package/plugin authoring (use apm-producer); language-specific style rules (use language skills e.g. csharp-best-practices).

中文简介正在准备中。当前显示原文说明。

NetFabric/NetFabric.Numerics362026年8月10日 更新

Abstract math for angle measurement, unit systems, and circular arithmetic. USE FOR: implementing angle types; converting between degrees/radians/gradians/revolutions; reducing angles to canonical range [0, Full); computing reference angles and quadrants; implementing safe modular arithmetic with negative inputs; angle addition and subtraction; classifying angles by sign and size. DO NOT USE FOR: trigonometric functions (use trigonometric-functions); coordinate conversions (use coordinate-system-conversions); interpolation (use interpolation-on-manifolds).

中文简介正在准备中。当前显示原文说明。

NetFabric/NetFabric.Numerics362026年8月10日 更新

Create and maintain Claude Code custom subagents (.claude/agents/*.md files). USE FOR: authoring project (.claude/agents/) or user (~/.claude/agents/) subagent files; frontmatter fields (name, description, tools, disallowedTools, model, permissionMode, maxTurns, skills, mcpServers, hooks, memory, background, effort, isolation, color, initialPrompt); writing descriptions that drive automatic delegation and 'use proactively' phrasing; invoking subagents via natural language, @-mention, session-wide --agent, or the Agent tool; restricting which subagent types a coordinator can spawn with Agent(name1, name2); nested subagents and depth limits; built-in subagents (Explore, Plan, general-purpose, claude); troubleshooting a subagent that won't load or isn't invoked. DO NOT USE FOR: GitHub Copilot CLI custom agents (use copilot-cli-custom-agents); agent teams/teammates (a different, session-spanning feature); MCP server authoring; SKILL.md authoring (use create-skill).

中文简介正在准备中。当前显示原文说明。

NetFabric/NetFabric.Numerics362026年8月10日 更新

查看 NetFabric 的全部技能

报告此技能的问题