我希望能够在使用OpenCL多个设备时,在GPU和CPU上运行并行任务。 AMD SDK的标准示例在这方面不是很清楚。你能否提供任何其他关于这方面的教程或示例?任何建议都可以。
谢谢。
谢谢。
没有什么可以阻止你这样做。你需要在调用clCreateContext()
时提供所有想要使用的设备,然后为每个设备创建至少一个命令队列。根据你想要做的事情,你可能需要查看更高级的任务调度技术,例如使用乱序命令队列和事件来跨设备安排任务。
使用clGetPlatforms函数,您可以了解是否有多个平台。如果您运行的是nVidia GPU板和AMD CPU,则会发现两个平台。一个平台用于AMD SDK,另一个用于nVidia CUDA OpenCL实现。使用clGetDevices函数,您可以找到每个平台上可用的设备。可能每个平台只有一个设备,例如1xGPU和1xCPU。
对于每个设备,使用clCreateContext创建上下文,然后您可以并行运行它们。
由Aftab Munshi和其他人编写的OpenCL编程指南将为您提供更多详细信息。