我想知道如何逐步在GPU中产生高负载。 我尝试做的是一个程序,它将最大负载放入MP,然后放入其他,直到达到MP的总数。
类似于执行"而真实"在CPU的每个核心中,但我不确定相同的范例是否可以在带有CUDA的GPU上运行。
你能帮助我吗?
答案 0 :(得分:1)
如果您想进行压力测试/功耗测试,则需要选择工作负载。使用仅计算代码的最高功耗最有可能通过一些合成基准测试获得,该基准测试为GPU提供最佳混合和操作顺序。否则,BLAS 3级可能非常接近最优。
仅将负载放在一定数量的多处理器上需要调整工作负载以限制块级并行性。
简而言之,这就是我要做的事情:
答案 1 :(得分:-1)
我的一些基准测试通过CUDA,OpenMP和程序化多线程执行相同的计算。执行的算术运算的形式为x [i] =(x [i] + a)* b - (x [i] + c)* d +(x [i] + e)* f,其中2,8或32在每个数据元素上添加或减去和相乘。还使用一系列数据大小。 [免费] Linux的基准,源代码和结果来自我的页面:
http://www.roylongbottom.org.uk/linux%20benchmarks.htm
我也提供Windows品种。以下是一些CUDA结果,使用GeForce GTX 650显示最大速度为412 GFLOPS。在四核/ 8线程Core i7上,OpenMP使用SSE指令生成高达91 GFLOPS和多线程高达93 GFLOPS,使用AVX 1生成178 GFLOPS。另请参阅老化和可靠性应用程序部分,其中最苛刻的CUDA测试运行一段时间以显示温度增益,同时进行CPU压力测试。
Core i7 4820K 3.9 GHz Turbo Boost GeForce GTX 650
Linux CUDA 3.2 x64 32 Bits SP MFLOPS Benchmark 1.4 Tue Dec 30 22:50:52 2014
CUDA devices found
Device 0: GeForce GTX 650 with 2 Processors 16 cores
Global Memory 999 MB, Shared Memory/Block 49152 B, Max Threads/Block 1024
Using 256 Threads
Test 4 Byte Ops Repeat Seconds MFLOPS First All
Words /Wd Passes Results Same
Data in & out 100000 2 2500 0.837552 597 0.9295383095741 Yes
Data out only 100000 2 2500 0.389646 1283 0.9295383095741 Yes
Calculate only 100000 2 2500 0.085709 5834 0.9295383095741 Yes
Data in & out 1000000 2 250 0.441478 1133 0.9925497770309 Yes
Data out only 1000000 2 250 0.229017 2183 0.9925497770309 Yes
Calculate only 1000000 2 250 0.051727 9666 0.9925497770309 Yes
Data in & out 10000000 2 25 0.369060 1355 0.9992496371269 Yes
Data out only 10000000 2 25 0.201172 2485 0.9992496371269 Yes
Calculate only 10000000 2 25 0.048027 10411 0.9992496371269 Yes
Data in & out 100000 8 2500 0.708377 2823 0.9571172595024 Yes
Data out only 100000 8 2500 0.388206 5152 0.9571172595024 Yes
Calculate only 100000 8 2500 0.092254 21679 0.9571172595024 Yes
Data in & out 1000000 8 250 0.478644 4178 0.9955183267593 Yes
Data out only 1000000 8 250 0.231182 8651 0.9955183267593 Yes
Calculate only 1000000 8 250 0.053854 37138 0.9955183267593 Yes
Data in & out 10000000 8 25 0.370669 5396 0.9995489120483 Yes
Data out only 10000000 8 25 0.202392 9882 0.9995489120483 Yes
Calculate only 10000000 8 25 0.049263 40599 0.9995489120483 Yes
Data in & out 100000 32 2500 0.725027 11034 0.8902152180672 Yes
Data out only 100000 32 2500 0.407579 19628 0.8902152180672 Yes
Calculate only 100000 32 2500 0.113188 70679 0.8902152180672 Yes
Data in & out 1000000 32 250 0.497855 16069 0.9880878329277 Yes
Data out only 1000000 32 250 0.261461 30597 0.9880878329277 Yes
Calculate only 1000000 32 250 0.060132 133042 0.9880878329277 Yes
Data in & out 10000000 32 25 0.375882 21283 0.9987964630127 Yes
Data out only 10000000 32 25 0.207640 38528 0.9987964630127 Yes
Calculate only 10000000 32 25 0.054718 146204 0.9987964630127 Yes
Extra tests - loop in main CUDA Function
Calculate 10000000 2 25 0.018107 27613 0.9992496371269 Yes
Shared Memory 10000000 2 25 0.007775 64308 0.9992496371269 Yes
Calculate 10000000 8 25 0.025103 79671 0.9995489120483 Yes
Shared Memory 10000000 8 25 0.008724 229241 0.9995489120483 Yes
Calculate 10000000 32 25 0.036397 219797 0.9987964630127 Yes
Shared Memory 10000000 32 25 0.019414 412070 0.9987964630127 Yes