I am currently working on a fairly largish deployment of ATLAS, and have a question about controling the degree of parallelism. A search on this support forum unearthed a related thread, but not quite with the answer I need. The old thread is: "Controlling the number of threads" - https://sourceforge.net/tracker/index.php?func=detail&aid=1504927&group_id=23725&atid=379483 Apologies if I missed a FAQ.
I see that the max number of thread is controlled by the macro ATL_NTHREADS in include/atlas_pthreads.h . The value of the macro seems to always be passed by value, as an argument to routines specified with the Mjoin macro.
So, my question: is there a "deep" reason why this max number of threads cannot be set dynamically? To wit, would I break anything if, for example, I changed every use of the macro to a global variable "extern int atlas_nthreads", and then defined that variable in a .c file as "int atl_n_threads = ATL_NTHREADS".
Doing so would allow me, for example, to configure at program launch time the max allowed degree of parallelism, e.g. using a command-line flat. This is useful when the users are charged $$$ for the number of CPU cores they use, and can then choose to trade runtime for money.
If such a change makes sense, I'd be happy to contribute a patch, perhaps with a nicer - but equivalent - implemetation scheme than the one outlined above.
Thanks for your help
Log in to post a comment.