Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Multithreading - Lösung für individuelle Corezuweisung

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
pzktupel



Anmeldungsdatum: 07.07.2020
Beiträge: 81

BeitragVerfasst am: 10.08.2020, 12:40    Titel: Multithreading - Lösung für individuelle Corezuweisung Antworten mit Zitat

Ich habe mal eine spezielle Frage zum Multithreading.

Allgemein wird ja mit

T1 = ThreadCreate(@MyThread1)
T2 = ThreadCreate(@MyThread2)
...

zum Bsp. mehrere Threads gestartet.

Nun ist aber das Problem bei physischen und logischen Kernen, dass der Prozess nicht immer primär auf die physischen verteilt wird.

Kann man mit einer Art "/affinity ??? " einem Thread einen speziellen Kern zuweisen ?

Gruß
_________________
Umfangreichste Angaben zu Primzahl k-Tupel
https://www.pzktupel.de/ktuplets.php


Zuletzt bearbeitet von pzktupel am 11.08.2020, 13:35, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
pzktupel



Anmeldungsdatum: 07.07.2020
Beiträge: 81

BeitragVerfasst am: 10.08.2020, 14:17    Titel: Antworten mit Zitat

Konnte das Problem selbst lösen.
_________________
Umfangreichste Angaben zu Primzahl k-Tupel
https://www.pzktupel.de/ktuplets.php
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 10.08.2020, 21:04    Titel: Antworten mit Zitat

Falls es geht, kannst du kurz eine Lösung posten? Würde mich auch interessieren (mein Kenntnisstand ist, dass es nicht bzw. nicht so ohne weiteres geht - bzw. dass es nicht vorgesehen ist, dass das Programm selbst darauf Einfluss nimmt).
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
pzktupel



Anmeldungsdatum: 07.07.2020
Beiträge: 81

BeitragVerfasst am: 11.08.2020, 13:28    Titel: Antworten mit Zitat

Ja gerne, das habe ich nur durch Zufall mal registriert und ist ganz simple !

Das auszuführende Programm wird über eine BAT-Datei geregelt.

In dieser BAT-Datei legt man den affinity-Wert fest. Dieser ist seltsamerweise

primär bindend. Ich habe einen 8/16 Core zum Bsp. und will 8 echten Kerne benutzen über 8-Threads im FB-Programm. Hier in dem Fall ist die Codierung 5555.

Würde man also "start /low /affinity 5555 meinprogramm.exe" starten, werden nur die Kerne 0,2,4,6,8,10,12,14 verwendet...das muss der dann intern selber aufteilen...aber die logischen sind außen vor.

Drauf gekommen bin ich nach langem Suchen, weil ich mal ein MT-Programm geschrieben habe und über eine alte BAT nur den Kern 0 mit "/affinity 1" gestartet habe...er hat nur den Kern 0 belastet und wunderte mich über die Zeitverzögerung.

Weitere affinity - Codierung sind hier im Gebrauch:
Nur physikalische [0..7] 1,4,10,40,100,400,1000,4000
physikalische/logische zusammen [0..7] 3,C,30,C0,300,C00,3000,C000
Bsp. C000 verwendet Kern 14 & 15 , 3 ist Kern 0 & 1, sinnvoll , wenn zwei gleichwertige Aufgaben sich den physikalischen und logischn Kern dazu teilen (HT,SMT Nutzung)

5555 hat alle 8 physikalischen Kerne. Die Nummern muss man selber berechnen, gegebenfalls dann überprüfen
_________________
Umfangreichste Angaben zu Primzahl k-Tupel
https://www.pzktupel.de/ktuplets.php
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 11.08.2020, 13:57    Titel: Antworten mit Zitat

Ah, ok, danke schön! lächeln
Wenn es über BAT geht, könnte es vielleicht auch über den SHELL-Befehl klappen; der sollte sich wie eine einzeilige BAT-Datei verhalten.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
pzktupel



Anmeldungsdatum: 07.07.2020
Beiträge: 81

BeitragVerfasst am: 11.08.2020, 14:32    Titel: Antworten mit Zitat

Also aus FB heraus mit SHELL geht natürlich auch mit dem affinity. Dabei wird freilich dem Programm die vorgegebenen Kerne zugewiesen....habe ich hier auch. Nur mir ging es eben darum bei zig parallelem threads unter einem FB-Programm auch nur speziell ausgewählte Kerne zu nutzen. Das scheiterte bisher, da Windows irgendwas immer nimmt. Da ich 2 PCs habe mit selbiger Rechenleistung , gab es immer massive Abweichung im Prozessfortschritt. Das ist damit behoben. Windows 10 nimmt besser die echten zuerst und Windows 7 legt das auch gerne auf die logischen.
_________________
Umfangreichste Angaben zu Primzahl k-Tupel
https://www.pzktupel.de/ktuplets.php
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz