stwierdziliśmy, że czasami jest to szybciej się podzielić jedną pętlę na dwie lub więcejPrzyspieszenie program z wieloma procesorami
for (i=0; i<AMT; i++) {
a[i] += c[i];
b[i] += d[i];
}
||
\/
for (i=0; i<AMT; i++) {
//a[i] += c[i];
b[i] += d[i];
}
for (i=0; i<AMT; i++) {
a[i] += c[i];
//b[i] += d[i];
}
na pulpicie, Win7, AMD Phenom (tm) x6 1055T, wersja dwóch pętli działa szybciej z około 1/3 mniej czasu.
Jeśli jednak zajmuję się zadania,
for (i=0; i<AMT; i++) {
b[i] = rand()%100;
c[i] = rand()%100;
}
podzielenie zadanie B i C na dwie pętle nie jest większa niż jednej pętli.
Sądzę, że istnieją pewne reguły używane przez system operacyjny do określania, czy niektóre kody mogą być uruchamiane przez wiele procesorów.
Chcę zapytać, czy moje przypuszczenie jest słuszne, a jeśli mam rację, jakie są zasady lub okazje, które wielu procesorów będzie automatycznie (bez programowania wątków) używanych do przyspieszenia moich programów?
To jest pytanie o pamięć podręczną procesora. Gdzie jest artykuł o cache cache http://lwn.net/Articles/252125/ – MYMNeo
Uważam, że uruchamianie aplikacji z pojedynczym gwintem na wielu rdzeniach nie jest możliwe. jednak tutaj jest link, który zakwestionował moją wiarę ... http://www.axceleon.com/info/AxceleonIntelSolution_Profile.pdf –
Dzięki za linki, czytam. –