0

我正在使用具有 4 个内核和 4 个线程的 Intel i5 处理器。目前我正在使用 pthreads 和 ISPC(英特尔 SPMD 程序编译器)模拟 mandelbrot 集。当我使用两个线程来计算 mandelbrot 集图像时,基于任务划分,即图像的空间分解,我看到 1.9 倍的速度,当我使用 3 个线程时,我看到 1.65 倍的加速,4 个线程加速到 2.4 倍。由于 i5 有 4 个线程,因此在程序中(使用 pthread)具有足够的并行性,预计速度会提高 4 倍。为什么使用 3 个线程时速度会下降?我没有看到预期加速的原因是什么?在 mandelbrot 的情况下,有哪些方法可以通过充足的并行性获得更高的速度?

注意:我使用 gcc 将 pthreads 作为 API 进行编译。该划分基于图像的空间分解。我没有使用任何锁或信号量。

mandelbrot 的 wiki 链接 http://en.wikipedia.org/wiki/Mandelbrot_set

ISPC 文档的 github 链接 http://ispc.github.io/

如果您发现这些问题无关紧要,请将我重定向到适当的来源。谢谢您的时间。

4

0 回答 0