[gelöst] Multicore

Status
Nicht offen für weitere Antworten.

Illuvatar

Top Contributor
Generell: Wenn du Threads verwendest verteilt die JRE die schon sinnvoll auf die Kerne.
Wie du jetzt explizit "Kern 2" ansprichst, weiß ich nicht. Die Fracture-Lib kenn ich auch nicht, kann ich dir nicht mehr zu sagen.
 

Tobias

Top Contributor
Fracture hat null damit zutun irgendeinem physikalischen Prozessorkern etwas zu zuweisen, sondern vereinfacht schlicht und ergreifend nur die Multi-Thread-Entwicklung - weil die nämlich Vorraussetzung ist, damit das Betriebssystem irgendwas verteilen kann.

Aber poste ruhig noch ein paar Mal den Link, der ist nämlich gar nicht schlecht ...
 
B

Beni

Gast
Soweit ich den Code der KCoder-Library durchschaue, machen die auch nicht mehr als Threads starten, und hoffen dass die ordentlich verteilt werden. Wenn man die Zahlen anschaut die sie angeben, funktioniert das auch ganz gut. Aber es bringt dich keinen Schritt näher an Threads Prozessorkernen zuzuweisen.

Sieht trotzdem nach einer Library aus, die man sich bookmarken sollte.

Falls das aber doch irgendwie anders ist, als maki schreibt (ich habe selten gesehen, dass maki sich irrt und hätte spontan dasselbe gesagt), würde mich auch interessieren wie das geht.

[Edit: uh, da war jemand schneller als ich]
 
B

Beni

Gast
Ich habe zwischendurch die Library runtergeladen, in Eclipse rumgespielt um den Quellcode anzusehen, und sonst ein bisschen auf der KCCoder-Homepage rumgeschnuppert... soviel Zeit für den eigentlichen Beitrag habe ich nicht investiert :wink:
 

assoziatives pseudonym

Aktives Mitglied
Tobias hat gesagt.:
Fracture hat null damit zutun irgendeinem physikalischen Prozessorkern etwas zu zuweisen, sondern vereinfacht schlicht und ergreifend nur die Multi-Thread-Entwicklung - weil die nämlich Vorraussetzung ist, damit das Betriebssystem irgendwas verteilen kann.

Blödsinn, Java verteilt selbst ganz gut (hier auf nem Quadcore werden alle Kerne sehr schön benutzt, ohne Fracture und zudem wurde Java sogar für Multicore / Multisocket-Server entwickelt, zb. skaliert Java deutlich besser als C++, je mehr Power man hat.

Und wenn ihr euch ma n bischen informiert hättet dann wüsstet ihr dass es mittels Fracture sehr wohl möglich ist, einzelne Kerne anzusprechen
 
G

Guest

Gast
tha_specializt hat gesagt.:
Tobias hat gesagt.:
Fracture hat null damit zutun irgendeinem physikalischen Prozessorkern etwas zu zuweisen, sondern vereinfacht schlicht und ergreifend nur die Multi-Thread-Entwicklung - weil die nämlich Vorraussetzung ist, damit das Betriebssystem irgendwas verteilen kann.

Blödsinn, Java verteilt selbst ganz gut
nein, java verteilt genausowenig wie c++ irgendwelche threads verteilt.

Und wenn ihr euch ma n bischen informiert hättet dann wüsstet ihr dass es mittels Fracture sehr wohl möglich ist, einzelne Kerne anzusprechen
nein ist nicht möglich. wenn du dir so sicher darin bist, warum hast du überhaupt den thread aufgemacht, denn wie das funktioniert war doch deine anfangsfrage. hast du es denn inzwischen rausgefunden? teile es uns doch bitte mit. :applaus:
 

foobar

Top Contributor
Warum sollte man als Entwickler überhaupt Einfluss auf die Verteilung der Threads auf Prozessorkerne haben? Wofür sollte das gut sein? Dafür gibts nen Scheduler im Kernel.
 
G

Guest

Gast
tha_specializt hat gesagt.:
dann poste doch bitte den java code dazu. denn das interessiert mich nun. außerdem markiere den thread dann bitte als gelöst.
Hast du jemals die Prozessorauslastung mit Java gesehen? Nein? Woher willst du das dann wissen? Soll ich nen Screenshot machen?
prozessorauslastung wovon überhaupt? ich weiß es weil es a. technisch nicht möglich ist und b. kannst du dich selbst davon überzeugen wenn du dich mal 5 minuten mit der library von oben beschäftigen würdest und deren code liest.
und dass die pro-kern-auslastung runtergeht wenn man diese library benutzt ist ja auch sinn der sache, die threads werden trotzdem von deinem OS aufgeteilt :roll:
 

assoziatives pseudonym

Aktives Mitglied
Anonymous hat gesagt.:
dann poste doch bitte den java code dazu.
Hab ich schon lang nimmer .. zwischen der Threaderstellung damals und heute liegen ca. 3 Windows-Versionen
Anonymous hat gesagt.:
prozessorauslastung wovon überhaupt?
Von Core 1,2,3,4 zum Beispiel?
Anonymous hat gesagt.:
ich weiß es weil es a. technisch nicht möglich ist
ist es sehr wohl ... das es auf Maschinennaher Ebene tatsächlich vieles seriell abläuft ist uninteressant, die für den Anwender/Programmierer sichtbaren Schaltzeiten sind die wichtigen, und diese kann man beliebig anordnen
Anonymous hat gesagt.:
und dass die pro-kern-auslastung runtergeht wenn man diese library benutzt ist ja auch sinn der sache,
Nur sekundär, primär geht es um die selektierte Verteilung, man kann ganz bequem wählen wieviele Kerne / CPU´s benutzt werden sollen
 
G

Guest

Gast
tha_specializt hat gesagt.:
Hab ich schon lang nimmer .. zwischen der Threaderstellung damals und heute liegen ca. 3 Windows-Versionen
:applaus: alles klar ;) es funktioniert leider trotzdem nicht. warum kramst du den thread nach "so lange" überhaupt wieder raus wenn du eh nix sinnvolles dazu mehr beizutragen hast?

