
前言
我们今天尝试写一个GPU压力测试程序,如果我们写一个CPU压力测试程序,我们知道我们需要让CPU进行繁重的计算,那么对于GPU压力测试程序该怎么做呢?
C++ AMP
首先我们应该会想到,该如何让我们的代码运行在GPU上?一些图形库API会进行硬件加速,如Direct3D和OpenGL。一些异构编程框架如CUDA与OpenCL可以指定代码在GPU上运行。然而这些库使用起来并不简单, 我们可能需要很长时间的学习。那么有没有一种简单并且方便编程的库呢?微软给我们提供了一个选择:C++ AMP(Accelerated Massive Parallelism)库。C++ AMP是一个异构编程框架,使用者可以很方便的利用GPU进行并行计算。C++ AMP库类似于C++ STL库,在Visual Studio中我们只要包含相应的头文件就可以使用它。关于C++ AMP库的详细使用方法,请参考MSDN链接:https://msdn.microsoft.com/zh-cn/library/hh265136。
需要注意的是使用C++ AMP库有如下限制:
●只能在Windows平台下使用Visual Studio进行编程
Windows最低版本Windows 7
Visual Studio最低版本Visual Studio 2012
●只能运行在最低支持DirectX11的显卡上(独立显卡或核心显卡)
曼德勃罗特集
解决了使用C++ AMP在GPU上进行计算的问题?现在我们该思考让GPU计算什么的问题。我们的目标是实现一个GPU压力测试程序,所以我们得保证我们的计算足够复杂。我们知道GPU有大量的计算核心,所以我们可能需要进行并行计算,这样才能让GPU产生压力。曼德勃罗特集是易并行计算的一个典型例子,并且该集合以图像的方式呈现后很有意思,该集合在有些位置可以进行无限放大,如下图:

本文介绍了如何使用C++ AMP库在GPU上编写压力测试程序,通过计算曼德勃罗特集实现对GPU的性能压力测试。详细阐述了C++ AMP库的使用限制,并提供了核心算法的实现,展示了程序运行时GPU的负载情况。
最低0.47元/天 解锁文章
923

被折叠的 条评论
为什么被折叠?



