调用DirectCompute实现GPU并行运算。
首先编写一个HLSL文件,一个很简单的求exp和exp2的代码而已:
然后用D3DCompileFromFile编译这个文件、创建D3D设备和上下文、创建ComputeShader、创建ID3D11Buffer、设置用于计算的资源视图,再调用ID3D11DeviceContext::Dispatch进行计算,完成计算后创建一块CPU可读的ID3D11Buffer,用ID3D11DeviceContext::Map将其映射到内存即得到结果。
最后是一些喜闻乐见的对比环节:
使用CPU:AMD Ryzen 5 5500U
使用GPU:AMD Radeon(TM) Graphics