是什么原因导致openmp程序在大数据集大小的D状态下运行某些线程?

时间:2016-11-17 09:03:08

标签: c linux multithreading openmp htop

我正在以下机器上实现一个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%显着低于{{1 }}。请注意,对于大小达到此大小的数据,每个线程都在99-100%中运行。运行时间比连续情况多R state CPU% ~100%倍。

可用内存似乎可用,~100内存为0。

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

我几个月前才拿起OpenMP和并行计算,所以请让我知道可能出现的问题是什么?

0 个答案:

没有答案