【发布时间】:2015-08-27 18:21:56
【问题描述】:
我正在尝试使用 Metal 进行计算并测量我的一些内核的性能。这是我用来测量的:
self.measureMetrics(XCTestCase.defaultPerformanceMetrics(), automaticallyStartMeasuring: false) {
do {
let commandBuffer = device.newCommandQueue().commandBuffer()
try reverse(library, commandBuffer: commandBuffer, dataBuffer: dataBuffer, bufferSize: uint(data.count), elementSize: uint(sizeof(Int)))
self.startMeasuring()
commandBuffer.commit()
commandBuffer.waitUntilCompleted()
self.stopMeasuring()
} catch {
print("Exception")
}
}
reverse 函数本身只使用计算命令编码器将命令编码到缓冲区中。如果重要,dataBuffer 在StorageModeShared 中。
我得到的性能结果是[0.015457, 0.004573, 0.005718, 0.006153, 0.005495, 0.005555, 0.006460, 0.005946, 0.006363, 0.007379]。鉴于每次都执行相同的任务,我看不出第一次测量值如此之高的原因。
任何想法为什么第一次测量所用的时间与其他时间如此不同?
【问题讨论】: