[Insight-developers] FloatingPointExceptions and failed tests in Mac

Bill Lorensen bill.lorensen at gmail.com
Mon Dec 20 22:21:00 EST 2010


Luis,

As an experiment, you could set the environment variable and run the
tests that are failing
ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS=1
export ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS

On Mon, Dec 20, 2010 at 8:06 PM, Bill Lorensen <bill.lorensen at gmail.com> wrote:
> My analysis is weak and probably wrong, but I do believe it is a thread issue.
>
> On Mon, Dec 20, 2010 at 7:58 PM, Bill Lorensen <bill.lorensen at gmail.com> wrote:
>> I'm pretty sure the AddPixel method in RankHistogram is not thread
>> safe. It modifies m_Entries which is also used in GetValueBruteForce
>> (and GetValue). I think RemovePIxel has the same issue.
>>
>>
>> On Mon, Dec 20, 2010 at 7:44 PM, Bill Lorensen <bill.lorensen at gmail.com> wrote:
>>> It may be a threading issue.
>>>
>>> On Mon, Dec 20, 2010 at 7:24 PM, Luis Ibanez <luis.ibanez at kitware.com> wrote:
>>>> Hi Bill,
>>>>
>>>> Here is a first peek at what GDB shows for
>>>>
>>>>    ctest -R itkRankImageFilterTest3
>>>>
>>>> ---
>>>>
>>>> It seem to stop at itkRankHistogram.h:279
>>>>
>>>> ----
>>>>
>>>> Program received signal EXC_ARITHMETIC, Arithmetic exception.
>>>> 0x0040deb8 in itk::Function::VectorRankHistogram<unsigned
>>>> char>::GetValueBruteForce (this=0x1d8e4f0) at itkRankHistogram.h:279
>>>> 279         unsigned long target = (unsigned long)( m_Rank * ( m_Entries -
>>>> 1 ) ) + 1;
>>>> (gdb) bt
>>>> #0  0x0040deb8 in itk::Function::VectorRankHistogram<unsigned
>>>> char>::GetValueBruteForce (this=0x1d8e4f0) at itkRankHistogram.h:279
>>>> #1  0x003ff885 in itk::Function::VectorRankHistogram<unsigned
>>>> char>::GetValue (this=0x1d8e4f0) at itkRankHistogram.h:293
>>>> #2  0x00401390 in itk::MovingHistogramImageFilter<itk::Image<unsigned
>>>> char, 2u>, itk::Image<unsigned char, 2u>,
>>>> itk::FlatStructuringElement<2u>, itk::Function::RankHistogram<unsigned
>>>> char> >::ThreadedGenerateData (this=0x1d89500,
>>>> outputRegionForThread=@0xbffff20c, threadId=0) at
>>>> itkMovingHistogramImageFilter.txx:130
>>>> #3  0x000948fc in itk::ImageSource<itk::Image<unsigned char, 2u>
>>>>>::ThreaderCallback (arg=0x200ea44) at itkImageSource.txx:302
>>>> #4  0x00530243 in itk::MultiThreader::SingleMethodExecute
>>>> (this=0x200ea00) at
>>>> /Users/ibanez/Dashboards/src/ITK/Code/Common/itkMultiThreader.cxx:324
>>>> #5  0x00094823 in itk::ImageSource<itk::Image<unsigned char, 2u>
>>>>>::GenerateData (this=0x1d89500) at itkImageSource.txx:251
>>>> #6  0x0053ebce in itk::ProcessObject::UpdateOutputData
>>>> (this=0x1d89500) at
>>>> /Users/ibanez/Dashboards/src/ITK/Code/Common/itkProcessObject.cxx:978
>>>> #7  0x0052a849 in itk::DataObject::UpdateOutputData (this=0x1d89630)
>>>> at /Users/ibanez/Dashboards/src/ITK/Code/Common/itkDataObject.cxx:408
>>>> #8  0x0000eec3 in itk::ImageBase<2u>::UpdateOutputData
>>>> (this=0x1d89630) at itkImageBase.txx:283
>>>> #9  0x0052a59a in itk::DataObject::Update (this=0x1d89630) at
>>>> /Users/ibanez/Dashboards/src/ITK/Code/Common/itkDataObject.cxx:333
>>>> #10 0x0053f809 in itk::ProcessObject::Update (this=0x1d89500) at
>>>> /Users/ibanez/Dashboards/src/ITK/Code/Common/itkProcessObject.cxx:612
>>>> #11 0x003fc562 in itkRankImageFilterTest (ac=4, av=0xbffff990) at
>>>> /Users/ibanez/Dashboards/src/ITK/Testing/Code/Review/itkRankImageFilterTest.cxx:99
>>>> #12 0x00009e66 in main (ac=5, av=0xbffff98c) at itkTestMain.h:175
>>>>
>>>>
>>>> I don't quite see why...
>>>>
>>>> The relevant values in this line are:
>>>>
>>>> (gdb) print m_Rank
>>>> $1 = 0.5
>>>> (gdb) print m_Entries
>>>> $2 = 20
>>>> (gdb) print target
>>>> $3 = 30991600
>>>>
>>>>
>>>> I'm wondering if I should tell gdb to stop when
>>>> that specific exceptions are thrown...
>>>>
>>>> I'm taking a look at the gdb tutorial / documentation...
>>>>
>>>>
>>>>     Luis
>>>>
>>>>
>>>> ----------------------
>>>> On Mon, Dec 20, 2010 at 4:35 PM, Bill Lorensen <bill.lorensen at gmail.com> wrote:
>>>>> Luis,
>>>>>
>>>>> These may be related to the compiler using "old" fp instructions for
>>>>> some math functions.
>>>>> See for example:
>>>>> http://www.mail-archive.com/core-libs-dev@openjdk.java.net/msg01325.html
>>>>>
>>>>> If you run one of the failing tests with gdb it should pinpoint the problem.
>>>>>
>>>>> It may be we can't fix it, but at least give it a shot,
>>>>>
>>>>> Bill
>>>>>
>>>>> On Sun, Dec 19, 2010 at 8:55 AM, Hans Johnson <hans-johnson at uiowa.edu> wrote:
>>>>>> Luis,
>>>>>>
>>>>>> I don’t think there are special flags required.  There are flags that can
>>>>>> change the behavior of how floating point exceptions behave, but these are
>>>>>> usually things that simply ignore exceptions, or allow undefined behavior in
>>>>>> order to get speed increases.
>>>>>>
>>>>>> My gut feeling is that we should spend a little more time verifying that the
>>>>>> floating point report can not be made cleaner by fortifying the code (rather
>>>>>> than changing what is reported).
>>>>>>
>>>>>> Kent is on vacation until after the first of the year, so perhaps we should
>>>>>> dis-able this for the next 2 weeks and then take this back up in January.
>>>>>>
>>>>>> Hans
>>>>>>
>>>>>> Hans
>>>>>> --
>>>>>> Hans J. Johnson, Ph.D.
>>>>>> Hans-johnson at uiowa.edu
>>>>>>
>>>>>> 278 GH
>>>>>> The University of Iowa
>>>>>> Iowa City, IA 52241
>>>>>> (319) 353 8587
>>>>>>
>>>>>>
>>>>>> ________________________________
>>>>>> From: Luis Ibanez <luis.ibanez at kitware.com>
>>>>>> Date: Sat, 18 Dec 2010 19:01:40 -0500
>>>>>> To: Bill Lorensen <bill.lorensen at gmail.com>
>>>>>> Cc: Hans Johnson <hans-johnson at uiowa.edu>, ITK <insight-developers at itk.org>,
>>>>>> Kent Williams <norman-k-williams at uiowa.edu>
>>>>>> Subject: Re: [Insight-developers] FloatingPointExceptions and failed tests
>>>>>> in Mac
>>>>>>
>>>>>> Hi Bill,
>>>>>>
>>>>>> Yes, that's the flag that I have ON in thurmite.kitware.
>>>>>>
>>>>>> I may have misunderstood Hans, but I thought that
>>>>>> he was implying that an additional set of compilation
>>>>>> options will make this flag to work correctly in the mac.
>>>>>>
>>>>>> Currently this build is reporting
>>>>>>
>>>>>> 19 failing tests in Debug
>>>>>> http://www.cdash.org/CDash/buildSummary.php?buildid=804592
>>>>>>
>>>>>> and
>>>>>>
>>>>>> 139 failing tests in Release:
>>>>>> http://www.cdash.org/CDash/buildSummary.php?buildid=804592
>>>>>>
>>>>>>
>>>>>>      Luis
>>>>>>
>>>>>>
>>>>>> ----------------------
>>>>>> On Fri, Dec 17, 2010 at 5:05 PM, Bill Lorensen <bill.lorensen at gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>> //Enable Floating Point Exceptions for Testing
>>>>>> ITK_USE_FLOATINGPOINTEXCEPTIONS:BOOL=ON
>>>>>>
>>>>>>
>>>>>> On Fri, Dec 17, 2010 at 5:04 PM, Luis Ibanez <luis.ibanez at kitware.com>
>>>>>> wrote:
>>>>>>> Hi Hans,
>>>>>>>
>>>>>>> What compilation options should I use in Mac in order
>>>>>>> to get the floating point exceptions to work ?
>>>>>>>
>>>>>>> I'll add them to the ctest script for thurmite.kitware.
>>>>>>>
>>>>>>>
>>>>>>>      Luis
>>>>>>>
>>>>>>>
>>>>>>> --------------------------------------------
>>>>>>> On Fri, Dec 17, 2010 at 11:15 AM, Hans Johnson <hans-johnson at uiowa.edu>
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Luis,
>>>>>>>>
>>>>>>>> Let’s not rule out the possibility that a different set of floating point
>>>>>>>> exceptions ARE Working on mac with the compile options.  So far the
>>>>>>>> reported
>>>>>>>> errors have identified real problems in ITK.
>>>>>>>>
>>>>>>>> Hans
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On 12/17/10 10:11 AM, "Luis Ibanez" <luis.ibanez at kitware.com> wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> Kent, Hans, Brad,
>>>>>>>>
>>>>>>>> Looking closer at the tests that are failing in thurmite.kitware (a Mac
>>>>>>>> mini):
>>>>>>>>
>>>>>>>> In Debug mode: 19 failing tests:
>>>>>>>> http://www.cdash.org/CDash/viewTest.php?onlyfailed&buildid=803613
>>>>>>>>
>>>>>>>> and in Release mode, 139 failing tests:
>>>>>>>> http://www.cdash.org/CDash/viewTest.php?onlyfailed&buildid=802532
>>>>>>>>
>>>>>>>>
>>>>>>>> They turned out to be related to the fact that this build has ON the
>>>>>>>> flag:
>>>>>>>>
>>>>>>>>                   ITK_USE_FLOATINGPOINTEXCEPTIONS
>>>>>>>>
>>>>>>>> When I turn the flag OFF, the build returns with only 6 tests failing:
>>>>>>>> http://www.cdash.org/CDash/viewTest.php?onlyfailed&buildid=803142
>>>>>>>>
>>>>>>>>
>>>>>>>> Are you aware of any reason why the floating point exceptions
>>>>>>>> shouldn't  work in a Mac ?
>>>>>>>>
>>>>>>>> and if so, ...
>>>>>>>> should we add some logic in the CMakeLists.txt file to
>>>>>>>> hide this flag when configuring in macs ?
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>      Thanks
>>>>>>>>
>>>>>>>>
>>>>>>>>            Luis
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Powered by www.kitware.com <http://www.kitware.com>
>>>>>>>
>>>>>>> Visit other Kitware open-source projects at
>>>>>>> http://www.kitware.com/opensource/opensource.html
>>>>>>>
>>>>>>> Kitware offers ITK Training Courses, for more information visit:
>>>>>>> http://kitware.com/products/protraining.html
>>>>>>>
>>>>>>> Please keep messages on-topic and check the ITK FAQ at:
>>>>>>> http://www.itk.org/Wiki/ITK_FAQ
>>>>>>>
>>>>>>> Follow this link to subscribe/unsubscribe:
>>>>>>> http://www.itk.org/mailman/listinfo/insight-developers
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>


More information about the Insight-developers mailing list