通用计算、模拟与非传统GPU任务:24篇复现

覆盖矩阵、寻路、光追、Voronoi、分割、PRNG、音频、n-body和粒子结构。

先预测,再建立证据

先预测:如果只把ShaderX中的DirectX 8/9、早期GLSL或固定功能接口替换成现代API,哪些数据顺序、精度、过滤和同步假设会改变?把任务放到GPU不等于并行化完成;数据依赖、同步、数值稳定和搬运成本决定实际收益。 本页用、、、和建立统一验收语言。

官方范围与唯一归属

来源:ShaderX 2 · Tips & Tricks · ShaderX 3 · ShaderX 4 · ShaderX 5 · ShaderX 6 · ShaderX 7。以下原篇只在本主题拥有一个主归属;其他主题可以引用,但不得重复计入329篇覆盖。

ShaderX 2 · Tips & Tricks · 1篇

  • SXX-SX2T-33 · Dense Matrix Algebra on the GPU:拆出线程数据依赖、同步、收敛和搬运,使用小规模CPU参考比较数值与端到端收益。

ShaderX 3 · 1篇

  • SXX-SX3-24 · Tactical Path-Finding using Stochastic Maps on the GPU:拆出线程数据依赖、同步、收敛和搬运,使用小规模CPU参考比较数值与端到端收益。

ShaderX 4 · 4篇

  • SXX-SX4-33 · Real-time damage deformation methods:沿位置、法线、切线、速度和上一帧状态追踪形变,验证退化姿态与时间一致性。
  • SXX-SX4-34 · Ray Tracing Effects without Tracing Rays:拆出线程数据依赖、同步、收敛和搬运,使用小规模CPU参考比较数值与端到端收益。
  • SXX-SX4-35 · Implementing Ray-Tracing on the GPU:拆出线程数据依赖、同步、收敛和搬运,使用小规模CPU参考比较数值与端到端收益。
  • SXX-SX4-36 · GPU powered path-finding using precomputed Navigation Mesh approach:拆出线程数据依赖、同步、收敛和搬运,使用小规模CPU参考比较数值与端到端收益。

ShaderX 5 · 9篇

  • SXX-SX5-40 · Large crowds of autonomous animated characters using fragment shaders and level of detail:围绕数据并行拆出输入、核心变换、输出、失败边界和现代GPU证据,避免只复述效果名称。
  • SXX-SX5-41 · Interactive Image Segmentation Based on GPU Cellular Automata:明确颜色域、像素足迹、滤波核与历史来源,用频率图和运动序列验证重建。
  • SXX-SX5-42 · Real-time Cellular Texturing:围绕数据并行拆出输入、核心变换、输出、失败边界和现代GPU证据,避免只复述效果名称。
  • SXX-SX5-43 · Collision Detection Shader Using Cube-Maps:围绕数据并行拆出输入、核心变换、输出、失败边界和现代GPU证据,避免只复述效果名称。
  • SXX-SX5-44 · A GPU Panorama Viewer for Generic Camera Models:围绕数据并行拆出输入、核心变换、输出、失败边界和现代GPU证据,避免只复述效果名称。
  • SXX-SX5-45 · Explicit Early-Z Culling for Efficient Fluid Flow Simulation:围绕数据并行拆出输入、核心变换、输出、失败边界和现代GPU证据,避免只复述效果名称。
  • SXX-SX5-46 · Storing and Accessing Topology on the GPU: A Case Study on Mass-Spring Systems:围绕数据并行拆出输入、核心变换、输出、失败边界和现代GPU证据,避免只复述效果名称。
  • SXX-SX5-47 · Implementing High-Quality PRNG on GPU:拆出线程数据依赖、同步、收敛和搬运,使用小规模CPU参考比较数值与端到端收益。
  • SXX-SX5-48 · Printf shader for debugging pixel shaders:先以GPU捕获定位瓶颈,再核对生成指令、寄存器、带宽与画质约束,保留同条件回归。

