[Insight-developers] FloatingPointExceptions and failed tests in Mac

Bill Lorensen bill.lorensen at gmail.com
Tue Dec 21 07:22:47 EST 2010


Yes, I noticed that. But there is something thread related in the
failing tests, I believe.

2010/12/21 Gaëtan Lehmann <gaetan.lehmann at jouy.inra.fr>:
>
> Bill,
>
> Those method are not made to be thread safe: each thread should have its own
> instance of RankHistogram, so those method don't need to be thread safe.
>
> Gaëtan
>
>
> Le 21 déc. 10 à 04:21, Bill Lorensen a écrit :
>
>> 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
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>> _______________________________________________
>> Powered by 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
>
> --
> Gaëtan Lehmann
> Biologie du Développement et de la Reproduction
> INRA de Jouy-en-Josas (France)
> tel: +33 1 34 65 29 66    fax: 01 34 65 29 09
> http://voxel.jouy.inra.fr  http://www.itk.org
> http://www.mandriva.org  http://www.bepo.fr
>
>


More information about the Insight-developers mailing list