Was bringen mehrere Rechenkerne?



  • Skeptiker schrieb:

    raps schrieb:

    dass dir das argument nicht reicht dass ich in der praxis mehr als n-fache leistungssteigerung mit mehreren kernen hatte ueberliest du da sicher gerne.

    Dann beleg doch mal, dass du mehr als N-fache + X Leistung bekommen hast, nur durch das Hinzufügen mehrerer Kerne.

    egal wieviel ich hier belegen wuerde, es wird trotzdem gemotzt werden, weil es ja nicht sein kann dass mal wieder eine theorie nur theorie ist und kein gesetz, dass fuer die praxis gelten wuerde (auch wenn es Law heisst 🙄 )
    Und mal ehrlich, wenn du soviel wert auf theorie legst, ist es fuer dich aber sicherlich nicht schwer sich wenigstens eines der vielen scenarien zu ueberlegen welche synergieen bei n-cores haben koennten...

    Des weiteren hab lediglich die frage beantwortet "Was aber bringt das für die Leistung? " und n-kerne sind n-fache leistung. was die software daraus macht und ob es sinn macht hat normalerweise garnichts mit den kernen zu tun... ich weiss echt nicht wieso das mal wieder manche zum quieken bringen muss.

    @Rapso Raytracer Link: Der Artikel ist absolut einseitig.

    schoen dass es dir aufgefallen ist. ich schaetze dein @ richtet sich an Phoemuex und nicht an mich, er wollte schliesslich intels meinung wissen die ich fuer ihn ergooglet habe.



  • Fazit schrieb:

    Das ist auch richtig. Dann sind wir uns ja einig, dass eigentlich nur rapsos generelle Aussage "N Kerne == N fache Leistung" in dem Thread hier falsch ist.

    Amdahl sagt, dass man nicht perfekt skalieren kann, aber das sagt nichts über die Leistung von mehreren Recheneinheiten aus. Deswegen ist die Aussage prinzipiell auch nicht falsch, wenn man mal andere technische Faktoren ausser Acht lässt. Man kann ein zusammenhängendes Problem, was auf einem Prozessor die Zeit T braucht i.A. nicht mit N Prozessoren in der Zeit T/N lösen, aber das hat er ja auch nie behauptet, soweit ich das beim Überfliegen gesehen habe.

    Wie man N-fache+X Leistung bekommen soll muss mir aber auch jemand erklären.



  • rapso schrieb:

    Und mal ehrlich, wenn du soviel wert auf theorie legst, ist es fuer dich aber sicherlich nicht schwer sich wenigstens eines der vielen scenarien zu ueberlegen welche synergieen bei n-cores haben koennten...

    Wie wärs, wenn du mal eins vorlegst? Immerhin hast DU quasi behauptet, das Perpetuum Mobile gebaut zu haben.



  • Würde mich auch interessieren wie das gehen sollte das man mehr als die n-fache Leistungssteigerung bekommt.

    Wobei wir hier Systeme vergleichen die prinzipiell die gleiche Gesamtinstruktionsanzahl haben. Nehmen wir hierfür mal an das ein 2GHz Prozessorkern genau doppelt soviele Instruktionen wie ein 1GHz Prozessorkern ausführen kann (Wir wissen das dies praktisch nicht zwingend stimmt, für die Annahme des Geschriebenen ist dies aber wichtig). Nehmen wir nun an das wir einmal einen 2GHz Kern in dem einen Prozessor und 2x1Ghz Kerne in den anderen haben. Wie soll es möglich sein das der Mehrkernprozessor mehr Gesamtleistung erbringt wie der Einzelkernprozessor?

    Ja, es gibt Anwendungsfälle die man massiv paralell durchführen kann, wo sich die Kerne quasi kaum abstimmen müssen. Ich bin zwar definitiv kein Fachmann für Mehrkernsysteme aber alles was ich aus Fachliteratur her kenne, besagt das ein Mehrkernsystem nur dadurch mehr Leistung bringen kann, das man die Anzahl der Gesamt möglichen Instruktionen vervielfacht (Sprich: man vergleicht nicht wie im obigen Beispiel ein 2GHz Kern mit 2x1GHz sondern z.B. 2x1,9Ghz). Dabei treten aber im Verhältnis zur Gesamtzahl der möglichen Instruktionen immer Verluste auf. Dies ist das was ich aus Fachpresse zu Supercomputern [Cluster] und Mehrkernarchitektur gelesen habe.

    Das heißt nicht das ich sage das ein Mehrkernprozessor schlechter als ein Einzelkernsystem ist, sondern nur das alles mir bekannte besagt das man nicht einfach die Gesamtzahl der Kerne als Multiplikator nehmen kann, sondern einen Faktor der darunter liegt.

    Ich lass mich gerne eines Besseren überzeugen aber bitte auch wirklich gut begründet.



  • Hier ein Artikel, der zum Thema passt:
    http://www.javaworld.com/javaworld/jw-09-2007/jw-09-multicoreprocessing.html?page=1

    Fazit: Sorting ~35% schneller geworden bei 2 Kernen. 🤡



  • Skeptiker schrieb:

    Im Moment gibt es nicht ein Anzeichen dafür, dass irgendwer weg geht von normalen Renderer hin zu Raytracern.

    Naja, es ist durchaus klar, dass die Kernanzahl in Zukunft stark ansteigt. AFAIK sind bei Intel "8 Kerne + Hyperthreading" für Ende 2009 (oder Anfang 2010) mehr oder weniger offiziell. Und das wird wohl auch noch so weiter gehen, ganz einfach, weil es gerade bei rechenintensiven Anwendungen oft stark parallelisierbare Aufgaben gibt: Videobearbeitung und so Zeugs meine ich jetzt. Ok, jetzt haben wir also diesen Trend bei den Prozessoren, dass immer mehr Kerne dazukommen. Was machen jetzt die Spieleentwickler damit? Physikberechnungen sind da sicherlich ein mögliches Anwendungsgebiet, die Nutzung der Rechenkapazität für bessere KI ist ein weiteres. Und das Raytracing wird ab einem bestimmten Punkt auch so ein Anwendungsgebiet sein, das man ins Auge fassen könnte. Also in jedem Fall ist das etwas, was für Spieleentwickler irgendwann eine gewisse Attraktivität kriegen wird.

    Bei konventionellen Grafikkarten scheint sich die Entwicklung ja etwas totgefahren zu haben: Es kommen zwar immer wieder neue Grafikkarten auf den Markt, aber die meisten Spiele sind diesbezüglich nicht mehr auf das Non-Plus-Ultra angewiesen. Das war früher anders. rapso wird da mehr Ahnung als ich haben, aber anscheinend haben die Spieleentwickler echte Probleme, die Grafikkarten mit genug Daten zu füttern, dass diese auch ausgelastet sind. Wenn man aber auf Dauer immer weniger Leistung solcher Grafikkarten wirklich ausnutzt, dann stellt sich die Frage, warum man überhaupt noch Spezialhardware dafür nutzen sollte. In ein paar Jahren sollte die CPU auch genug Rechenleistung haben, um die Grafikberechnungen in den meisten Spielen durchführen zu können.



  • Skeptiker schrieb:

    raps schrieb:

    dass dir das argument nicht reicht dass ich in der praxis mehr als n-fache leistungssteigerung mit mehreren kernen hatte ueberliest du da sicher gerne.

    Dann beleg doch mal, dass du mehr als N-fache + X Leistung bekommen hast, nur durch das Hinzufügen mehrerer Kerne.

    Ist doch einfach zu überlegen. Wenn du 1 Kern hast, dann läuft außer dem Programm noch ne Menge anderer Scheiß auf dem OS (besonders, wenn's ein Linux ist). Dein Programm kriegt also zum Beispiel nur 90% von 1 Kern. Bei zwei Kernen kriegt dein Programm dann 190%, was mehr ist als das Doppelte.



  • Gregor schrieb:

    Bei konventionellen Grafikkarten scheint sich die Entwicklung ja etwas totgefahren zu haben: Es kommen zwar immer wieder neue Grafikkarten auf den Markt, aber die meisten Spiele sind diesbezüglich nicht mehr auf das Non-Plus-Ultra angewiesen. Das war früher anders. rapso wird da mehr Ahnung als ich haben, aber anscheinend haben die Spieleentwickler echte Probleme, die Grafikkarten mit genug Daten zu füttern, dass diese auch ausgelastet sind. Wenn man aber auf Dauer immer weniger Leistung solcher Grafikkarten wirklich ausnutzt, dann stellt sich die Frage, warum man überhaupt noch Spezialhardware dafür nutzen sollte. In ein paar Jahren sollte die CPU auch genug Rechenleistung haben, um die Grafikberechnungen in den meisten Spielen durchführen zu können.

    Die Rechenpower, die du zum Beispiel für realistische Lichtberechnungen verbrauchen könntest, wenn du sie nur hättest, ist doch nahezu unbegrenzt. Ich sehe irgendwie gerade nicht, dass man jetzt demnächst nicht mehr so tolle Leistungssteigerungen bei Grafikkarten brauchen sollte. Ich habe in den letzten Jahren sicherlich öfter die Grafikkarte als meine CPU aufgerüstet.

    Crysis und jedes Spiel was danach kommen wird, ist mit heutiger high-end Hardware nicht auf voller Detailstufe spielbar. Es ist also sogar jetzt gerade Bedarf dar für eine Grafikkarte mit noch mehr Power als wie es derzeit gibt. Was lässt dich glauben, dass sich das auf absehbare Zeit ändert?



  • rapso schrieb:

    egal wieviel ich hier belegen wuerde, es wird trotzdem gemotzt werden, weil es ja nicht sein kann dass mal wieder eine theorie nur theorie ist und kein gesetz, dass fuer die praxis gelten wuerde (auch wenn es Law heisst 🙄 )
    Und mal ehrlich, wenn du soviel wert auf theorie legst, ist es fuer dich aber sicherlich nicht schwer sich wenigstens eines der vielen scenarien zu ueberlegen welche synergieen bei n-cores haben koennten...

    lol. War ja so klar, dass du dich nur wieder in blabla flüchtest und den Ball einfach abgibst.

    rapso schrieb:

    Des weiteren hab lediglich die frage beantwortet "Was aber bringt das für die Leistung? " und n-kerne sind n-fache leistung.

    1. ist "Leistung" ja wohl darauf bezogen was es mir letztlich bringt und 2. gilt deine Aussage bereits für die Hardware nicht.

    Bashar schrieb:

    rapso schrieb:

    Und mal ehrlich, wenn du soviel wert auf theorie legst, ist es fuer dich aber sicherlich nicht schwer sich wenigstens eines der vielen scenarien zu ueberlegen welche synergieen bei n-cores haben koennten...

    Wie wärs, wenn du mal eins vorlegst? Immerhin hast DU quasi behauptet, das Perpetuum Mobile gebaut zu haben.

    Darauf werden wir lange warten können. 🙄



  • Optimizer schrieb:

    Skeptiker schrieb:

    raps schrieb:

    dass dir das argument nicht reicht dass ich in der praxis mehr als n-fache leistungssteigerung mit mehreren kernen hatte ueberliest du da sicher gerne.

    Dann beleg doch mal, dass du mehr als N-fache + X Leistung bekommen hast, nur durch das Hinzufügen mehrerer Kerne.

    Ist doch einfach zu überlegen. Wenn du 1 Kern hast, dann läuft außer dem Programm noch ne Menge anderer Scheiß auf dem OS (besonders, wenn's ein Linux ist). Dein Programm kriegt also zum Beispiel nur 90% von 1 Kern. Bei zwei Kernen kriegt dein Programm dann 190%, was mehr ist als das Doppelte.

    Du kennst offenbar nicht mal den Unterschied zwischen Threads und Prozessen. 🙄



  • Optimizer schrieb:

    Gregor schrieb:

    Bei konventionellen Grafikkarten scheint sich die Entwicklung ja etwas totgefahren zu haben: Es kommen zwar immer wieder neue Grafikkarten auf den Markt, aber die meisten Spiele sind diesbezüglich nicht mehr auf das Non-Plus-Ultra angewiesen. Das war früher anders. rapso wird da mehr Ahnung als ich haben, aber anscheinend haben die Spieleentwickler echte Probleme, die Grafikkarten mit genug Daten zu füttern, dass diese auch ausgelastet sind. Wenn man aber auf Dauer immer weniger Leistung solcher Grafikkarten wirklich ausnutzt, dann stellt sich die Frage, warum man überhaupt noch Spezialhardware dafür nutzen sollte. In ein paar Jahren sollte die CPU auch genug Rechenleistung haben, um die Grafikberechnungen in den meisten Spielen durchführen zu können.

    Die Rechenpower, die du zum Beispiel für realistische Lichtberechnungen verbrauchen könntest, wenn du sie nur hättest, ist doch nahezu unbegrenzt.

    Grafikkarten sind nicht auf die Berechnung realistischen Lichts ausgelegt. Das ist eher eine Stärke von Raytracing, das auf der CPU besser läuft. Also noch ein Grund mehr, von heutigen Grafikkarten wegzukommen. 🤡



  • omg.. schrieb:

    Optimizer schrieb:

    Skeptiker schrieb:

    raps schrieb:

    dass dir das argument nicht reicht dass ich in der praxis mehr als n-fache leistungssteigerung mit mehreren kernen hatte ueberliest du da sicher gerne.

    Dann beleg doch mal, dass du mehr als N-fache + X Leistung bekommen hast, nur durch das Hinzufügen mehrerer Kerne.

    Ist doch einfach zu überlegen. Wenn du 1 Kern hast, dann läuft außer dem Programm noch ne Menge anderer Scheiß auf dem OS (besonders, wenn's ein Linux ist). Dein Programm kriegt also zum Beispiel nur 90% von 1 Kern. Bei zwei Kernen kriegt dein Programm dann 190%, was mehr ist als das Doppelte.

    Du kennst offenbar nicht mal den Unterschied zwischen Threads und Prozessen. 🙄

    Ahja.

    Das ist ja mal die dämlichste Antwort in diesem Thread. Es ist vollkommen irrelevant, was für schedulbare Einheiten du verwendest, es ist in verschiedenen Betriebssystemen verschiedentlich implementiert und du kannst dein Programm verschiedentlich dazu bringen, mehrere Kerne zu nutzen, beispielsweise über weitere Prozesse oder weitere Thread. Plus, das ganze hat mit dem Thema nichts zu tun.

    EDIT: Aber ich verstehe schon, warum du dich weigerst, solche Aussagen anzuerkennen. Du bist gedanklich in einer idealisierten Welt, in der es nichts außer deinem Programm gibt. Die Realität ist aber nicht so und es ist schon vorstellbar, dass dadurch, dass mehr Kerne vorhanden sind, die Wartezeit woanders geringer wird und ein anderer Kern dadurch weniger idlet. Es gibt viele mögliche Gründe, warum man auch mal einen unverhältnismäßigen Leistungsanstieg verzeichnen kann. Dabei geht es um die Leistung, die dir was nützt und nicht um die Leistung, die idlet. Natürlich haben 2 Kerne nur die Power von 2 Kernen, aber du kannst sie möglicherweise besser für dich nutzen, aus verschiedensten Gründen.



  • Gregor schrieb:

    Optimizer schrieb:

    Gregor schrieb:

    Bei konventionellen Grafikkarten scheint sich die Entwicklung ja etwas totgefahren zu haben: Es kommen zwar immer wieder neue Grafikkarten auf den Markt, aber die meisten Spiele sind diesbezüglich nicht mehr auf das Non-Plus-Ultra angewiesen. Das war früher anders. rapso wird da mehr Ahnung als ich haben, aber anscheinend haben die Spieleentwickler echte Probleme, die Grafikkarten mit genug Daten zu füttern, dass diese auch ausgelastet sind. Wenn man aber auf Dauer immer weniger Leistung solcher Grafikkarten wirklich ausnutzt, dann stellt sich die Frage, warum man überhaupt noch Spezialhardware dafür nutzen sollte. In ein paar Jahren sollte die CPU auch genug Rechenleistung haben, um die Grafikberechnungen in den meisten Spielen durchführen zu können.

    Die Rechenpower, die du zum Beispiel für realistische Lichtberechnungen verbrauchen könntest, wenn du sie nur hättest, ist doch nahezu unbegrenzt.

    Grafikkarten sind nicht auf die Berechnung realistischen Lichts ausgelegt. Das ist eher eine Stärke von Raytracing, das auf der CPU besser läuft. Also noch ein Grund mehr, von heutigen Grafikkarten wegzukommen. 🤡

    Dann nimm halt beliebige lokale Algorithmen der Bildverarbeitung. Heute wird doch in Computerspielen eh schon massiv Gebrauch von Postprocessing gemacht. Ich glaube wirklich nicht, dass in absehbarer Zeit die Leistung einfach "ausreicht".



  • Gregor schrieb:

    Grafikkarten sind nicht auf die Berechnung realistischen Lichts ausgelegt. Das ist eher eine Stärke von Raytracing, das auf der CPU besser läuft. Also noch ein Grund mehr, von heutigen Grafikkarten wegzukommen. 🤡

    Wie kommst du darauf, dass es auf CPUs besser läuft? Nur weil es einfacher ist, eine brauchbare Schnittstelle anzubieten? Wenn Echtzeit Raytracing kommt, dann ziemlich wahrscheinlich auf dafür entwickelten GPUs, und nicht auf Mehrzweck-CPUs wie x86. Schau dir einfach mal an, welche Rohleistung heutige Grafikkarten bieten. Davon können CPUs nur träumen. So schnell werden Grafikkarten auch nicht aussterben, auch wenn smartere Lösungen durchaus an Bedeutung gewinnen könnten, siehe Swift von AMD.



  • groovemaster schrieb:

    Wie kommst du darauf, dass es auf CPUs besser läuft? Nur weil es einfacher ist, eine brauchbare Schnittstelle anzubieten? Wenn Echtzeit Raytracing kommt, dann ziemlich wahrscheinlich auf dafür entwickelten GPUs, und nicht auf Mehrzweck-CPUs wie x86. Schau dir einfach mal an, welche Rohleistung heutige Grafikkarten bieten. Davon können CPUs nur träumen. So schnell werden Grafikkarten auch nicht aussterben, auch wenn smartere Lösungen durchaus an Bedeutung gewinnen könnten, siehe Swift von AMD.

    Irgendwo stand mal, dass Raytracing sehr von großen Caches profitiert. Das Raytracing ist auf soetwas also praktisch angewiesen. Klassische GPUs haben aber keine großen Caches. Den haben die CPUs.



  • Und was gewinnst du durch grosse Caches an Leistung? 10%? 20%? Dadurch kannst du die momentan mehr als 20-fache Leistung von Grafikkarten aber nicht wegmachen.
    Man sollte immer bedenken, Cache kann die Leistung nicht effektiv erhöhen. Man kann dadurch lediglich den Leistungsabfall verringern. Intel braucht momentan halt viel davon, weil sie im Gegensatz zu AMD eine langsame Speicheranbindung (FSB) haben. Bei Nehalem zB wandert der Speichercontroller ebenfalls in die CPU und wird mittels QPI gespeist. Dann wird auch der Cache wieder geringer, 8 MiB (aktuell 12 MiB).



  • groovemaster schrieb:

    Und was gewinnst du durch grosse Caches an Leistung? 10%? 20%? Dadurch kannst du die momentan mehr als 20-fache Leistung von Grafikkarten aber nicht wegmachen.
    Man sollte immer bedenken, Cache kann die Leistung nicht effektiv erhöhen. Man kann dadurch lediglich den Leistungsabfall verringern. Intel braucht momentan halt viel davon, weil sie im Gegensatz zu AMD eine langsame Speicheranbindung (FSB) haben. Bei Nehalem zB wandert der Speichercontroller ebenfalls in die CPU und wird mittels QPI gespeist. Dann wird auch der Cache wieder geringer, 8 MiB (aktuell 12 MiB).

    Der Unterschied zwischen "Daten aus dem Cache holen" und "Daten aus dem RAM holen", ist ungefähr 5ns vs. 50ns. Es geht dabei also um einen Faktor 10, falls bei einer Anwendung an dieser Stelle der Flaschenhals liegen sollte. Wenn man beim Raytracing vielleicht von einer Datenmenge ausgeht, die in größere Caches passen könnte und auf die die Zugriffe mehr oder weniger zufällig erfolgen, dann liegt hier ganz sicher der Flaschenhals. Und vermutlich wird in dem Fall zusätzlich noch die Bandbreite limitierend. Vom RAM in den Cache wird immer gleich eine ganze Speicherzeile übertragen. Wenn man davon aber nur ein konkretes Datum braucht, dann hat man das Meiste umsonst übertragen, man hat also viel Bandbreite verschwendet. Bei der heutigen Arbeitsweise von Grafikkarten kannst Du das vermeiden, weil Du die Daten oft in Speicherreihenfolge bearbeiten kannst. Beim Raytracing wird das nicht so sein. Mit anderen Worten: Es ist stark zu bezweifeln, dass Du einen Prozessor ohne großem Cache auch nur ansatzweise beim Raytracing mit den Daten füttern kannst, die er theoretisch verarbeiten könnte.



  • Das darfst du gerne bezweifeln. Aber selbst mit 1 GiB Cache werden CPUs weitaus langsamer sein als Grafikkarten. Ich glaube, du überschätzt die Bedeutung von Cache gewaltig. Wie ich schon sagte, Cache dient nicht zur effektiven Leistungssteigerung, sondern ausschliesslich zur Pufferung. Dein Beispiel mit den Latenzen ist auch irreführend. In der Praxis hat das nur geringe Auswirkungen, da Flaschenhälse noch an ganz anderen Stellen zum tragen kommen. Ohne ALU und FPU Power nützt dir der Cache alles nix. Und daran scheitert es bei GP CPUs.
    Wenn es dich wirklich interessiert, wie Chips für Echtzeit-Raytracing in Zukunft aussehen könnten, google mal nach Tera Scale von Intel. Infrastruktur ist entscheidend, nicht Cache.



  • groovemaster schrieb:

    Wenn es dich wirklich interessiert, wie Chips für Echtzeit-Raytracing in Zukunft aussehen könnten, google mal nach Tera Scale von Intel. Infrastruktur ist entscheidend, nicht Cache.

    Aber Du weißt schon, was in der nächsten Ausbaustufe dieses Testchips dazukommt, oder? 😋 Vielleicht werden wir das ja auch relativ kurzfristig durch das nächste IDF Anfang April mitkriegen. Ich bin da sehr gespannt, hoffentlich gibt es auch Nehalem-Benchmarks, damit ich nen Grund finde, noch'n dreiviertel Jahr mit nem Rechnerkauf zu warten. 🙂



  • Irgendwie versteh ich auch nicht so ganz, wieso Caches so unglaublich wichtig sein sollten beim Thema Raytracing. Entscheidender sollte doch eher eine massiv parallele Architektur mit riesiger FP Verarbeitungsgeschwindigkeit sein.


Anmelden zum Antworten