Reputation: 181
I'm trying to determine the independent CPU's (specified with affinity ID's) for building ATLAS on a linux machine with 4 Intel CPU's with hyperthreading (ubuntu 12.04).
The reason I'm doing this is that the ATLAS manual says to use only the physical cores on machines with hyper threading, on how to achieve this it says: "...you can tell ATLAS to use only the real cores if you learn a little about your machine. Unfortunately, ATLAS cannot presently autodetect these features, but if you experiment you can discover which affinity IDs are the separate cores,..."
Further on a hint is given on how to actually do this experimenting: "...Under Linux, I can discover this with cat /proc/cpuinfo..."
On my machine the file /proc/cpuinfo contains for the eight virtual processors the following information:
...
Processors 0 and 4 share the same core id (and so on for processors 1 and 5, 2 and 6, 3 and 7). However if I specify --force-tids="4 0 1 2 3" to the ATLAS configure script the build fails (first noticable for me by a failing make pcheck). If I don't use this flag make pcheck works fine, as indicated here: http://sourceforge.net/tracker/?func=detail&aid=3577908&group_id=23725&atid=379483.
Does anybody know how I can learn a little about my machine by some experimenting?
Upvotes: 3
Views: 814
Reputation: 2971
Check out likwid (http://code.google.com/p/likwid/), I'm pretty sure it will allow you to pin the threads that ATLAS fires to only the physical cores of your system. Don't know by hart how, but it can.
Upvotes: 0