ShaderX 6 · 4篇

  • SXX-SX6-41 · An Interactive Tour of Voronoi Diagrams on the GPU:拆出线程数据依赖、同步、收敛和搬运,使用小规模CPU参考比较数值与端到端收益。
  • SXX-SX6-42 · AMD DirectX 10 Performance Tools and Techniques:先以GPU捕获定位瓶颈,再核对生成指令、寄存器、带宽与画质约束,保留同条件回归。
  • SXX-SX6-43 · Real-Time Audio Processing on the GPU:拆出线程数据依赖、同步、收敛和搬运,使用小规模CPU参考比较数值与端到端收益。
  • SXX-SX6-44 · n-Body Simulations on the GPU:拆出线程数据依赖、同步、收敛和搬运,使用小规模CPU参考比较数值与端到端收益。

ShaderX 7 · 5篇

  • SXX-SX7-43 · Sliced Grid: A Memory and Computationally Efficient Data Structure for Particle-based Simulation on the GPU:定义密度或粒子状态、积分步长、透射与合成顺序,再做步长收敛和重叠压力测试。
  • SXX-SX7-44 · Free-Viewpoint Video on the GPU:围绕数据并行拆出输入、核心变换、输出、失败边界和现代GPU证据,避免只复述效果名称。
  • SXX-SX7-45 · A Volume Shader for Quantum Voronoi Diagrams inside the 3D Bloch Ball:定义密度或粒子状态、积分步长、透射与合成顺序,再做步长收敛和重叠压力测试。
  • SXX-SX7-46 · Packing Arbitrary Bit Fields into 16-bit Floating-point Render Targets in DirectX10:围绕数据并行拆出输入、核心变换、输出、失败边界和现代GPU证据,避免只复述效果名称。
  • SXX-SX7-47 · Interactive Image Morphing Using Thin-Plate Spline:沿位置、法线、切线、速度和上一帧状态追踪形变,验证退化姿态与时间一致性。

核心模型与不变量

把任务放到GPU不等于并行化完成;数据依赖、同步、数值稳定和搬运成本决定实际收益。 复现时先写输入、输出、坐标或数据域、迭代顺序、误差判据和资源生命周期,再讨论接口迁移。任何优化都要指出它保持、近似或放弃了哪条关系。

output=stage(input,constants,resources)output = stage(input, constants, resources) error=norm(referencecandidate)error = norm(reference - candidate) cost=ALU+samples+bandwidth+synchronizationcost = ALU + samples + bandwidth + synchronization accept=correctnesscompatibilityperformanceaccept = correctness * compatibility * performance

公式里的量必须给出范围、单位、空间、精度和生产者。画面相似不代表算法等价;数值接近也不代表带宽、时序和设备边界相同。

最小现代探针

float4 ProbeStage(float4 inputValue, float4 constantsValue) {
    float4 candidate = EvaluateInvariant(inputValue, constantsValue);
    return float4(candidate.xyz, 1.0);
}

探针一次只暴露一个阶段。先使用常量、解析输入和小规模CPU参考确认关系,再逐步恢复纹理、变体、并行和历史数据。

历史载体到现代路径

original article -> assumptions -> invariant -> reference
reference -> modern shader/compute path -> intermediate evidence
evidence -> image or numeric diff -> target-device acceptance

旧shader model、寄存器语义、effect框架、render-to-texture和多pass接口可以变化,但读写依赖、采样边界、精度和同步不能被省略。迁移报告要明确标记完全等价、受控近似和不可直接迁移。

性能、兼容与失败边界

固定设备、驱动、分辨率、场景、帧阶段和统计窗口,分别报告CPU提交、GPU时间、外存流量、显存峰值与画质误差。历史技巧在现代GPU上可能被编译器、缓存或专用硬件替代,必须以捕获而不是名称判断。

{"source":"volume + article id","correctness":"reference diff","compatibility":"api and device matrix","performance":"end-to-end metrics","failure":"minimal replay"}
  1. 固定卷号、篇名、来源、原始平台和输入输出。
  2. 写出核心不变量、CPU或离线参考以及现代GPU路径。
  3. 构造正常、边界、退化和超容量输入,保存中间证据。
  4. 在目标设备重放,记录图像或数值误差和端到端成本。

常见误区

练习

本章回顾

通用计算、模拟与非传统GPU任务页承载24篇唯一原文;每篇都回到问题、不变量、现代实现、边界和证据,而不是只保留一个效果名称。

讨论

评论区加载中…