Weźmy taki przykład: mam program, który mnoży całkiem spore macierze, co wymaga wielu obliczeń. Program nie został przeze mnie w żaden sposób podzielony na wątki. Jak Java zachowuje się w takiej sytuacji ? Potrafi to sama "puścić" na 2 rdzenie ( procesor Core 2 Duo) ? Z tego co zauważyłem to ogólne wykorzystanie procesora podczas obliczeń wynosi około 50% ( dlaczego nie 100 % ?). Jeden rdzeń idzie na około 10% możliwości, drugi na około 90%. Dla porównania w innym programie, tym razem związanym z OpenGL, który tez wymaga wielu obliczeń i także nie został dodatkowo podzielony na wątki ogólne wykorzystanie procesora również wynosi około 50% , przy czym w tym wypadku oba rdzenia idą cały czas symetrycznie na 50 % swoich możliwości.
0
0
sam widzisz - dwa rdzenie, obciążenie 50%, czyli wykonuje się jeden wątek. to, czy dany rdzeń ma w danym momencie 0, 10, 50 czy 100% zależy od task schedulera i ustawień procesu/wątku (processor affinity).
nie znam rozwiązań, które powalałyby wykonywać jednowątkowy kod równolegle na więcej niż jednym rdzeniu.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.