Skip to content

Multi-threaded code on ARM64 GHC runtime doesn't use all available cores

This is the machine: http://www.cnx-software.com/2016/04/30/setup-guide-mini-review-of-bq-aquaris-m10-ubuntu-edition-tablet-from-a-developers-perspective/

Haskell ray-tracer that uses Control.Parallel.Strategies and parBuffer that is working well on x64 machine and using all the cores available use only 2 cores from 4 in total on that ARM machine. This machine usually work on two cores only and when it sees that they are used more - it enables two more to get total of four cores. If I give "+RTS -N4" it works just fine. So I think the problem is that the runtime doesn't check for all available cores, but only for enabled.

In the first link you could see that "lscpu" returns 4 cores in total.

Trac metadata
Trac field Value
Version 7.10.3
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Runtime System
Test case
Differential revisions
BlockedBy
Related
Blocking
CC simonmar
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information