Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Sep 2008 16:24:20 -0500
From:      Stephen Montgomery-Smith <stephen@math.missouri.edu>
To:        Dan Nelson <dnelson@allantgroup.com>
Cc:        Martin Cracauer <cracauer@cons.org>, freebsd-current@freebsd.org, Steve Kargl <sgk@troutmask.apl.washington.edu>
Subject:   Re: Improved multiprocessor usage on amd64
Message-ID:  <48D17584.9020306@math.missouri.edu>
In-Reply-To: <20080916041142.GH3188@dan.emsphone.com>
References:  <48CDBC78.4010409@math.missouri.edu> <20080915195021.GA69528@cons.org> <48CEFF74.8020602@math.missouri.edu> <20080916033459.GA31220@troutmask.apl.washington.edu> <48CF2AEF.9070208@math.missouri.edu> <48CF2CA4.1000802@math.missouri.edu> <20080916041142.GH3188@dan.emsphone.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Dan Nelson wrote:
> In the last episode (Sep 15), Stephen Montgomery-Smith said:
>> Stephen Montgomery-Smith wrote:
>>> Steve Kargl wrote:
>>>> On Mon, Sep 15, 2008 at 07:36:04PM -0500, Stephen Montgomery-Smith wrote:
>>>>> ... and each thread is a loop of the form
>>>>>
>>>>> while (1) {
>>>>>   wait until told to start;
>>>>>   do massive amounts of floating point arithmetic (only additions and
>>>>> multiplications) on large arrays;
>>>>>   tell the master process that you are done;
>>>>> }
>>>>>
>>>>>> Do you have about as many threads as processor or more?
>>>>> Both ways.  The time difference between the two approaches is 
>>>>> negligible.
>>>>>
>>>> Are you using ULE?  With my MPI applications, if the number of
>>>> launched processes exceeds the number of cpus by 1, ULE falls
>>>> through the floor.  I have a nagging feeling that there is a problem 
>>>> with cpu affinity.
>>>>
>>>> http://lists.freebsd.org/pipermail/freebsd-current/2008-July/086917.html
>> Let me say a little bit more.
>>
>> I have this gut feeling that the problem has a lot to do with cache 
>> management.  My program has each thread doing, in effect, huge matrix 
>> multiplications, each one working on their own little bit.  If a CPU 
>> core changes from one thread to another, it then has to flush out the 
>> cache to RAM, and read in a whole bunch of other RAM into cache.
> 
> You can try playing with the new cpuset functions in HEAD and 7-STABLE
> to lock particular threads on certain CPUs.
> 

It was an excellent suggestion.  But it didn't make any difference.





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?48D17584.9020306>