I'm trying to parallelize a FOR loop using IDL's IDL_IDLBRIDGE objects. I wrote a basic version a while ago that worked and made some upgrades. The modifications worked for a little while but now when I run it, the threads use less than 20% of a processor while running the loop. I'm running on a 16-core x86_64 server running GNU/Linux. A lot of people share the machine (~12) but I only multithread when about 10% of the 16-core processing power is otherwise being used. I'll even sometimes run the program and have 8 threads each running at 5% of a single processor, which greatly defeats the purpose of multithreading.
Has anyone had or are there known bugs/behaviors of IDL_IDLBRIDGE processes where they can't fully utilize a processor? Am I just trying to make too many threads on a small server? If the latter, is there any way to determine the possible processor utilization when establishing a thread? I know this is probably more to do with multi-core device behavior, but in my immediate group no one uses IDL's multithreading capabilities so I'm quite lost. Any information or direction would be appreciated.
As for errors, I check the thread's !ERROR_STATE variable and the worst I ever find is an arithmetic error. Everything else appears to be running as expected.
-Jeff
UCLA
|