New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
thread usage dependence on cpu architecture #2205
Comments
Hey @memphizz, first of all very nice that ilastik was useful for you! Didn't have time to read that one yet, but the visuals look awesome :) as for your question, we have noticed this as well (some benchmark runs in this issue. I don't understand why the 192 vcore machine would max out at 8 threads - the |
Hi @k-dominik, Is there a way to find out which steps of the workflow are the bottleneck? I have tried changing all of the parameters you mentioned in the post without any luck. btw, the science cover visual was all done using open-source tools. ilastik for segmentation, paraview for mesh generation and blender for rendering. We are gearing up to do a bigger study. Speeding up the interactive training is going to be a big help. |
@k-dominik Do you have something like a flowchart that explains data flow and parallelization in ilastik auto-context segmentation? |
Hi @memphizz, sorry I meant to get back to you a lot earlier, but I was traveling...
That's awesome! OSS ftw!
impressive machine, I would say it is extremely weird that you don't see any performance there beyond 8 threads... that's just really bad. Have you confirmed that the threadpool is initialized with 8 threads there only, or are there many more and they just idle? ilastik works blockwise through the data. Blocking is governed by |
Hi @k-dominik, thanks for the response. How can I check the number of threads actually initialized in the thread pool? |
aye, sorry, I only touched upon the headless case. Volumina (the viewer) sends requests off via the same threadpool as the computation uses, so you could maybe just put a print statement in the init method of the threadpool to ensure it actually gets enough threads: here in the init put maybe something like When ilastik is running you can also use a tool like |
I inserted the print at the end of init.here is the output of the print:
Not sure why it printed both 8 and 40. It prints 8 twice when I set the threads to 8. The function initialized twice? I repeated a test (training an auto-contex model in 3D 960x960x85 8bit 18 features stage 1 and 54 features stage 2) with threads set to 8 and 40 and 192: it seems that setting threads takes effect, but thread usage is limited by other factors. Any idea what's happening? |
Hi,
I have noticed a significant difference in CPU utilization and thread usage by Ilastik 1.3.3post2 in interactive mode (GUI) while training an autoContext classifier on two linux machines. One system has 36-vcores intel i9 and the other is a quad CPU intel with 192-vcores. CPU utilization on Intel i9 system is consistent with the LAZYFLOW_THREAD and memory parameters (at time reaches 100% CPU utilization), CPU utilization on the system with 192-vcores is max outs at 8 threads running the same project file independent of LAZYFLOW_THREAD.
I tried to undo the change in this commit:
ilastik/lazyflow@77576cc
but that didn't change cpu utilization
btw, thank you for all your efforts developing ilastik. Ilastik was a key tool in a recent paper we published: https://science.sciencemag.org/content/367/6475/eaaz5357.editor-summary
Abbas
The text was updated successfully, but these errors were encountered: