0

我正在以下机器上实现一个 OpenMP 多线程程序。

x86_64, On-line CPU(s) list:   0-23
Thread(s) per core:    2
Core(s) per socket:    6
Socket(s):             2

它是一个多线程集群程序。它显示了数据集大小的预期加速,2 mil rows ~ 250 MB data但在更大的数据集上进行测试时,htop显示中的许多线程D state和 CPU% 大大低于99-100%. 请注意,对于达到此大小的数据大小,每个线程都在R state CPU% ~100%. 运行时间成为~100顺序情况的数倍。

空闲内存似乎可用,swp所有情况下的内存都是 0。

关于使用的数据结构,有 3 个共享数据结构大小 O(n),然后每个线程创建其私有链表,存储该链表以进一步合并步骤。我怀疑这是因为每个线程数据结构使用了额外的内存,但即使我将它注释掉,程序也会显示同样的问题。请让我知道我是否应该提供更多详细信息。

几个月前我才开始学习 OpenMP 和并行计算,所以请告诉我可能会出现什么问题?

4

0 回答 0