【发布时间】:2010-04-12 15:12:23
【问题描述】:
我的教授发现了这个使用 SSE 和 OpenMP 进行 3D 线性可分内核卷积的有趣实验,并交给我对我们系统的统计数据进行基准测试的任务。作者声称串行方法的速度提高了 18 倍!可能并非总是如此,但我们预计在双核 Intel 上运行它至少可以加快 2-4 倍。
唉,我们找不到任何加速。无论有没有 OpenMP,串行代码的性能总是更好。
我正在使用Linux,并观察到某种趋势...当系统上没有其他进程正在运行时,一段时间后loadavg开始增加,并且%CPU利用率下降。
我意外遇到的另一个可能的误报...我启动了程序,然后立即暂停了它。然后我用 bg 在后台运行它,发现加速比超过 2。这种情况一直都在发生!
任何建议都会很棒。
谢谢, 萨彦
【问题讨论】:
-
你确定你的cpu速度是瓶颈吗?
-
很抱歉排除了一个重要部分。我只是向程序发送两件事,XYZSize 和程序应该运行的次数。因此,在具有 4 GB RAM 的双核上,如果我将 1024X1024x1024 传递给整数值,则满足 4GB 的限制。可能这就是为什么 %CPU 下降和 loadavg 增加会发生奇怪的事情的原因。但即使对于较小的值,如 16、32、64 或 256(程序接受 XYZSize 为 8 的倍数),也绝对没有加速。
标签: openmp sse convolution