System operacyjny a szybkość wykonywania działań

0

Cześć,
czy system operacyjny może mieć jakiś wpływ na szybkość wykonywania operacji przez program?
Przykładowo chciałbym napisać program w C++, który będzie wykonywał operacje przez miesiąc (optymalizował model matematyczny). Czy może mieć znaczenie czy napiszę ten program i go uruchomię na windowsie czy na linux-ie?

4

Przede wszystkim napisz w nim obsluge wznowienia obliczen po awarii prądu.
Te 30 dni ktore bys po takiej awarii stracil to czas nie tylko CPU ale i Twoj.

3

Wszystko ma na to wpływ, a najwięcej wpływu masz na to ty, czyli pod co będziesz optymalizował apkę :)

1

Przede wszystkim Twój program powinien być dobrze zaprojektowany do takich obliczeń i być w stanie wykorzystać potencjał platformy, na której jest wykonywany. Co za różnica czy Linux czy Windows, jak Twój program będzie korzystał z 1 core'a z np. 8? Poza samym systemem, dużo większe znaczenie ma środowisko, w którym program jest uruchomiony (procesy działające w tym samym czasie oraz zasoby, które są współdzielone).

0

Dziękuję za odpowiedzi.
Komentarze w stylu, że trzeba korzystać z pozostałych rdzeni lub zapisywać wyniki co jakiś czas na wypadek awarii (by odtworzyć wyniki) są raczej oczywiste.
Zastanawiam się jednak w jaki sposób optymalizuje się apkę pod system operacyjny - zakładając, że nie będę korzystał z funkcji systemowych => optymalizacja modeli, symulacje etc. to proste wyliczenia a wizualizacja jest drugorzędna i można ją zrobić na innej maszynie.

3
Kofcio napisał(a):

Zastanawiam się jednak w jaki sposób optymalizuje się apkę pod system operacyjny - zakładając, że nie będę korzystał z funkcji systemowych => optymalizacja modeli, symulacje etc. to proste wyliczenia a wizualizacja jest drugorzędna i można ją zrobić na innej maszynie.

Nie optymalizuje się.
Model robisz w Pythonie + NumPy + Tensorflow ...
albo w Matlabie
albo w czymś podobnym.

Model robisz najpierw tak żeby działał. Potem możesz go optymalizować pod względem języka (np. C++ lub Fortran zamiast Pythona), bibliotek i platformy (np. Linux zamiast Windows - np. jeśli odkryjesz że są na tej drugiej platformie lepsze/nowsze kompilatory).
Potem optymalizujesz pod konkretnego procka.
Potem kupujesz lepszy procek albo przerabiasz na chmurę.
Z AWS uważaj bo nie ma tam twardych limitów kosztów i mimo założonego budżetu możesz go przekroczyć.

0

@vpiotr dziękuję za konkretną odpowiedź :)
Osobiście wszystko chcę napisać samodzielnie w C++ - z jednej strony chcę się czegoś nauczyć, z drugiej mam kilka autorskich rozwiązań, które chciałbym od początku zaimplementować - chcę rozumieć co dzieje się pod spodem.

2
Kofcio napisał(a):

@vpiotr dziękuję za konkretną odpowiedź :)
Osobiście wszystko chcę napisać samodzielnie w C++ - z jednej strony chcę się czegoś nauczyć, z drugiej mam kilka autorskich rozwiązań, które chciałbym od początku zaimplementować - chcę rozumieć co dzieje się pod spodem.

Do obliczeń samodzielnych (wszystko sam) masz do wyboru:

  • Julia
  • C++
  • Fortran

Ponieważ mamy XXI w. polecam ten pierwszy język - https://julialang.org/learning/
30 lat temu polecałbym C++.
60 lat temu Fortran.

0

Odpowiedź nie będzie łatwa, linux czy windows mają swoje algorytmy schedulerów cpu, dysków itd. Sam system plików jest inny a przy takich rozbudowanych softach czytanie i pisanie z dysków się zdarza. Trzeba po prostu przejrzeć testy i opinie naukowców robiących konkretne algorytmy. I zakładam że większe różnice pokarzą się w konkretnych przypadkach użycia.

znalazłem ciekawostę po prawdzie z przed 9 lat ale nie zdziwię się jak dalej to istnieje. z forum matlab w sprawie dlaczego kod na linux działa wolniej niż na windows 7.

with the assistance of PROFILEr, I found figure and plot cost most execution time in that code. I thought it might due to the inefficiency of display driver under Linux.

0

Programy czysto wkorzystujące CPU nie powinny działać inaczej, chyba że bierzemy pod uwagę inne działanie schedulera. Z innych czynników, które mogą wpływać: inny alokator pamięci, inna implementacja biblioteki standardowej, jakieś zaawansowane ficzery np. transparent huge pages. W 99% procentach to pewnie nie ma znaczenia, ale może się okazać, że coś działa wolniej na innym systemie

1 użytkowników online, w tym zalogowanych: 0, gości: 1