在图形卡上运行应用程序

时间:2014-08-11 18:20:44

标签: c++ linux gpgpu

我在Ubuntu下开发C ++。我的应用程序有很多线程(超过25个)。

我的问题是:

  1. 如果我要在显卡上运行我的应用程序(称为具有大量内核的CPU),我会看到性能有所改善吗?
  2. 我知道图形卡的内核比I7多(例如),因此我的应用程序将具有更少的上下文切换,因此性能更好,是真的吗?
  3. 图形卡的内核(基本版)是否具有比CPU内核更好的性能?我知道这取决于显卡和CPU类型,但是有一般答案吗?

1 个答案:

答案 0 :(得分:0)

  1. 这取决于您在应用程序中的并行度类型。如果你有任务并行(http://en.wikipedia.org/wiki/Task_parallelism),每个线程正在执行不同的任务(即一个线程正在进行网络连接,另一个线程正在进行计算,渲染等)。 这种类型的并行性不适用于GPU,因为GPU是数据并行机器(http://en.wikipedia.org/wiki/Data_parallelism)。如果需要对许多数据项执行相同的计算,则效率非常高。例如,许多图像处理算法属于这一类,因为对每个图像像素进行相同的计算(图像滤波等)。根据我在这些计算方面的经验,你可以达到x50加速甚至更高。 (比较高端CPU和高端GPU&#39)

  2. 如果您的应用程序受计算限制并且计算数据是并行的(参见1.),则确实如此。

  3. 通常GPU核心的工作时钟频率低于(低于1 GHz),因此您可能会说每个CPU核心(一般来说)都比每个GPU核心具有更高的性能。事情是现代GPU拥有数千个核心。