[Insight-developers] [Insight-users] Rounding functions in itkMacro.h

Tom Vercauteren tom.vercauteren at m4x.org
Wed Jul 8 11:27:59 EDT 2009


Hi Aurélie,

There is indeed a bug in the ITK 3.14 release if you change the target
architectures from within the cmake interface. It will be fixed in the
next release. In the meantime, there are two ways to get around this
issue.

1) Start from scratch (i.e. with no CMakeCache.txt file at all) and
let cmake be aware of the target architectures before it does
anything. Example:

  cmake -DCMAKE_OSX_ARCHITECTURES="i386;ppc" <path_to_itk_sources>
  Then fiddle with the cmake options


2) From the cmake interface, manually disble sse2 rounding:

  From the cmake interface, go to the advanced options section
  set VNL_CONFIG_ENABLE_SSE2_ROUNDING to OFF


Hope this helps,
Tom

On Wed, Jul 8, 2009 at 16:57, Aurelie
Canale<Aurelie.Canale at sophia.inria.fr> wrote:
> Hi,
>
> I am trying to compile ITK 3.14 on MAC OS 10.4 and 10.5. Usually there is no
> problem but I tried to do a universal binary, so I used the cmake options
> CMAKE_OSX_ARCHITECTURES', 'STRING', '"i386;ppc"'
> CMAKE_EXE_LINKER_FLAGS', 'STRING', '-bind_at_load'
>
> I get the errors emmintrin.h not found. I saw your conversation about this
> issue but don't understand how to fix it, or which option I should change.
>
> Thanks,
> Aurelie
>
> Wes Turner wrote:
>>
>> Sean and Mathieu,
>>
>> Tom Vercauteren is suggesting the following patch to correct the
>> powerpc 64 issue on the latest dashboard.  Does his proposed solution
>> make sense and would you be willing to try it on RogueResearch3 and/or
>> RogueResearch5?  If it doesn't make sense, we are open to suggestions
>> for resolving the build issue.  Any takers?
>>
>> Thanks in advance!
>>
>> - Wes
>>
>> On Mon, May 18, 2009 at 5:42 AM, Tom Vercauteren
>> <tom.vercauteren at m4x.org> wrote:
>>
>>>
>>> Luis,
>>>
>>> Regarding the two following failures on mac:
>>> http://www.cdash.org/CDash/viewBuildError.php?buildid=335305
>>> http://www.cdash.org/CDash/viewBuildError.php?buildid=335314
>>>
>>> It looks like both machines are compiling for ppc64. I am not familiar
>>> with powerpc but these failures might be related to __powerpc__ not
>>> being defined on ppc64. Apparently, __ppc64__ should be defined in
>>> this case. So changing:
>>>  #if defined(__GNUC__) && (!defined(__APPLE__)  || !defined(__ppc__) )
>>> by
>>>  #if defined(__GNUC__) && (!defined(__ppc__))  && (!defined(__ppc64__))
>>> in
>>>  vnl_math.h
>>> seems like a potential fix to me.
>>>
>>> Tom
>>>
>>> On Mon, May 18, 2009 at 10:51, Tom Vercauteren <tom.vercauteren at m4x.org>
>>> wrote:
>>>
>>>>
>>>> Thanks Luis,
>>>>
>>>> Looking at these modifications:
>>>>
>>>> http://www.itk.org/cgi-bin/viewcvs.cgi/Code/Common/itkNearestNeighborExtrapolateImageFunction.h?root=Insight&r1=1.6&r2=1.7&sortby=date
>>>>
>>>> http://www.itk.org/cgi-bin/viewcvs.cgi/Code/Common/itkMacro.h?root=Insight&r1=1.94&r2=1.95&sortby=date
>>>>
>>>> http://www.itk.org/cgi-bin/viewcvs.cgi/Code/Common/itkIndex.h?root=Insight&r1=1.61&r2=1.62&sortby=date
>>>> it looks like some code may be cleanup a bit now. itk::Math::Round
>>>> could be used without checking enclosing it in a ifdef block.
>>>>
>>>> I also had a quick look at the dashboard failures (previous ones as it
>>>> is a little early for the current ones). I don't understand some of
>>>> them. For example:
>>>> http://www.cdash.org/CDash/viewBuildError.php?buildid=334444
>>>> leads me to think that -msse2 is required but this flag does not seem
>>>> to appear in ITK_REQUIRED_CXX_FLAGS for this build:
>>>> http://www.cdash.org/CDash/testDetails.php?test=23205678&build=334444
>>>>
>>>> I just tested a gcc 3.4 build on my local machine:
>>>>  CC="gcc-3.4" CXX="g++-3.4" cmake
>>>> -DVNL_CONFIG_ENABLE_SSE2_ROUNDING=ON <path_to_itk>
>>>> and it works fine. I do see the -msse2 flag in ITK_REQUIRED_CXX_FLAGS
>>>> as shown in ITKConfig.cmake.
>>>>
>>>> Similarly
>>>>  CC="gcc-3.4" CXX="g++-3.4" cmake <path_to_itk>
>>>> also works fine and as expected,  -msse2 is not in
>>>> ITK_REQUIRED_CXX_FLAGS since VNL_CONFIG_ENABLE_SSE2_ROUNDING is
>>>> undefined.
>>>>
>>>> I'll try to take some time later today to look at the current
>>>> dashboard failures.
>>>>
>>>> Tom
>>>>
>>>> On Sat, May 16, 2009 at 18:09, Luis Ibanez <luis.ibanez at kitware.com>
>>>> wrote:
>>>>
>>>>>
>>>>> Hi Tom,
>>>>>
>>>>> The patch has been committed.
>>>>>
>>>>> I'll track the Dashboard...
>>>>>
>>>>>    Luis
>>>>>
>>>>> -----------------------------------------------------------------
>>>>> On Sat, May 16, 2009 at 9:09 AM, Luis Ibanez <luis.ibanez at kitware.com>
>>>>> wrote:
>>>>>
>>>>>>
>>>>>> Hi Tom
>>>>>>
>>>>>> Thanks for uploading the new version of the patch.
>>>>>>
>>>>>> I'm first checking that everything will work if we have
>>>>>> ITK_USE_PORTABLE_ROUND set to OFF. Then we
>>>>>> can enable a couple of machines to deal with the ON case.
>>>>>>
>>>>>> So, for the OFF case:
>>>>>>
>>>>>> A) After applying it (locally) three test were failing.
>>>>>>
>>>>>>   1)  itkInterpolateTest
>>>>>>   2)  ResampleImageFilter3Test1
>>>>>>   3)  ResampleImageFilter9Test
>>>>>>
>>>>>>   The first one has been fixed. It had hand-coded
>>>>>>    values that implied the rounding from continuous
>>>>>>   indexes to integers.
>>>>>>
>>>>>>   The two others seems to require new baseline images,
>>>>>>   although it is strange that they are the only ones failing.
>>>>>>
>>>>>> B) In order to use ITK from an external project I had to change
>>>>>>
>>>>>>  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2")
>>>>>>
>>>>>>     to
>>>>>>
>>>>>>  SET(ITK_REQUIRED_CXX_FLAGS "${ITK_REQUIRED_CXX_FLAGS} -msse2")
>>>>>>
>>>>>>
>>>>>> I'm looking at the two remaining failing tests,
>>>>>> and plan to commit your patch by the end of the morning.
>>>>>>
>>>>>>
>>>>>>
>>>>>>    Thanks
>>>>>>
>>>>>>
>>>>>>          Luis
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> -------------------------------------------------------------------------------------------
>>>>>> On Fri, May 15, 2009 at 1:05 PM, Tom Vercauteren
>>>>>> <tom.vercauteren at m4x.org> wrote:
>>>>>>
>>>>>>>
>>>>>>> Hi Luis,
>>>>>>>
>>>>>>> I have posted a new version of the portable round patch on the bug
>>>>>>> tracker:
>>>>>>> http://public.kitware.com/Bug/view.php?id=6558
>>>>>>> http://public.kitware.com/Bug/file_download.php?file_id=2254&type=bug
>>>>>>>
>>>>>>> It fixes the include problem that I mentioned and also modifies two
>>>>>>> things:
>>>>>>> 1) VNL_CONFIG_ENABLE_SSE2_ROUNDING is turned ON by default only if
>>>>>>> the
>>>>>>> compiler supports it natively (i.e. without the -msse2 flag)
>>>>>>> 2) VNL_CONFIG_ENABLE_SSE2_ROUNDING is exported in ITKConfig.cmake.in
>>>>>>>
>>>>>>> Both modification were done to improve the user experience when using
>>>>>>> ITK from an external project.
>>>>>>>
>>>>>>> Regarding point 1:
>>>>>>> My previous patch was setting VNL_CONFIG_ENABLE_SSE2_ROUNDING to ON
>>>>>>> by
>>>>>>> default if the compiler supported sse2 natively OR if it supported it
>>>>>>> with the -msse2 flag. If -msse2 was required, cmake was adding this
>>>>>>> flag by default.
>>>>>>> This is not very nice to the user as it requires him by default to
>>>>>>> also use this flag in its external project even though he didn't
>>>>>>> explicitly ask to add sse2 support.
>>>>>>>
>>>>>>> Regarding point 2:
>>>>>>> If the user explicitly chose to turn  VNL_CONFIG_ENABLE_SSE2_ROUNDING
>>>>>>> and his compiler needs  the -mss2 flag for that, ITK will use it.
>>>>>>> That's fine. Now if ITK is included in an external project, this
>>>>>>> project will also require the -msse2 flag. Adding
>>>>>>> VNL_CONFIG_ENABLE_SSE2_ROUNDING to  ITKConfig.cmake allows the
>>>>>>> external project to know whether it needs to use -msse2 by default or
>>>>>>> not.
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Tom
>>>>>>>
>>>>>>>
>>>>>>> On Wed, May 13, 2009 at 01:05, Luis Ibanez <luis.ibanez at kitware.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>> Tom,
>>>>>>>>
>>>>>>>> Thanks for catching the problem.
>>>>>>>>
>>>>>>>> I'll try running another Experimental tonight.
>>>>>>>>
>>>>>>>>
>>>>>>>>  Luis
>>>>>>>>
>>>>>>>>
>>>>>>>> ------------------------
>>>>>>>> Tom Vercauteren wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Oups, in my previous email
>>>>>>>>>  "I see that vnl_math.h is only included if ITK_USE_PORTABLE_ROUND
>>>>>>>>> is ON."
>>>>>>>>> should have been
>>>>>>>>>  "I see that vnl_math.h is only included if ITK_USE_PORTABLE_ROUND
>>>>>>>>> is
>>>>>>>>> OFF or not defined."
>>>>>>>>>
>>>>>>>>> Tom
>>>>>>>>>
>>>>>>>>> On Tue, May 12, 2009 at 23:26, Tom Vercauteren
>>>>>>>>> <tom.vercauteren at m4x.org>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Hi Luis,
>>>>>>>>>>
>>>>>>>>>> I think I got the culprit. It didn't make sense to me how
>>>>>>>>>> vnl_math_rnd_halfintup could be undeclared. I am using ubuntu 9.04
>>>>>>>>>> with gcc 4.3 and every thing works out fine. Se for example this
>>>>>>>>>> debug
>>>>>>>>>> build with sse2 rounding:
>>>>>>>>>> http://www.cdash.org/CDash/buildSummary.php?buildid=331407
>>>>>>>>>>
>>>>>>>>>> http://www.cdash.org/CDash/testDetails.php?test=22870870&build=331407
>>>>>>>>>>
>>>>>>>>>> The only possible reason for a mising vnl_math_rnd_halfintup is a
>>>>>>>>>> missing or outdated vnl_math.h. Looking back at the code
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> http://public.kitware.com/cgi-bin/viewcvs.cgi/Code/Common/itkMacro.h?root=Insight&view=markup
>>>>>>>>>> I see that vnl_math.h is only included if ITK_USE_PORTABLE_ROUND
>>>>>>>>>> is
>>>>>>>>>> ON. I wasn't using this variable...
>>>>>>>>>>
>>>>>>>>>> Could you please try and recompile by changing
>>>>>>>>>> #ifndef ITK_USE_PORTABLE_ROUND
>>>>>>>>>> #include "vnl/vnl_math.h"
>>>>>>>>>> #endif
>>>>>>>>>> by
>>>>>>>>>> #include "vnl/vnl_math.h"
>>>>>>>>>> in
>>>>>>>>>> itkMacro.h
>>>>>>>>>> ?
>>>>>>>>>>
>>>>>>>>>> Sorry for not giving you a patch but I don't have a development
>>>>>>>>>> machine
>>>>>>>>>> at hand.
>>>>>>>>>>
>>>>>>>>>> Also, I saw from your previous email that you had set
>>>>>>>>>> VNL_CONFIG_ENABLE_SSE2 to ON. This is not used by the sse2
>>>>>>>>>> rounding
>>>>>>>>>> functions which only relies on VNL_CONFIG_ENABLE_SSE2_ROUNDING.
>>>>>>>>>> Since
>>>>>>>>>> VXL developers aresaying that VNL_CONFIG_ENABLE_SSE2 is unstable,
>>>>>>>>>> I
>>>>>>>>>> wouldn't recommend turning this option on.
>>>>>>>>>>
>>>>>>>>>> Hope this helps,
>>>>>>>>>> Tom
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Tue, May 12, 2009 at 18:14, Luis Ibanez
>>>>>>>>>> <luis.ibanez at kitware.com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> HI Tom,
>>>>>>>>>>>
>>>>>>>>>>> Thanks for the new patch.
>>>>>>>>>>>
>>>>>>>>>>> Unfortunately it is not compiling for me.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Here is what I got:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> [ 41%] Building CXX object
>>>>>>>>>>> Code/Common/CMakeFiles/ITKCommon.dir/itkBarrier.o
>>>>>>>>>>> In file included from
>>>>>>>>>>> /home/ibanez/src/Insight/Code/Common/itkTimeStamp.h:23,
>>>>>>>>>>>              from
>>>>>>>>>>> /home/ibanez/src/Insight/Code/Common/itkLightObject.h:21,
>>>>>>>>>>>              from
>>>>>>>>>>> /home/ibanez/src/Insight/Code/Common/itkBarrier.h:20,
>>>>>>>>>>>              from
>>>>>>>>>>> /home/ibanez/src/Insight/Code/Common/itkBarrier.cxx:17:
>>>>>>>>>>> /home/ibanez/src/Insight/Code/Common/itkMacro.h: In function ‘int
>>>>>>>>>>> itk::Math::RoundHalfIntegerUp(float)’:
>>>>>>>>>>> /home/ibanez/src/Insight/Code/Common/itkMacro.h:979: error:
>>>>>>>>>>> ‘vnl_math_rnd_halfintup’ was not declared in this scope
>>>>>>>>>>> /home/ibanez/src/Insight/Code/Common/itkMacro.h: In function ‘int
>>>>>>>>>>> itk::Math::RoundHalfIntegerUp(double)’:
>>>>>>>>>>> /home/ibanez/src/Insight/Code/Common/itkMacro.h:980: error:
>>>>>>>>>>> ‘vnl_math_rnd_halfintup’ was not declared in this scope
>>>>>>>>>>> /home/ibanez/src/Insight/Code/Common/itkMacro.h: In function ‘int
>>>>>>>>>>> itk::Math::RoundHalfIntegerToEven(float)’:
>>>>>>>>>>> /home/ibanez/src/Insight/Code/Common/itkMacro.h:981: error:
>>>>>>>>>>> ‘vnl_math_rnd_halfinttoeven’ was not declared in this scope
>>>>>>>>>>> /home/ibanez/src/Insight/Code/Common/itkMacro.h: In function ‘int
>>>>>>>>>>> itk::Math::RoundHalfIntegerToEven(double)’:
>>>>>>>>>>> /home/ibanez/src/Insight/Code/Common/itkMacro.h:982: error:
>>>>>>>>>>> ‘vnl_math_rnd_halfinttoeven’ was not declared in this scope
>>>>>>>>>>> make[2]: *** [Code/Common/CMakeFiles/ITKCommon.dir/itkBarrier.o]
>>>>>>>>>>> Error 1
>>>>>>>>>>> make[1]: *** [Code/Common/CMakeFiles/ITKCommon.dir/all] Error 2
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> and the SSE flags in my build are ON
>>>>>>>>>>>
>>>>>>>>>>> grep ENABLE_SSE MakeCache.txt
>>>>>>>>>>>
>>>>>>>>>>> VNL_CONFIG_ENABLE_SSE2:BOOL=ON
>>>>>>>>>>> VNL_CONFIG_ENABLE_SSE2_ROUNDING:BOOL=ON
>>>>>>>>>>> //Advanced flag for variable: VNL_CONFIG_ENABLE_SSE2
>>>>>>>>>>> VNL_CONFIG_ENABLE_SSE2-ADVANCED:INTERNAL=1
>>>>>>>>>>> //Modified flag for variable: VNL_CONFIG_ENABLE_SSE2
>>>>>>>>>>> VNL_CONFIG_ENABLE_SSE2-MODIFIED:INTERNAL=1
>>>>>>>>>>> //Advanced flag for variable: VNL_CONFIG_ENABLE_SSE2_ROUNDING
>>>>>>>>>>> VNL_CONFIG_ENABLE_SSE2_ROUNDING-ADVANCED:INTERNAL=1
>>>>>>>>>>> //Modified flag for variable: VNL_CONFIG_ENABLE_SSE2_ROUNDING
>>>>>>>>>>> VNL_CONFIG_ENABLE_SSE2_ROUNDING-MODIFIED:INTERNAL=1
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> BTW: This is a Debug build in gcc 4.3.2, Linux Ubuntu 8.10.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>   Luis
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> =========================================
>>>>>>>>>>> On Tue, May 12, 2009 at 8:48 AM, Tom Vercauteren
>>>>>>>>>>> <tom.vercauteren at m4x.org> wrote:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Luis,
>>>>>>>>>>>>
>>>>>>>>>>>> I have put an updated patch on the bug tracker:
>>>>>>>>>>>>
>>>>>>>>>>>> http://public.kitware.com/Bug/file_download.php?file_id=2236&type=bug
>>>>>>>>>>>>
>>>>>>>>>>>> In addition to the changes I mentioned earlier, it includes some
>>>>>>>>>>>> small
>>>>>>>>>>>> modifications to some CMakeLists.txt in order to ease turning on
>>>>>>>>>>>> SSE2
>>>>>>>>>>>> rounding.
>>>>>>>>>>>> cmake -DVNL_CONFIG_ENABLE_SSE2_ROUNDING=ON <path_to_itk>
>>>>>>>>>>>> and
>>>>>>>>>>>> ccmake <path_to_itk>
>>>>>>>>>>>> switch VNL_CONFIG_ENABLE_SSE2_ROUNDING to on
>>>>>>>>>>>> now also works with gcc
>>>>>>>>>>>>
>>>>>>>>>>>> Let me know if it works for you.
>>>>>>>>>>>>
>>>>>>>>>>>> Tom
>>>>>>>>>>>>
>>>>>>>>>>>> On Tue, May 12, 2009 at 12:43, Tom Vercauteren
>>>>>>>>>>>> <tom.vercauteren at m4x.org> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Hi Luis,
>>>>>>>>>>>>>
>>>>>>>>>>>>> I have almost the same system so this will ease the process.
>>>>>>>>>>>>>
>>>>>>>>>>>>> The problem is indeed related to the -msse2 flag. Running
>>>>>>>>>>>>> cmake -DCMAKE_C_FLAGS="-msse2" -DCMAKE_CXX_FLAGS="-msse2"
>>>>>>>>>>>>> -DVNL_CONFIG_ENABLE_SSE2_ROUNDING=ON <path_to_itk>
>>>>>>>>>>>>> works correctly.
>>>>>>>>>>>>>
>>>>>>>>>>>>> So it looks like the cmake magic used by vxl to detect and add
>>>>>>>>>>>>> sse2
>>>>>>>>>>>>> support is wrong. Actually running
>>>>>>>>>>>>> cmake -DVNL_CONFIG_ENABLE_SSE2_ROUNDING=ON <path_to_itk>
>>>>>>>>>>>>> leads to a cmake error.
>>>>>>>>>>>>>
>>>>>>>>>>>>> This is not specific to the patched itk version as the same
>>>>>>>>>>>>> behavior
>>>>>>>>>>>>> is observed on a pristine checkout of the vxl svn trunk.
>>>>>>>>>>>>>
>>>>>>>>>>>>> There are at least two errors I can see from the cmake scripts
>>>>>>>>>>>>> in vxl
>>>>>>>>>>>>> svn trunk when VNL_CONFIG_ENABLE_SSE2_ROUNDING is ON.
>>>>>>>>>>>>>
>>>>>>>>>>>>> 1)  ADD_DEFINITIONS( -msse2 ) is called after vxl tries to
>>>>>>>>>>>>> detect
>>>>>>>>>>>>> whether it has sse2 support. However this flag is required for
>>>>>>>>>>>>> gcc
>>>>>>>>>>>>> (4.3) to find emmintrin.h and use the sse2 intrinsics.
>>>>>>>>>>>>>
>>>>>>>>>>>>> 2) Even if ADD_DEFINITIONS( -msse2 ) was called prior to
>>>>>>>>>>>>> PERFORM_CHECK_HEADER(emmintrin.h VXL_HAS_EMMINTRIN_H)
>>>>>>>>>>>>> and
>>>>>>>>>>>>> PERFORM_CMAKE_TEST_RUN(vxl_platform_tests.cxx
>>>>>>>>>>>>> VXL_HAS_SSE2_HARDWARE_SUPPORT)
>>>>>>>>>>>>> it wouldn't make a difference since PERFORM_CHECK_HEADER and
>>>>>>>>>>>>> PERFORM_CMAKE_TEST_RUN do not rely on such ADD_DEFINITIONS.
>>>>>>>>>>>>>
>>>>>>>>>>>>> I am not sure how to fix this right now as I am not a cmake
>>>>>>>>>>>>> expert.
>>>>>>>>>>>>> Any help would be appreciated.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Note this this issue does not affect the case when
>>>>>>>>>>>>> VNL_CONFIG_ENABLE_SSE2_ROUNDING is OFF. In such a case, on your
>>>>>>>>>>>>> system, the implementation will fallback to the gcc assembly
>>>>>>>>>>>>> calls,
>>>>>>>>>>>>> e.g.
>>>>>>>>>>>>> inline int vnl_math_rnd_halfinttoeven(float  x) { int r;
>>>>>>>>>>>>> __asm__
>>>>>>>>>>>>> __volatile__ ("fistpl %0" : "=m"(r) : "t"(x) : "st"); return r;
>>>>>>>>>>>>> }
>>>>>>>>>>>>>
>>>>>>>>>>>>> I'll report back if I find a patch for the cmake scripts that I
>>>>>>>>>>>>> find
>>>>>>>>>>>>> reasonable.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Tom
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Tue, May 12, 2009 at 04:27, Luis Ibanez
>>>>>>>>>>>>> <luis.ibanez at kitware.com>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi Tom,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I'm testing this on a Laptop:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>  Linux Ubuntu 8.10
>>>>>>>>>>>>>>  gcc 4.3.2
>>>>>>>>>>>>>>  Intel(R) Core(TM)2 Duo CPU     T9600  @ 2.80GHz
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> The error was a link error.
>>>>>>>>>>>>>> Missing symbols.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> lshw returns the following data from the CPU:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> *-cpu
>>>>>>>>>>>>>>       description: CPU
>>>>>>>>>>>>>>       product: Intel(R) Core(TM)2 Duo CPU     T9600  @ 2.80GHz
>>>>>>>>>>>>>>       vendor: Intel Corp.
>>>>>>>>>>>>>>       physical id: 400
>>>>>>>>>>>>>>       bus info: cpu at 0
>>>>>>>>>>>>>>       version: 6.7.6
>>>>>>>>>>>>>>       slot: Microprocessor
>>>>>>>>>>>>>>       size: 2801MHz
>>>>>>>>>>>>>>       capacity: 2801MHz
>>>>>>>>>>>>>>       width: 64 bits
>>>>>>>>>>>>>>       clock: 266MHz
>>>>>>>>>>>>>>       capabilities: fpu fpu_exception wp vme de pse tsc msr
>>>>>>>>>>>>>> pae
>>>>>>>>>>>>>> mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi
>>>>>>>>>>>>>> mmx
>>>>>>>>>>>>>> fxsr
>>>>>>>>>>>>>> sse sse2 ss ht tm pbe nx x86-64 constant_tsc arch_perfmon pebs
>>>>>>>>>>>>>> bts
>>>>>>>>>>>>>> pni
>>>>>>>>>>>>>> monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 lahf_lm
>>>>>>>>>>>>>> cpufreq
>>>>>>>>>>>>>>       configuration: id=0
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>   Luis
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ------------------------------
>>>>>>>>>>>>>> On Mon, May 11, 2009 at 7:16 PM, Tom Vercauteren
>>>>>>>>>>>>>> <tom.vercauteren at m4x.org> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Luis,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Can you provide some information on your configuration (OS,
>>>>>>>>>>>>>>> compiler,
>>>>>>>>>>>>>>> cpu)? Also did you get a compilation error or a link error?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> One potential thing to look at is whether your machine
>>>>>>>>>>>>>>> actually
>>>>>>>>>>>>>>> supports sse2 and whether vxl correctly detects it. It looks
>>>>>>>>>>>>>>> like I
>>>>>>>>>>>>>>> missed a patch to the sse2 detection in the list I gave you:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> http://vxl.svn.sourceforge.net/viewvc/vxl/trunk/config/cmake/config/CMakeLists.txt?r1=23457&r2=23456&pathrev=23457
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> http://vxl.svn.sourceforge.net/viewvc/vxl/trunk/config/cmake/config/vxl_platform_tests.cxx?r1=23457&r2=23456&pathrev=23457
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> No matter this patch, setting
>>>>>>>>>>>>>>>  VNL_CONFIG_ENABLE_SSE2_ROUNDING to
>>>>>>>>>>>>>>> OFF
>>>>>>>>>>>>>>> should definitely not remove the declarations of the new
>>>>>>>>>>>>>>> rounding
>>>>>>>>>>>>>>> methods. It should simply fallback to another implementation
>>>>>>>>>>>>>>> than
>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>> SSE2 one (gcc-specific or msvc-specific or vanilla c).
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Since I don't have access to my computer right now, it's a
>>>>>>>>>>>>>>> bit
>>>>>>>>>>>>>>> difficult for me to provide you more information right now.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Tom
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Tue, May 12, 2009 at 00:44, Luis Ibanez
>>>>>>>>>>>>>>> <luis.ibanez at kitware.com>
>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hi Tom,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Setting  VNL_CONFIG_ENABLE_SSE2_ROUNDING to OFF
>>>>>>>>>>>>>>>> removes the declarations of the new rounding methods in
>>>>>>>>>>>>>>>> vnl_math.h.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I'm probably doing something wrong here.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I have generated a patch with the changes and uploaded it
>>>>>>>>>>>>>>>> to the bug tracker:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> You will find it in:
>>>>>>>>>>>>>>>>  http://public.kitware.com/Bug/view.php?id=6558
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> is the patch named:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>       PortableRound-May-11-2009.patch
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> If you have a chance,
>>>>>>>>>>>>>>>> could you help me find out what I'm missing ?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>   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
>>>
>>>
>>
>>
>>
>>
>
>


More information about the Insight-developers mailing list