[Insight-developers] suggestion: use environment variable to limit
number of parallel threads
Torsten Rohlfing
torsten at synapse.sri.com
Thu Sep 20 13:22:30 EDT 2007
Luis:
Sounds pretty much like what I was envisioning.
Item 2) in my opinion only serves to allow people who distribute
pre-compiled ITK-based software to conscientiously ignore user-specified
CPU limitations. I am not sure that's a good thing, 'cos I believe I
know better how many CPUs a tool on my system should be using than does
the guy who compiled it elsewhere. Also, it's probably not necessary,
because if, as a developer, you are THAT determined to force the maximum
number of parallel threads, you probably don't mind hacking the code a
bit to disable the getenv().
The bottom line is -- if you add option 1) alone, no one will ever
notice any changes unless they define the environment variable. In that
case, they probably know what they are doing. And you're not further
cluttering the Cmake configuration options.
But anyway, a combination of 1/2 would certainly work for me; I
personally don't use any pre-compiled ITK apps, so having 1) gives me
what I need, and 2) remains under my control.
By the way -- does anyone know whether any of ITK's supported platforms
would have trouble with the getenv() call?
Thanks everyone!
Torsten
Luis Ibanez wrote:
>
> Hi Torsten,
>
> Here is one option that come to mind:
>
> 1) In itkMultiThreader.cxx lines 80-145 method
> GetGlobalDefaultNumberOfThreads()
>
> insert one option where the number of Threads
> is taken from the environment variable, like:
>
> std::string numberOfThreadsString =
> getenv("ITK_DEFAULT_NUMBER_OF_THREADS");
> m_GlobalDefaultNumberOfThreads =
> atoi( numberOfThreadsString.c_str() )
>
> 2) Surrond that option with a CMake enabled define
> such as ITK_USE_NUMBER_OF_THREADS_FROM_ENVIRONMENT,
> this define will be set in the itkConfigure.h.in
> and will be controlled by an advanced option in
> CMake.
>
>
> Note that the same can be done for the "Maximum"
> number of Threads.
>
>
> In this way, you can get ITK to choose the number of
> threads from the environment variable, but *only* if
> ITK was configured with that CMake variable enabled.
>
>
>
> Regards,
>
>
> Luis
>
>
More information about the Insight-developers
mailing list