我想用OpenCL多个设备在GPU和CPU上运行并行任务.AMD SDK的标准示例在此主题上并不十分清楚.您能否就此主题提供任何其他教程或示例建议?任何建议都可以.
谢谢.
在多个设备上运行并行任务需要动态调度以获得良好的效率,因为您永远不会知道任何设备的确切性能 - 它取决于当前负载(不仅是您的程序,还有所有其他设备),当前时钟(在大多数CPU上可能会发生显着变化) GPU取决于当前的节能配置或负载).此外,实际性能可能取决于您的输入数据.
当然,您可以像所有其他答案所建议的那样自己编写所有必要的代码,但在我看来,这是浪费时间,使用现有解决方案更好.我建议使用StarPU.我在我的OpenCL项目中使用过StarPU,效果很好.StarPU附带了如何编写能够有效使用多个GPU和CPU的代码的示例.
传统处理器已达到架构限制,异构多核设计和硬件专业化(例如协处理器,加速器......)打算解决这些问题.然而,利用这些机器在各个层面引入了许多具有挑战性的问题,从编程模型和编译器到可扩展硬件解决方案的设计.为这些体系结构设计高效的运行时系统是一个关键问题.StarPU通常使高性能库或编译器环境更容易利用可能配备GPGPU或Cell处理器的异构多核机器:而不是处理低级问题,程序员可能会专注于算法问题.
还有另一个项目,SkePU,但我没有亲自尝试:
SkePU是用于多核CPU和多GPU系统的骨架编程框架.它是一个C++模板库,具有六个数据并行和一个任务并行骨架,两种容器类型,并支持在具有CUDA和OpenCL的多GPU系统上执行.最近,通过为StarPU运行时系统实现后端,在SkePU中开发了对混合执行,性能感知动态调度和负载平衡的支持.
如果你谷歌"动态调度gpu cpu opencl"你可以找到更有用的免费或商业项目和文档.
归档时间: |
|
查看次数: |
9991 次 |
最近记录: |