识别Haskell中函数的当前HEC

Jon*_*tan 5 parallel-processing haskell

我正在使用Strategies编写并行Haskell程序.它没有做它应该做的事情,我想检查一个函数执行的Haskell执行上下文(HEC).

是否有一个getHEC调用或类似的东西,我可以在我的调试输出中使用?

bit*_*ket 4

threadCapability您可以通过调用from来找出 Haskell 线程正在运行的功能(即 CPU 核心)Control.Concurrent

如果您使用 运行程序+RTS -N,每个核心都会生成一个操作系统级线程 (HEC),因此返回的功能编号threadCapability将告诉您forkIO绿色线程正在哪个操作系统线程上运行。但是,如果您使用 显式指定操作系统线程数+RTS -Nn(其中n是系统上核心数以外的某个整数),则这对您来说可能不太有用。

您可能还会发现ThreadScope对于调试和可视化并行程序的执行很有用。