有没有很好的示例或演示来应用openCL来共享智能设备之间的资源(计算能力,网络等)?
是否有可能用数以千计的智能手机创建超级计算机?
答案 0 :(得分:1)
好的,这个问题真的很模糊。让我告诉你一个关于OpenCL的基本事实。当您在同一平台上拥有异构设备时,OpenCL将非常有用。即,在单个物理芯片上使用FPGA的GPU DSP等不同设备。在这种情况下,您可以通过使用单一语言编写代码来利用每个设备的处理能力和计算能力,而不是使用不同语言对每个芯片进行编程,OpenGL负责各种设备的编译。现在你要的是网络上智能设备之间的超级计算机。你能用OpenCL吗?理论上是的,你可以假设你写了一个驱动程序,以某种方式无线ping你的设备并发送内核来执行,但即使你真的这样做,传输数据的成本非常高,即使在同一平台,它是有道理的仅当数据量很大且DMA /传输数据到设备所需的时间<=实际计算的时间时才使用GPU / FPGA。即为了从您的设备获得最佳性能,您需要确保数据传输到您的设备的时间&lt; =计算所需的时间。如果不满足这些基本标准,那么也可以使用主机CPU进行计算。
现在看看你的情况,你想把OpenCL内核转储到没有通过不确定性的网络进行物理连接的设备,所以即使在最好的情况下,将数据传输到远程设备的时间也会达到几秒钟,而你的计算时间仅为几毫秒。因此,如果您在3g / 4g网络上有10部手机,并且所有这些手机都连接到主机臂处理器,并且假设您设法编写这些驱动程序以使所有这些无线设备都检测为OpenCL设备,那么,如果你这样做,那就是高斯过滤然后,您将图像部分发送到这些设备所花费的时间将指数高于您的臂处理器进行计算所需的时间。
简而言之,你想做的事情可能是可能的,但这样做绝对浪费时间资源和精力。即使你真的这样做了,在性能,计算能力等方面也没有多大好处。想一想。