[Insight-developers] Addressing Failures of ResampleImageFilter9Test
Tom Vercauteren
tom.vercauteren at m4x.org
Tue Aug 18 07:44:04 EDT 2009
Hi Bill,
sse2 can indeed change numerical precision, for example if the sse fpu
is used. However, it is possible to use sse2 functions without
switching to the sse fpu (see the -mfpmath and -msse2 options of gcc).
In our case, there is nothing with the VNL_CONFIG_ENABLE_SSE2_ROUNDING
option that forces the fpu to be the sse one.
My point was rather that the current failing test is not very
meaningful since it relies on invalid assumptions on floating point
computations. No matter what FPU is used, there is no guarantee that
0.4 + 6*0.35 provides a portable answer.
This numerical precision topic will be even more complicated by the
fact that extended precision (i.e. doubles are internally represented
as 80 bits and not 64,
http://en.wikipedia.org/wiki/Extended_precision) should also be taken
into account.
Tom
On Tue, Aug 18, 2009 at 12:54, Bill Lorensen<bill.lorensen at gmail.com> wrote:
> Tom,
>
> I think we are both correct. It is a precision issue, but I think sse2
> affects precision. At least that's what I can gather from :
> http://en.wikipedia.org/wiki/SSE2
>
> Bill
>
> On Tue, Aug 18, 2009 at 5:21 AM, Tom
> Vercauteren<tom.vercauteren at gmail.com> wrote:
>> Hi Bill,
>>
>> Further testing seems to support the fact that this is not a sse2
>> rounding issue but rather a numerical precision one that cannot be
>> avoided.
>>
>> To be more specific, in "real math" we should have
>> 0.4 + 6*0.35 == 2.5
>> with floating point arithmetic, on some systems, we might have
>> 0.4 + 6*0.35 == 2.5
>> whereas on others the same operation might lead to
>> 0.4 + 6*0.35 < 2.5
>>
>> It appears that the test is failing because of exactly that. The
>> origin is 0.4 the spacing is 0.35, the first pixel that shows a
>> difference is the 6th one and further failing pixels are located every
>> 20 pixels (note that 20*0.35=7 is the first integer value we can get).
>>
>> I would vote for making the comparison less stringent. Thoughts?
>>
>> Tom
>>
>> P.S. The attached small test case illustrate the numerical precision
>> "issue" above and shows that this is apparently unrelated to sse2
>> rounding.
>>
>>
>> On Tue, Aug 18, 2009 at 09:17, Tom Vercauteren<tom.vercauteren at gmail.com> wrote:
>>> Hi Bill,
>>>
>>> Thanks for investigating this. VNL_CONFIG_ENABLE_SSE2_ROUNDING is
>>> meant to have no effect (except speed) on the results. If it has, it's
>>> a bug.
>>>
>>> I'll try and get some time to look into this issue.
>>>
>>> Tom
>>>
>>> On Mon, Aug 17, 2009 at 19:51, Bill Lorensen<bill.lorensen at gmail.com> wrote:
>>>> Luis,
>>>>
>>>> I believe I found the partition. I checked most (not all)
>>>> CMakeLists.txt files (in the itkSystemInformationTest output) for
>>>> passing and failing platforms.
>>>>
>>>> Here is what I concluded:
>>>>
>>>> Platforms that are failing have a common cmake variable set:
>>>> //Enable Streaming SIMD Extensions 2 implementation of rounding
>>>> // (hardware dependant).
>>>> VNL_CONFIG_ENABLE_SSE2_ROUNDING:BOOL=ON
>>>>
>>>> those that are passing have one of two conditions:
>>>>
>>>> 1) ITK_USE_CENTERED_PIXEL_COORDINATES_CONSISTENTLY:BOOL=OFF
>>>> or
>>>> 2) VNL_CONFIG_ENABLE_SSE2_ROUNDING:BOOL=OFF
>>>>
>>>> Should we expect the same results regardless of the SSE2 setting? If
>>>> not, then we can check in another baseline. If the results should be
>>>> the same, we have some work to do.
>>>>
>>>> Bill
>>>>
>>>>
>>>> On Sun, Aug 16, 2009 at 12:30 PM, Luis Ibanez<luis.ibanez at kitware.com> wrote:
>>>>>
>>>>> FYI:
>>>>>
>>>>> The test "ResampleImageFilter9Test":
>>>>>
>>>>> Has been failing since we enabled the flag
>>>>>
>>>>> ITK_USE_CENTERED_PIXEL_COORDINATES_CONSISTENTLY
>>>>>
>>>>> What seems to be special about this test is that it runs
>>>>> on an image of RGBPixels, and therefore, it uses:
>>>>>
>>>>> itk::VectorResampleImageFilter and
>>>>> itk::VectorNearestNeighborInterpolateImageFunction
>>>>>
>>>>> What is curious, is that is passes on some machines and fails
>>>>> on others, and it doesn't seem to be a clear partition between
>>>>> the two groups, (see this link):
>>>>> http://www.cdash.org/CDash/testSummary.php?project=2&name=ResampleImageFilter9Test&date=2009-08-16
>>>>>
>>>>>
>>>>> We will be following on this during the week....
>>>>>
>>>>>
>>>>> Any suggestions/hints are welcome...
>>>>>
>>>>>
>>>>> Thanks
>>>>>
>>>>>
>>>>> Luis
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Powered by www.kitware.com
>>>>>
>>>>> Visit other Kitware open-source projects at
>>>>> http://www.kitware.com/opensource/opensource.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
>>>>
>>>> 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