Mulicores die zweite...

Dieses Thema im Forum "Sonstiges" wurde erstellt von Blender3D, 06.01.2008.

  1. #1 Blender3D, 06.01.2008
    Blender3D

    Blender3D Vitamin C++

    Dabei seit:
    17.09.2007
    Beiträge:
    228
    Zustimmungen:
    0
    Ort:
    /root
    Hallo, liebes Forum.

    Ich habe mal eine Frage. Wenn ich eine Anwendung auf einem Multicore-System neukompiliere, ist es dann so, dass sie automatisch alle zur verfügung stehenden Kerne nutzt?

    Danke für die Antworten schonmal im Vorraus!

    Grüße, Blender3D
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Tomekk228, 06.01.2008
    Tomekk228

    Tomekk228 Lebende Foren Legende

    Dabei seit:
    14.08.2007
    Beiträge:
    2.417
    Zustimmungen:
    0
    Ort:
    /home/tomekk/
    Ja und nein.

    Ich hab irgendwo gelesen, das gcc immer 1 cpu nimmt, egal ob du davon 3580 stück drin hast.

    Irgendein Parameter ist bei gcc dafür zuständig gcc zu sagen "hey nimm die 4". Google mal einfach.
     
  4. #3 tr0nix, 06.01.2008
    Zuletzt bearbeitet: 06.01.2008
    tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    Ort:
    Schweiz, Opfikon/Glattbrugg
    Ne dasn Quark. Ein Prozess besteht aus >=1 Thread. Ein Thread kann jeweils auf einem Core laufen (bzw. gibts noch Multithreading, aber das ist ein anderes Thema). Wenn der Prozess also mit mehreren Threads laeuft (bsp. Webserver), kann dies auch ueber mehrere CPUs geschehen. Wenn der Prozess nur ein Thread hat, dann laeuft das auch nur auf einer CPU.

    Ob ein Prozess immer auf der selben CPU ist, oder die CPU auch mal wechselt liegt in erster Linie am Memory und CPU Scheduler. Meistens wird der Prozess immer auf derselben CPU eingelagert da dort die richtigen Register meist schon eingelagert sind, es sei denn, eine andere CPU hat ueberhaupt nix zu tun, dann switcht auch der Prozess.

    //Edit: um die Frage zu beantworten: wenn das System mehrere Cores sieht, werden die Threads auch verteilt. Es sei denn, du hast irgendwas komisches rumgewuschelt was bei Linux hald moeglich ist :).
     
  5. #4 Tomekk228, 06.01.2008
    Tomekk228

    Tomekk228 Lebende Foren Legende

    Dabei seit:
    14.08.2007
    Beiträge:
    2.417
    Zustimmungen:
    0
    Ort:
    /home/tomekk/
    Ich hab das irgendwo gelesen wegen gcc, und werd es auch wieder suchen...;)
     
  6. Mike1

    Mike1 Niederösterreicher

    Dabei seit:
    21.12.2006
    Beiträge:
    1.376
    Zustimmungen:
    0
    Ort:
    Österreich
    das Ubuntuusers Wiki sagt
     
  7. #6 Blender3D, 07.01.2008
    Blender3D

    Blender3D Vitamin C++

    Dabei seit:
    17.09.2007
    Beiträge:
    228
    Zustimmungen:
    0
    Ort:
    /root
    Hmm... und wie kann ich ein Programm dazu veranlassen, dass es z.B. immer 4 oder 8 Threads belegt, dass diese dann auf alle Kerne ausgelagert werden?

    Grüße, Blender3D
     
  8. tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    Ort:
    Schweiz, Opfikon/Glattbrugg
    Das beantwortet aber keine Frage hier. In dem Fall wird gcc einfach paralell kompilieren und nicht seriell ein File nach dem anderen. Das Linken setzt am Schluss ja das Binary zusammen (IMHO).

    @blender3d:
    Das kannst du meistens gar nicht beeinflussen. Entweder wurde eine Applikation Multithreaded programmiert, oder nicht. Wenn sie Multithreaded programmiert wurde, gibt es immernoch min. 2 Typen von Applikationen:

    Die, bei denen alle Threads dasselbe erledigen:
    Bsp. Webserver -> User connected, Requests wird in einen Thread ausgelagert der explizit diesen User bedient, hier macht jeder Thread dasselbe. Die Threads sind untereinander nicht verbunden/müssen nicht kommunizieren.

    ...oder aber es werden einzelne, voneinander abhängige Subsysteme ausgelagert:
    Bei Spielen wie HL2 kann dies beispielsweise die Physikengine oder Künstliche Intelligenz sein, die in seperaten Threads laufen. Diese müssen koordiniert sein (ist bei HL2 ein "Koordinator"-Thread) da die Aufgaben der Threads ja unterschiedlich schnell beendet sein können. Hier kannst du nicht aussuchen, ob und wieviele Threads du haben willst, das ist einfach die Softwarearchitektur die es vorgibt.

    Wenn du eine Applikation wie einen Webserver hast, dann kannst du oftmals in den Einstellungen sagen, ob Threads voralloziiert oder laufend erstellt werden sollen, wieviele Threads das Maximum ist etc. pp. Schau dir mal das Apache2-Konfigfile an - dort wirst du vieles antreffen das ich hier erklärt habe.

    Ggf. gibt es Ressource-Capping Tools fuer Linux, bei welchen du Limitte gibst wie "Prozess A darf nur 90% CPU Last generieren" bzw. "Prozess A laeuft immer auf Prozessor B".

    Was genau hast du denn vor?
     
  9. #8 Blender3D, 07.01.2008
    Blender3D

    Blender3D Vitamin C++

    Dabei seit:
    17.09.2007
    Beiträge:
    228
    Zustimmungen:
    0
    Ort:
    /root
    Jetzt habe ich allerdings Blender, dessen Renderer für Multithreads programmiert wurde und dessen Physik etc. nicht. Daher wollte ich wissen, ob ich z.B. durch eine Compileroption den Kompiler veranlassen kann, dass er das Programm in Threads aufteilt.

    Grüße, Blender3D
     
  10. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  11. Mike1

    Mike1 Niederösterreicher

    Dabei seit:
    21.12.2006
    Beiträge:
    1.376
    Zustimmungen:
    0
    Ort:
    Österreich
    oh, sorry, hab den Part mit dem Kompilieren, den der Threadsteller angesprochen hat so verstanden, ob man denn auf mehreren Kernen kompilieren kann.
    Bin irgendwie in letzter Zeit echt nicht der Hellste. :(
     
  12. hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
    Nun es ist ja so: Das Programm kommt als Binary raus und dein OS lässt es laufen.

    Bei mehr CPUs hat dein OS nun die Qual der Wahl auf welchen es dieses Laufen lässt.
    Nimmt man OPENMP oder ähnliche Sachen wird der Code schon so aufbereitet, dass er auf mehreren CPUs laufen kann.
    Hast du in deiner Anwendung nun mehrere (OS-)Threads, dann kennt das OS diese und kann sie auf die CPUs verteilen.

    In kurz:
    Solange ein Programm nicht auf Multicore getrimmt/geschrieben wurde, bringt dem Programm die vielen Kerne gar nix.


    Und noch ein Wörtchen am Rande.
    Echtzeitanwendungen sind auf einem Core immer noch etwas schneller als verteilt.
    Hingegen kann ein Server auf mehreren Cores richtig rocken.
    (Kommt halt immer drauf an, wie viele Daten das Programm "zwischen sich" austauschen muss. Stichwort: Synchronisation).

    Ach ja und um auf deine Frage zu antworten: Nein.
     
Thema:

Mulicores die zweite...

Die Seite wird geladen...

Mulicores die zweite... - Ähnliche Themen

  1. Systempartition um den Speicherplatz der zweiten Disk erweitern

    Systempartition um den Speicherplatz der zweiten Disk erweitern: Guten Tag liebe Leute Ich habe einen virtuellen Server mit 2 Disk a je 25GB. Nun möchte ich, das meine Hauptpartition um diese zusätzlichen 25GB...
  2. Zweite Systemd-Konferenz Ende September in Berlin

    Zweite Systemd-Konferenz Ende September in Berlin: Die Systemd-Konferenz Ende September in Berlin ist die zweite Konferenz zum System- und Service-Manager Systemd und liegt zeitlich kurz vor der...
  3. Zweite Vorschau auf Android N mit Vulkan-Unterstützung

    Zweite Vorschau auf Android N mit Vulkan-Unterstützung: Einen Monat nach der ersten hat Google eine zweite Vorschau auf die kommende Android-Version und zugehörige Werkzeuge vorgestellt. Neu sind in...
  4. OpenSuse gibt zweiten Meilenstein von Leap 42.1 heraus

    OpenSuse gibt zweiten Meilenstein von Leap 42.1 heraus: Die Gemeinschaft rund um OpenSuse hat einen zweiten Meilenstein von Leap 42.1 veröffentlicht. Die Änderungen der neuen Version sind so gravierend,...
  5. Mozilla kündigt zweiten »Winter of Security« an

    Mozilla kündigt zweiten »Winter of Security« an: Im kommenden Winterhalbjahr bietet Mozilla zum zweiten Mal Projekte an, bei denen Studenten an realen, sicherheitsrelevanten Projekten arbeiten...