Von Core 1,2,3,4 zum Beispiel?
von solitär oder was? *kopfschüttel*

ist es sehr wohl ... das es auf Maschinennaher Ebene tatsächlich vieles seriell abläuft ist uninteressant, die für den Anwender/Programmierer sichtbaren Schaltzeiten sind die wichtigen, und diese kann man beliebig anordnen
erstens sind die schaltzeiten auch bei singlecore prozessoren weder für programmierer noch anwender wahrnehmbar, es sei denn du programmierst so, dass die gui hängt (...). beliebig anordnen kannst du sie, ja, im scheduler code...

Nur sekundär, primär geht es um die selektierte Verteilung, man kann ganz bequem wählen wieviele Kerne / CPU´s benutzt werden sollen
du kannst mit der library wählen, wie viele threads gestartet werden sollen, mehr nicht. das aufteilen auf die kerne ist noch immer OS sache :roll:
 

assoziatives pseudonym

Aktives Mitglied
Anonymous hat gesagt.:
wieder raus wenn du eh nix sinnvolles dazu mehr beizutragen hast?
Wieso bist du in diesem Thread? Kennst du den "Eigene Beiträge anzeigen"-Knopf bei phpbb?
Anonymous hat gesagt.:
von solitär oder was? *kopfschüttel*
Weisst du eigentlich um was es hier geht? Weisst du was ein Prozessor ist und was es da so für neues Zeug gibt?
Anonymous hat gesagt.:
du kannst mit der library wählen, wie viele threads gestartet werden sollen, mehr nicht. das aufteilen auf die kerne ist noch immer OS sache :roll:
Du weisst nicht wirklich, wovon du redest:

http://kccoder.com/fracture/ hat gesagt.:
Core Mode
By default Fracture uses all available cores; however, you can configure Fracture to use fewer cores by setting the CoreMode via Fracture.setCoreMode(). The modes available are pretty self explanatory. Future releases will provide more sophisticated (and granular) configuration options.
 
G

Gast

Gast
doch, ich weiß leider wovon ich rede. wie wärs wenn du dir den code mal genau anschaust von der library. ich hab hier für dich das wichtigste zusammengestellt, damit wär das thema eigentlich erledigt (falls du den code verstehst...)

in Fracture.java beispiel eine der forEach methoden:
Code:
	public static <T> void forEach(Iterator<T> iterator, IProcessor<T> processor) {
		new ThreadedForEach<T>(iterator, processor).execute();
	}
aus der klasse ThreadedForEach:
Code:
		int coreCount = Utils.getCoreCount();
		CountDownLatch latch = new CountDownLatch(coreCount);
		for(int i = 0; i < coreCount; i++) {
			Utils.startThread(new MyRunnable(latch));
		}
die methode getCoreCount und dein glorreicher CodeMore:
Code:
	static int getCoreCount(CoreMode cr) {		
		if (cr == CoreMode.ALL_CORES) {
			return getProcessorCount();
		} else if (cr == CoreMode.ALL_CORES_BUT_ONE) {
			return getProcessorCount()-1;
		} else if (cr == CoreMode.ONE_CORE) {
			return 1;
                // wie es hier weitergeht kannst du dir ja denken, aus platzgründen gekürzt
                } else {
			return 1;
		}
	}
und Utils.startThread macht genau das, was der methodenname sagt. q.e.d.
ergo: die library macht nichts weiter als eine reihe von threads zu starten. maximal soviele wie kerne vorhanden sind. das lässt sich durch CoreMode einschränken.
jetz verstanden, du spezialist?
 
B

Beni

Gast
Hast du meine PN (private Nachricht) nicht bekommen specializt?

Ganz oben im Forum solltest du einen fetten Link finden (angeschrieben mit "Nachrichten"), klick darauf.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben