App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Fortran unter Windows: Wie Programm sagen, welcher Kern genutzt werden soll?
- Ersteller DerVonNebenan
- Erstellt am
DerVonNebenan
Captain Special
- Mitglied seit
- 20.08.2011
- Beiträge
- 233
- Renomée
- 1
Hallo,
wie sage ich einem Fortran Programm, welchen CPU - Kern verwendet werden soll? Gibt es hierbei eine bestimmte Eingabe, die es ermöglicht, zu Begin bei der Ausführung des Programmes zu sagen, welcher Kern für die Berechnungen genutzt werden soll? Speziell habe ich das Problem unter Windows, dass mein Hexa-Core CPU beim Start des Programms die Berechnung auf alle sechs vorhanden CPU´s auslagert.
Ich kann zwar im Taskmanager dann das Programm auf einen bestimmten Kern manuell auslagern. Auf die Dauer gesehen geht es aber schon an die Nerven.
LG
edit: Oder sucht sich das Programm automatisch einen Kern aus. Genutzt wird neuerdings PGI Fortran für Windows Systeme.
wie sage ich einem Fortran Programm, welchen CPU - Kern verwendet werden soll? Gibt es hierbei eine bestimmte Eingabe, die es ermöglicht, zu Begin bei der Ausführung des Programmes zu sagen, welcher Kern für die Berechnungen genutzt werden soll? Speziell habe ich das Problem unter Windows, dass mein Hexa-Core CPU beim Start des Programms die Berechnung auf alle sechs vorhanden CPU´s auslagert.
Ich kann zwar im Taskmanager dann das Programm auf einen bestimmten Kern manuell auslagern. Auf die Dauer gesehen geht es aber schon an die Nerven.
LG
edit: Oder sucht sich das Programm automatisch einen Kern aus. Genutzt wird neuerdings PGI Fortran für Windows Systeme.
Zuletzt bearbeitet:
Dalai
Grand Admiral Special
- Mitglied seit
- 14.06.2004
- Beiträge
- 7.420
- Renomée
- 262
- Standort
- Meiningen, Thüringen
- Mein Laptop
- Thinkpad T43 mit 15" UXGA (1600x1200), 2x 1 GiB RAM, 100GB HD, Bluetooth, GBit LAN, ATi X300
- Prozessor
- AMD Ryzen 5 2600 (Pinnacle Ridge)
- Mainboard
- ASUS Prime X370-A
- Kühlung
- Noctua NH-U12S mit 1x NF-F12
- Speicher
- Crucial Ballistix Sport LT weiß (BLS2K8G4D32AESCK): 2x 8 GiB DDR4-3200 (CL16) @ 1,25V
- Grafikprozessor
- Zotac GeForce GTX 1060 6GB AMP Edition
- Display
- Dell U2410, 24 Zoll, IPS, 16:10
- SSD
- Samsung 850 Evo 250 GB
- HDD
- WD40EZRZ (WD Blue) 4000GB SATA3, WD20EZRX (WD Green) 2000GB SATA3
- Optisches Laufwerk
- Pio DVR-212 (DVD-RAM), ASUS E818A6T (DVD-ROM), Pio DVD-106S (Slot-in DVD-ROM)
- Soundkarte
- Creative SoundBlaster Audigy 2 ZS PCI
- Gehäuse
- Lian Li PC-8NB Midi-Tower
- Netzteil
- Enermax EMP400AGT MaxPro 400W
- Betriebssystem
- Windows 7 Professional x64 und immer mal wieder ein neues Linux :-)
- Webbrowser
- Mozilla Firefox mit diversen Erweiterungen
- Verschiedenes
- 2x 120mm Gehäuselüfter (Front und Rückwand), DVBSky T9580, Sharkoon Frontpanel B (2x USB 3.0)
Logisch. Es werden - sofern die Software kein Multithreading unterstützt - alle verfügbaren Kerne gleichmäßig (sprich: gleichmäßig schlecht) belastet. Hat die Software nur einen rechnenden Thread, so wird dieser zwischen allen Kernen hin- und hergeschoben, um die Auslastung auszubalancieren. Die Software sucht sich dabei gar nichts aus sondern der Windows-Kernel oder genauer gesagt der Scheduler verteilt die Aufgaben auf die verfügbaren Resourcen.Speziell habe ich das Problem unter Windows, dass mein Hexa-Core CPU beim Start des Programms die Berechnung auf alle sechs vorhanden CPU´s auslagert.
[...]
edit: Oder sucht sich das Programm automatisch einen Kern aus.
Normalerweise gibt es keinen Grund, die automatische Vergabe zu ändern. Manchmal ist es aber dennoch nützlich, weil eine Software ausgebremst wird oder um Turbo-Modi der CPUs ausnutzen zu können. Dafür gibt es entsprechende WinAPI-Funktionen GetProcessAffinityMask und SetProcessAffinityMask. Ich habe diese Funktionen in einem meiner Delphi-Programme benutzt, das genau dafür da ist:automatische Zuweisung von Affinitäten an bestimmte Prozesse. Ob und wie die in Fortran zu benutzen sind: .
MfG Dalai
DerVonNebenan
Captain Special
- Mitglied seit
- 20.08.2011
- Beiträge
- 233
- Renomée
- 1
Hallo,
erstmal vielen Dank. Habe mal ein bisschen im Netz gelesen. Dabei habe ich gelesen, dass wohl die neuen Absoft und PGI Fortran Compiler in der Lage sind -soweit wie ich verstanden habe-, die Quellcodes automatisch zu Parallisieren.
In wie weit ich das richtig verstanden habe, muss ich morgen nochmal genau nachforschen.
LG
erstmal vielen Dank. Habe mal ein bisschen im Netz gelesen. Dabei habe ich gelesen, dass wohl die neuen Absoft und PGI Fortran Compiler in der Lage sind -soweit wie ich verstanden habe-, die Quellcodes automatisch zu Parallisieren.
In wie weit ich das richtig verstanden habe, muss ich morgen nochmal genau nachforschen.
LG
Dalai
Grand Admiral Special
- Mitglied seit
- 14.06.2004
- Beiträge
- 7.420
- Renomée
- 262
- Standort
- Meiningen, Thüringen
- Mein Laptop
- Thinkpad T43 mit 15" UXGA (1600x1200), 2x 1 GiB RAM, 100GB HD, Bluetooth, GBit LAN, ATi X300
- Prozessor
- AMD Ryzen 5 2600 (Pinnacle Ridge)
- Mainboard
- ASUS Prime X370-A
- Kühlung
- Noctua NH-U12S mit 1x NF-F12
- Speicher
- Crucial Ballistix Sport LT weiß (BLS2K8G4D32AESCK): 2x 8 GiB DDR4-3200 (CL16) @ 1,25V
- Grafikprozessor
- Zotac GeForce GTX 1060 6GB AMP Edition
- Display
- Dell U2410, 24 Zoll, IPS, 16:10
- SSD
- Samsung 850 Evo 250 GB
- HDD
- WD40EZRZ (WD Blue) 4000GB SATA3, WD20EZRX (WD Green) 2000GB SATA3
- Optisches Laufwerk
- Pio DVR-212 (DVD-RAM), ASUS E818A6T (DVD-ROM), Pio DVD-106S (Slot-in DVD-ROM)
- Soundkarte
- Creative SoundBlaster Audigy 2 ZS PCI
- Gehäuse
- Lian Li PC-8NB Midi-Tower
- Netzteil
- Enermax EMP400AGT MaxPro 400W
- Betriebssystem
- Windows 7 Professional x64 und immer mal wieder ein neues Linux :-)
- Webbrowser
- Mozilla Firefox mit diversen Erweiterungen
- Verschiedenes
- 2x 120mm Gehäuselüfter (Front und Rückwand), DVBSky T9580, Sharkoon Frontpanel B (2x USB 3.0)
Dafür müssen sie Threads erzeugen. Ich glaube nicht so recht dran, dass das automatisch geht, irgendeinen Anstoß braucht der Compiler sicher dafür. Aber das überlass ich dir .Dabei habe ich gelesen, dass wohl die neuen Absoft und PGI Fortran Compiler in der Lage sind -soweit wie ich verstanden habe-, die Quellcodes automatisch zu Parallisieren.
MfG Dalai
DerVonNebenan
Captain Special
- Mitglied seit
- 20.08.2011
- Beiträge
- 233
- Renomée
- 1
Gefunden bei der Website: http://www.qtsoftware.de/vertrieb/fortran/abspro-windows.htm
"...
Zudem steht ein Auto-Parallelisierer und Vektor-Optimierer zur Verfügung, mit dem auf Mehrkern-Prozessoren parallelisierter Code erzeugt werden kann.
..."
LG
"...
Zudem steht ein Auto-Parallelisierer und Vektor-Optimierer zur Verfügung, mit dem auf Mehrkern-Prozessoren parallelisierter Code erzeugt werden kann.
..."
LG
Diese Optimierungen erfordern aber bestimmte Voraussetzungen, die in manchem Programm vorkommen und in manchem nicht.
Wenn du ein Multi-threaded-Programm haben willst, dann solltest du auch eines schreiben, sprich Threads erzeugen und Gedanken über die parallele Abarbeitung machen.
Der Compiler wird mit Sicherheit nicht deine Programmlogik über den Haufen werfen und neu codieren.
Wenn du ein Multi-threaded-Programm haben willst, dann solltest du auch eines schreiben, sprich Threads erzeugen und Gedanken über die parallele Abarbeitung machen.
Der Compiler wird mit Sicherheit nicht deine Programmlogik über den Haufen werfen und neu codieren.
PuckPoltergeist
Grand Admiral Special
Wenn du per Hand parallelisierst, wird das der Compiler nicht umstoßen. Schreibst du sequentiellen Code, lässt sich das in bestimmten Ausmaßen durchaus automatisch parallelisieren. Gerade Fortran sollte da gute Voraussetzungen bieten. Mit OpenMP lässt sich das sogar recht bequem steuern.Wenn du ein Multi-threaded-Programm haben willst, dann solltest du auch eines schreiben, sprich Threads erzeugen und Gedanken über die parallele Abarbeitung machen.
Der Compiler wird mit Sicherheit nicht deine Programmlogik über den Haufen werfen und neu codieren.
JKuehl
Grand Admiral Special
- Mitglied seit
- 22.06.2003
- Beiträge
- 7.903
- Renomée
- 145
- Standort
- Stockholm, Schweden
- Mitglied der Planet 3DNow! Kavallerie!
- Aktuelle Projekte
- POEM, SIMAP
- Lieblingsprojekt
- SIMAP, POEM
- Meine Systeme
- Q6600
- BOINC-Statistiken
- Folding@Home-Statistiken
- Prozessor
- Ryzen-3700x
- Mainboard
- Asus B350 Prime Plus
- Kühlung
- Fractal Design Celsius 240
- Speicher
- 48 GB Corsair LPX 3000
- Grafikprozessor
- 1080ti
- Display
- 28" Samsung 3840x2160
- SSD
- Samsung Evo 960 500Gb
- Soundkarte
- Creative X-Fi Titanium PCIe
- Netzteil
- Be Quiet Dark Power 650
- Betriebssystem
- Windows 10 64 Bit
Hat die Software nur einen rechnenden Thread, so wird dieser zwischen allen Kernen hin- und hergeschoben, um die Auslastung auszubalancieren. Die Software sucht sich dabei gar nichts aus sondern der Windows-Kernel oder genauer gesagt der Scheduler verteilt die Aufgaben auf die verfügbaren Resourcen.
Das ist im Prinzip richtig, kommt aber auf die Implementierung an. Ab Windows NT (also auch Vista und 7) wird nach dem Multilevel Feedback Queue geschedult (Ausnahme: Bulldozer CPU mit entsprechendem Patch, dort wurden soweit ich weiß zwei Scheduler implementiert und erst wenn der erste Scheduler voll ist wird der zweite genutzt (was das Umschalten der Module verhindern soll)
http://en.wikipedia.org/wiki/Multilevel_feedback_queue
Vielleicht kannst du aber über den Time Stamp Counter was beeinflussen:
http://en.wikipedia.org/wiki/Time_Stamp_Counter bzw. den QueryPerformanceCounter http://www.ccsl.carleton.ca/~jamuir/rdtscpm1.pdf
EDIT :
.
Und wenn du nicht parallelisieren kannst, dann lass einfach das Fortran Programm x-Mal parallel laufen und führe die Ergebnisse hinterher zusammen (sofern das geht).
Habe ich z.B. schon geamcht um eine sehr umfangreiche Simulation quick-and-dirty per Perl-Script auf X Cores von Y Rechnern zu verteilen.
Zuletzt bearbeitet:
Was sind für dich "bestimmte Ausmaße"?Wenn du per Hand parallelisierst, wird das der Compiler nicht umstoßen. Schreibst du sequentiellen Code, lässt sich das in bestimmten Ausmaßen durchaus automatisch parallelisieren. Gerade Fortran sollte da gute Voraussetzungen bieten. Mit OpenMP lässt sich das sogar recht bequem steuern.
Gibts Messungen oder sowas dazu (aus Neugier, finde ich interessant, obwohl ich nach wie vor sehr skeptisch bin)?
PuckPoltergeist
Grand Admiral Special
Wenn zum Beispiel in einem Programm in zwei Schleifen zwei voneinander unabhängige Werte berechnet werden, lässt sich das automatisiert in zwei Threads verpacken. Wie gesagt, mit OpenMP gibts dafür auch eine Beschreibung, mit der man den (OpenMP-fähigen) Compiler darauf hinweisen kann. Das läuft in die ähnliche Richtung wie Autovektorisierung. Und die funktioniert auch vollkommen unabhängig.Was sind für dich "bestimmte Ausmaße"?
Da gibts richtig Metriken zu. Hab ich jetzt aber nicht zur Hand, weil schon viel zu lange nicht mehr mit beschäftigt. Da gibts aber richtig Forschungsfelder zu, wie für Multicore-Systeme möglichst automatisch paralleler Code erstellt werden kann. Intel nimmt da auch richtig viel Geld in die Hand, um die Entwickler zu unterstützen.Gibts Messungen oder sowas dazu (aus Neugier, finde ich interessant, obwohl ich nach wie vor sehr skeptisch bin)?
Ähnliche Themen
- Antworten
- 0
- Aufrufe
- 456
- Antworten
- 0
- Aufrufe
- 62K
- Antworten
- 0
- Aufrufe
- 52K
- Antworten
- 0
- Aufrufe
- 15K
- Antworten
- 0
- Aufrufe
- 69K