Ja wie der Thread Titel schon sagt, wollte ich mal Infos sammeln oder Links oder was auc immer die sich mit einem oder beiden Themen aus der Überschrift beschäftigen.
Da ich gerade eine Ausbildung zum FiAE mache und somit viel mit dem programmieren zu tun habe, hat mich die Sache mal interessiert.
Also meine Frage an euch:
Was muss man beim programmieren beachten/anders machen um die Software als 64Bit Software laufen zu lassen
und
was muss man beachten um die Software für MultiCore CPU's (2, 4 .. Kerne) zu designen.
greetz skelle
Seite 1 von 1
Was Ist Zu Beachten Beim Programmieren Für 64bit Cpu's Und Multico
Anzeige
#2
geschrieben 29. November 2007 - 08:18
Hallo skelle,
es kommt zum Teil drauf an in welcher Programmiersprache du entwickelst. Bei Sprachen wie Java oder C#, wo um Hintergrund eine Runtime läuft, musst du dir um 64-Bit keine Sorgen machen. Sämtliche Optimierungen (Laufe ich auf einem 64-Bit System, unterstützt es SSE, SSE2...?) übernimmt die Runtime für dich.
Bei Sprachen wie C++, sieht das anders aus. 64-Bit-Systeme bringen eigene 64-Bit Datentypen (Long_Long oder so ähnlich), die du natürlich verwenden solltest, falls benötigt (Manchmal brauchst du das auch nicht, weil du bspw nicht mit so großen Zahlen hantierst). Hier ein wenig Lesestoff für Windows.
Bei Multithreading kommt es auch wieder auf die Sprache an, da es einige Sprachen gibt, die sowas nicht unterstützen, wie bspw PHP (sch**ß Gefrickle), aber diese sind zum Glück Minderware.
Multithreading zu implementieren ist für viele nicht wirklich einfach, weil wir nicht parallel Denken können, bzw uns dabei sehr schwer tun.
Bei zwei parallelen Threads kann z.B. der eine die gerade Indizes und der andere die ungeraden bearbeiten. Bei vier Threads jedes vierte...
Zudem kommt noch dazu, dass das Debuggen von parallellaufenden Threads nicht wirklich trivial ist.
C# und Java bringen entsprechende Klassen mit, die es ermöglichen parallele Threads zu entwickeln.
Für C/C++ gibt es Bibliotheken, wie OpenMP, die dir dabei helfen können.
es kommt zum Teil drauf an in welcher Programmiersprache du entwickelst. Bei Sprachen wie Java oder C#, wo um Hintergrund eine Runtime läuft, musst du dir um 64-Bit keine Sorgen machen. Sämtliche Optimierungen (Laufe ich auf einem 64-Bit System, unterstützt es SSE, SSE2...?) übernimmt die Runtime für dich.
Bei Sprachen wie C++, sieht das anders aus. 64-Bit-Systeme bringen eigene 64-Bit Datentypen (Long_Long oder so ähnlich), die du natürlich verwenden solltest, falls benötigt (Manchmal brauchst du das auch nicht, weil du bspw nicht mit so großen Zahlen hantierst). Hier ein wenig Lesestoff für Windows.
Bei Multithreading kommt es auch wieder auf die Sprache an, da es einige Sprachen gibt, die sowas nicht unterstützen, wie bspw PHP (sch**ß Gefrickle), aber diese sind zum Glück Minderware.
Multithreading zu implementieren ist für viele nicht wirklich einfach, weil wir nicht parallel Denken können, bzw uns dabei sehr schwer tun.
Bei zwei parallelen Threads kann z.B. der eine die gerade Indizes und der andere die ungeraden bearbeiten. Bei vier Threads jedes vierte...
Zudem kommt noch dazu, dass das Debuggen von parallellaufenden Threads nicht wirklich trivial ist.
C# und Java bringen entsprechende Klassen mit, die es ermöglichen parallele Threads zu entwickeln.
Für C/C++ gibt es Bibliotheken, wie OpenMP, die dir dabei helfen können.
#3
geschrieben 29. November 2007 - 16:45
Zur Zeit beschäfzige ich mit Java.
Um die 64Bit unterstüzuung brauch ich mir also nich so die Gedanken machen, weil das die Runtime im Endefft macht.
Aber woher weiss denn die Runtime wann sie die 64Bit Datentypen nehmen muss?
Wenn ich mit Threads arbeite, denn mach ich das so:
Thread t1 = new Thread(object);
t1.start();
Is dies so richtig oder muss ich es anders machen?
mfg skelle
Um die 64Bit unterstüzuung brauch ich mir also nich so die Gedanken machen, weil das die Runtime im Endefft macht.
Aber woher weiss denn die Runtime wann sie die 64Bit Datentypen nehmen muss?
Wenn ich mit Threads arbeite, denn mach ich das so:
Thread t1 = new Thread(object);
t1.start();
Is dies so richtig oder muss ich es anders machen?
mfg skelle
#4
geschrieben 02. Dezember 2007 - 11:42
Zitat
Um die 64Bit unterstüzuung brauch ich mir also nich so die Gedanken machen, weil das die Runtime im Endefft macht.
Richtig, zudem gibt es bei Sun sowieso zwei verschiedene Runtimes zum Download, eine für 32bit und ein für 64bit.
Zitat
Aber woher weiss denn die Runtime wann sie die 64Bit Datentypen nehmen muss?
s.o.
Wobei hier eher die Frage interessanter wäre, wann weiß die Runtime, wann sie SSE oder SSE2 Befehle nutzen kann. Die Antwort hierdrauf ist eigentlich auch relativ simpel, sie fragt einfach den Prozessor, was er kann.
Zitat
Is dies so richtig oder muss ich es anders machen?
Ist im Prinzip schon mal richtig. Hier ein wenig Lesestoff, falls es dir noch nicht bekannt ist.
http://java.sun.com/docs/books/tutorial/es...al/concurrency/
http://www.dpunkt.de/java/Programmieren_mi...hreading/3.html
Thema verteilen:
Seite 1 von 1