我有一个OpenCL顺序程序和一个由相同算法组成的并行程序。我的执行时间结果为133000毫秒(顺序)和17毫秒(并行内核时间)。因此,当我计算出133000/17的加速时,我得到7823作为加速。是否可以加速这么快?
答案 0 :(得分:0)
这样的加速可能会发生(但似乎很大;对我来说,加速7823看起来可疑但并非完全不可能,请参阅例如these slides和that。 100倍因素似乎更合理)。据传,昂贵的显卡能够以几万亿次的速度运行。单核仅提供gigaflops。某些特定程序甚至可以在GPGPU上比在CPU上运行速度慢。
在对CPU代码进行基准测试时,请确保在编译器中启用优化(例如,使用{{1}}至少使用GCC进行编译)。没有任何优化(例如{{1}}),CPU性能很慢(例如,使用{{1}}和{{1}}获得的二进制之间的3倍因子很常见。)
BTW,cache考虑因素对CPU性能很重要。如果您编写了数字CPU代码而没有考虑到这一点,那么它可能会很慢(在奇怪的情况下,它有错误的locality of reference)。
答案 1 :(得分:0)
如果内核函数有问题且尚未执行,则时间结果将不准确