CPU
CPU是PC的核心運算單元的硬體元件,主要處理作業系統跟應用程式所需的運算任務。
GPU
GPU是類似的硬體元件圖形處理單元,初期主要處理遊戲和動畫中的圖形轉譯任務,現在因能夠更有效地處理平行執行簡單數學運算(太複雜的運算不一定比CPU來的快)而廣泛利用
CUDA
Compute Unified Device Architecture簡稱,由NVIDIA開發,讓開發人員能使用C/C++ 與GPU進行溝通執行平行運算能力
基於.Net8(3.0.1)開發的.NET函式庫,協助處理RAM跟GPU之間互動,並提供HLSL運算辦法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| // 建立ComputeShader定義GPU負責運算部分 [ThreadGroupSize(DefaultThreadGroupSizes.X)] [GeneratedComputeShaderDescriptor] internal readonly partial struct PowComputeShader(ReadWriteBuffer<float> buffer) : IComputeShader { public void Execute() { buffer[ThreadIds.X] = Hlsl.Pow(buffer[ThreadIds.X], 2); } }
var gd = GraphicsDevice.GetDefault(); var records = Enumerable.Range(1, 100).Select(index => 1.1F * index).ToArray(); // 將RAM的資訊重新指派準備給GPU運算用 var buffer = gd.AllocateReadWriteBuffer(records); // GPU平行處理 gd.For(buffer.Length, new CircleComputeShader(buffer)); // 運算結果寫回RAM buffer.CopyTo(records);
|
注意事項