Why do I get CPU overloads with MutliCore enabled and not when MultiCore disabled?
Show older comments
I'm using R2012a XPC with an i7 processor. When I enable all 4 cores in the BIOS but uncheck "Multicore CPU Support" in xpcexplr, my XPC target runs very fast without CPU overloads. However, when I check "Multicore CPU Support" in xpcexpr and run anything, I get CPU overloads. I can't even run the demo mulitcore expample, dxpcmdsdemo, off the Matlab website without CPU overloads. Is there a BIOS setting I'm missing? Anyone else seeing this problem?
1 Comment
Jing Huang
on 3 Aug 2012
Edited: Jing Huang
on 3 Aug 2012
One possibility is that the BIOS does not provide correct timer frequency.
When "Multicore CPU Support" is unchecked, our single core kernel relies on the programmable interval timer (PIT) (<http://en.wikipedia.org/wiki/Programmable_Interval_Timer)>, which runs at 1.193182 MHz on every PC.
When “Multicore CPU Support” is checked, our multicore kernel relies on the timer in the APIC (<http://en.wikipedia.org/wiki/Advanced_Programmable_Interrupt_Controller)>. The APIC timer has higher resolution (typically 200MHz). However, the APIC timers run on different frequencies on different machines, so our kernel must read the frequency from the BIOS on every machine. If the frequency reading from the BIOS is not right, the actually sample time could be shorter than the nominal sample time, which can cause overloads.
To check the BIOS reading, we can run model xpcosc on the target with “Mutlicore CPU support” checked. We can set the stop time to be 30 seconds or longer. Using tic/toc commands on the host, we can check how long it actually takes for the model to run to its end. If toc is significantly different from the stop time, it tells us the frequency reading in the BIOS is wrong.
Thanks
Answers (0)
Categories
Find more on Multicore Processor Targets in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!