我在Ubuntu下开发C ++。我的应用程序有很多线程(超过25个)。
我的问题是:
答案 0 :(得分:0)
这取决于您在应用程序中的并行度类型。如果你有任务并行(http://en.wikipedia.org/wiki/Task_parallelism),每个线程正在执行不同的任务(即一个线程正在进行网络连接,另一个线程正在进行计算,渲染等)。 这种类型的并行性不适用于GPU,因为GPU是数据并行机器(http://en.wikipedia.org/wiki/Data_parallelism)。如果需要对许多数据项执行相同的计算,则效率非常高。例如,许多图像处理算法属于这一类,因为对每个图像像素进行相同的计算(图像滤波等)。根据我在这些计算方面的经验,你可以达到x50加速甚至更高。 (比较高端CPU和高端GPU&#39)
如果您的应用程序受计算限制并且计算数据是并行的(参见1.),则确实如此。
通常GPU核心的工作时钟频率低于(低于1 GHz),因此您可能会说每个CPU核心(一般来说)都比每个GPU核心具有更高的性能。事情是现代GPU拥有数千个核心。