The fundamental difference is in

src/topology-linux.c:3251

when this if statement is true, hwloc_setup_pu_level
finds the PU objects.
When it is false, it fails with empty topology.

I checked HWLOC_LINUX_USE_CPUINFO,
and it is not detected even when I set it from the front end.

That means the difference is whether hwloc can access
the various /sys/devices and /sys/bus files.

Additional printfs confirm that with MPI in the code,
hwloc_accessat succeeds on the various /sys/ directories,
but the overall procedure for getting PUs from these fails.
Without MPI, access to /sys/ directories fails but
the fallback hwloc_setup_pu_level works.

due to the unstable nature of the machine I'm having trouble
submitting more tests to see what goes wrong using the /sys information.

On Thu, Mar 22, 2012 at 6:47 PM, Daniel Ibanez <dan.a.iba...@gmail.com>wrote:

> I've compiled this test, but the machine is on hold for their own testing.
> I should be able to run in two days and report the results.
>
>
> On Thu, Mar 22, 2012 at 6:36 PM, Brice Goglin <brice.gog...@inria.fr>wrote:
>
>> Le 22/03/2012 23:33, Daniel Ibanez a écrit :
>> > I've run this test  before (didnt keep the results but can run it
>> again).
>> > I got debug output and compared it with the output from a hwloc test
>> > executable
>> > and I noticed that my program did not show any PU objects were
>> discovered.
>> > In my program the first discovered topology is just a Machine object,
>> > but in the hwloc program its a Machine object and 64 PU objects.
>> > something went wrong in PU detection...
>>
>> If I am reading your output correctly, all PUs are created by
>> setup_pu_level() depending on the return value of
>> hwloc_fallback_nbprocessors() defined in src/topology.c. Any chance you
>> add some printf there to understand what's going on?
>> hwloc_fallback_nbprocessors() would likely return 64 when things work
>> and 0 otherwise here.
>>
>> Brice
>>
>>
>
>
> --
>
> Dan Ibanez
>



-- 

Dan Ibanez

Reply via email to