第9章 案例分析:图像聚类 - 9.4 性能分析

优质
小牛编辑
139浏览
2023-12-01

为了展示不同的内核实现对于性能的影响,我们将这些内核都在Radeon HD 7970 GPU上执行了一遍。为了展示对不同数据大小的性能优化,我们也生成除了对应的SURF描述符和集群质心。生成的SURF描述符数量为4096,16384和65536。同时,对应质心的数量为16,64和256。我们选取数量较大的SURF特征,是因为对于一张高分辨率的图来说,通常都包含成千上万个特征。不过,对于质心来说其数量就相对较少,如果质心的数量过多会影响图像分类的准确度。

这里的性能数据是由相应的性能分析工具给出,这里我们使用了AMD公司的CodeXL,第10章中我们会对该工具进行介绍。本章主要描述对于OpenCL内核代码进行优化后的性能情况。这里还需要注意的是,目标平台的架构对于优化代码来说也有很大的影响。

9.4.1 GPU性能

我们将GPU1内核作为OpenCL内核实现的基线。在使用GPU2处理描述符和质心前,我们是用到了矩阵转置对描述符进行了转置操作。转置操作属于另外一个内核,为了避免这个因素影响我们之后优化的内核,这里将转置的时间单独列出来,在表9.1中展示。那么第二个内核,也就是直方图内核的性能数据在表9.2中展示。

表9.1 转置内核执行的时间

特征数量转置内核耗时(ms)
40960.05
16,3840.50
65,5362.14

表9.2 直方图——不同内核实现的耗时统计

集群数量SURF描述符数量GPU1GPU2GPU3GPU4GPU5
840960.410.270.100.170.09
816,3483.600.280.170.690.19
865,53615.361.050.591.310.74
1640960.770.530.190.280.14
1616,3487.100.530.320.570.29
1665,53630.411.471.172.261.12
6440966.003.531.341.000.43
6416,34828.282.111.202.960.86
6465,536122.095.804.659.043.87
12840964.964.041.471.950.81
12816,34855.704.272.405.891.61
12865.536243.3011.639.2917.466.43
256409610.498.062.844.351.57
25616,348109.678.624.7711.443.13
25665,536488.5423.2818.7134.7313.97