View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0002813||Slicer4||Core: Base Code||public||2012-12-04 09:07||2017-06-07 23:27|
|Target Version||Slicer 4.3.0||Fixed in Version||Slicer 4.3.0|
|Summary||0002813: Restore performance of ITKv4 Factory|
|related to||0002951||closed||jcfr||Update test framework to call initialize ITKIOFactoryRegistration when needed|
|parent of||0002729||closed||mccormic||Recent ITK changes may have broken Slicer4/ITKv4 - Slicer can't seem to read volumes|
|child of||0002114||closed||mccormic||Ensure Slicer can be compiled against ITKv4 on both Windows 32 and 64 bit|
Locations where factory registration needs to be optimized.
Brad L. <=====
$ find -name itkTransformIOFactoryRegisterManager.h
To optimize windows loading of images (and also potentially decrease the size of packages) the topic that should be tested on windows, macosx and linux are the following:
Both patches from jcfr have been incorporated into a monolithic ITKv4 patch set.
under the next-slicer43 branch
As of 2012-12-05, this was also in sync with the svn repository.
I did a fresh build with the BRAINSia/Slicer43/next-slicer43 branch with Visual Studio 2008 Express 64. However, it cannot load a file. In the "Log messages" there is a "Factories size: 3". Does this branch have a patch that still disables all factory registration?
You should check with Brad Lowekamp, if I remember properly, the assumption was that simply linking Slicer against the shared library should be enough to ensure the default ITK IO Factory are loaded.
Seems this doesn't work as expected on windows. Would be nice to confirm it works on Linux/MacOSX. This the platform where Brad did his testing.
I have started a fresh Linux build. Will report the results.
Sounds great. Thanks
Hmmm. Worked fine on Linux.
"Factories size: 21".
Just pushed something on my fork. If you try to apply the following patch on your windows checkout .. I am curious to see if the factory are loaded.
To apply the patch:
Not I didn't tested it ...
Update the associated topic. See https://github.com/jcfr/Slicer/tree/ITKv4-shared-library-for-factory-initialization
Topic has been updated with a commit allowing the factory to also be registered for CLI executable on Windows..
To test it, there are two options:
After integrating the previous slicer patch, you should also consider updating the SHA1 of the Slicer execution model to: https://github.com/jcfr/SlicerExecutionModel/commit/fded7173cdab39e399e6e0a53706c17b40d53c94
Great, thank you JC!
I have added the bump to 20130107-next-slicer43.
There are a number of IO related errors on the Windows build today (after the ITKv4 switch).
The following patch should resolve that specific issue: https://github.com/jcfr/Slicer/commit/6a7effe2403fc4056808e1821878decd4340a629.patch
Should be fixed in r21691
Please, re-open if there are still issue.
BUG: Ensure ITKv4 IO Factory are registered within tests
COMP: Ensure ITKFactoryRegistration is considered when setting ITK_INCLUDE_DIRS at top-level.
This will fix build errors of the form:
.../Logic/Testing/Cxx/vtkMRMLSliceLogicTest2.cxx:49:38: error: itkFactoryRegistration.h: No such file or directory
COMP: Fix missing "itkFactoryRegistrationConfigure.h" build error
This will fix build errors of the form:
../ITKFactoryRegistration/itkFactoryRegistration.h:6:45: error: itkFactoryRegistrationConfigure.h: No such file or directory
Closing resolved issues that have not been updated in more than 3 months
Fix committed to 2145-support-for-installing-extension-from-file branch.
Slicer: 2145-support-for-installing-extension-from-file 03b89614
2013-01-11 16:29:52Details Diff
|COMP: Add ITKFactoryRegistration library centralizing ITK IO factory registration
This commit will ensure that ITK IO factory are properly registered on all
When ITKv4 is build shared, the library holding the factory registration code
are build statically. As a consequence, when CLI module are loaded as library
the factory are registered multiple times. Around 800 factories where registered
and this was leading to poor performance when loading images.
This commit enable the building of a shared library named ITKFactoryRegistration
that should be linked against to ensure loading of the factory. This approach
can succeed thanks to the help of the ITK variable ITK_NO_IO_FACTORY_REGISTER_MANAGER.
This variable allow to disable the automatic registration of factory in selected part
of the code.
The following two cases are handled:
- Registration of the factories within the Slicer executable.
- Registration of the factories within CLI executable.
From: Jean-Christophe Fillion-Robin <email@example.com>
git-svn-id: http://svn.slicer.org/Slicer4/trunk@21592 3bd1e089-480b-0410-8dfb-8563597acbee
|mod - Applications/SlicerApp/CMakeLists.txt||Diff File|
|mod - Applications/SlicerApp/Main.cxx||Diff File|
|mod - Base/CLI/CMakeLists.txt||Diff File|
|add - Base/CLI/SEMCommandLineLibraryWrapper.cxx.in||Diff File|
|mod - CMake/SlicerConfig.cmake.in||Diff File|
|mod - CMake/SlicerGenerateSlicerConfig.cmake||Diff File|
|mod - CMake/UseSlicer.cmake.in||Diff File|
|mod - CMakeLists.txt||Diff File|
|mod - Libs/CMakeLists.txt||Diff File|
|mod - Libs/IGT/CMakeLists.txt||Diff File|
|add - Libs/ITKFactoryRegistration/CMakeLists.txt||Diff File|
|add - Libs/ITKFactoryRegistration/itkFactoryRegistration.cxx||Diff File|
|add - Libs/ITKFactoryRegistration/itkFactoryRegistration.h||Diff File|
|add - Libs/ITKFactoryRegistration/itkFactoryRegistrationConfigure.h.in||Diff File|
|mod - Libs/MGHImageIO/CMakeLists.txt||Diff File|
|mod - Libs/MRML/Core/CMakeLists.txt||Diff File|
|mod - Libs/MRML/IDImageIO/CMakeLists.txt||Diff File|
|mod - Libs/RemoteIO/CMakeLists.txt||Diff File|
|mod - Libs/vtkITK/CMakeLists.txt||Diff File|
|mod - Libs/vtkITK/Testing/CMakeLists.txt||Diff File|
|mod - SuperBuild/External_SlicerExecutionModel.cmake||Diff File|
|2012-12-04 09:07||jcfr||New Issue|
|2012-12-04 09:07||jcfr||Status||new => assigned|
|2012-12-04 09:07||jcfr||Assigned To||=> pieper|
|2012-12-04 09:07||jcfr||Relationship added||child of 0002114|
|2012-12-04 09:08||jcfr||Tag Attached: ITKv4|
|2012-12-04 09:08||jcfr||Assigned To||pieper => hjmjohnson|
|2012-12-04 09:08||jcfr||Priority||normal => high|
|2012-12-04 09:08||jcfr||Severity||minor => block|
|2012-12-04 09:08||jcfr||Reproducibility||have not tried => always|
|2012-12-04 09:08||jcfr||Target Version||=> Slicer 4.3.0|
|2012-12-04 09:30||mccormic||Assigned To||hjmjohnson => mccormic|
|2012-12-05 11:30||hjmjohnson||Note Added: 0007414|
|2012-12-05 14:06||jcfr||Note Added: 0007415|
|2012-12-05 14:30||hjmjohnson||Note Edited: 0007415|
|2012-12-05 14:32||hjmjohnson||Note Added: 0007417|
|2012-12-06 12:18||mccormic||Note Added: 0007424|
|2012-12-06 13:09||jcfr||Note Added: 0007427|
|2012-12-06 14:34||mccormic||Note Added: 0007438|
|2012-12-06 14:44||jcfr||Note Added: 0007441|
|2012-12-07 04:45||mccormic||Note Added: 0007445|
|2012-12-07 05:16||jcfr||Note Added: 0007447|
|2012-12-07 05:16||jcfr||Note Edited: 0007447|
|2012-12-08 05:20||jcfr||Relationship added||parent of 0002729|
|2013-01-07 08:56||jcfr||Note Added: 0007625|
|2013-01-09 08:01||jcfr||Note Added: 0007636|
|2013-01-09 16:39||jcfr||Note Added: 0007640|
|2013-01-09 18:56||mccormic||Note Added: 0007645|
|2013-02-12 07:33||mccormic||Note Added: 0007896|
|2013-02-12 07:40||jcfr||Note Added: 0007897|
|2013-02-12 07:52||mccormic||Note Added: 0007898|
|2013-02-12 09:34||jcfr||Note Added: 0007902|
|2013-02-12 09:34||jcfr||Status||assigned => resolved|
|2013-02-12 09:34||jcfr||Fixed in Version||=> Slicer 4.3.0|
|2013-02-12 09:34||jcfr||Resolution||open => fixed|
|2013-02-12 09:34||jcfr||Note Added: 0007903|
|2013-02-16 09:46||jcfr||Note Added: 0007968|
|2013-02-16 09:47||jcfr||Relationship added||related to 0002951|
|2014-03-06 05:12||jcfr||Note Added: 0011046|
|2014-03-06 05:13||jcfr||Status||resolved => closed|
|2017-06-07 23:27||jcfr||Changeset attached||=> Slicer 2145-support-for-installing-extension-from-file 03b89614|
|2017-06-07 23:27||jcfr||Note Added: 0014670|
|2017-06-07 23:27||jcfr||Assigned To||mccormic => jcfr|