Posts Tagged “Threads”

Parallel4 ist eine neue kleine Library, die Parallelisierung für Java und weitere Sprachen auf der JVM vereinfachen soll. Ein zentraler Bestandteil sind parallele for-Schleifen, die automatisch so viele Threads verwenden wie CPU Kerne verfügbar sind. Dazu gleich etwas Code aus dem mitgelieferten Mandelbrot-Beispiel (zum Starten einfach die Jar Datei ausführen).

Konventionell, single-threaded:

	for (int y = 0; y < height; y++) {
		calcLine(y);
	}

Dasselbe in der multi-threaded Variante mit Parallel4, die alle vorhandenen CPUs nutzt:

	new ParallelForInt(height).loop(new IterationInt() {
		public void iteration(int y) {
			calcLine(y);
		}
	});

Auf einer Dual-/Quad-Core CPU verdoppelt/vervierfacht sich damit die Geschwindigkeit. Parallel4 versucht dabei den Mehraufwand minimal zu halten und gewohnte Ansätze beizubehalten. Den Rest des Eintrages lesen »

Comments 2 Kommentare »

Vor ein paar Jahren sich die Entwicklung von CPUs grundlegend verändert: Statt immer höhere Taktraten zu erzielen setzen Prozessorhersteller auf mehrere Prozessorkerne, die parallel arbeiten. Das volle Leistungspotential können damit auch nur noch Programme ausschöpfen, die parallel mit mehreren Prozessen oder Threads arbeiten. Klassische Programmiersprachen wie C, C++ und Java verlangen vom Programmierer, dass sie selbst für die Parallelisierung Sorge tragen (explizite Parallelisierung). Einfacher zu handhaben sind Programmiersprachen die eine implizite Parallelisierung unterstützen, also keine weiteres Zutun seitens des Entwicklers bedürfen. Insbesondere funktionale Sprachen wie Haskell und Erlang sind besonders dafür geeignet, da sich die Programme hier naturgemäß in parallel abarbeitbar Einheiten unterteilen lassen.
Den Rest des Eintrages lesen »

Comments 3 Kommentare »