5

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

我可以在调试输出中使用 getHEC 调用或类似的方法吗?

4

1 回答 1

4

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

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

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

于 2012-04-11T12:15:12.363 回答