REAKTOR-Mathematik

Diskussionsforum für Fragen zur Struktur und Implementation in REAKTOR, auch DSP, Literatur und begleitende Software

Moderator: herw

Benutzeravatar
herw
moderator
Beiträge: 3123
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Beitrag von herw »

helmsklamm hat geschrieben:...zurück zur rechenleistung: spielt da die stepweite irgend eine rolle, oder is das vernachlässigbar?....
mehr Rechenleistung? Kann ich mir nicht vorstellen, da es sich lediglich um Events handelt, die verbrauchen keine CPU-Leistung oder regelst Du deine Knöpfe und Fader mit Audiogeschwindigkeit? ;-)

ciao herw
helmsklamm
synth gott
Beiträge: 1011
Registriert: 10. Mai 2006, 16:21
Wohnort: 030

Beitrag von helmsklamm »

herw hat geschrieben:
helmsklamm hat geschrieben:... da es sich lediglich um Events handelt, die verbrauchen keine CPU-Leistung oder regelst Du deine Knöpfe und Fader mit Audiogeschwindigkeit? ;-)

ciao herw
noch nich;) aber bei event-update-rate 400 brauchen events ca. 1% im vergleich zu samplerate 44000, oder? (also ich hab bspw. nen mixer mit dutzenden event-smoothern und einen ohne und ich hab das gefühl, das der mit smoothern nen tick mehr veraucht).

aber der punkt is, das events ja oftmals mit audiosignalen rechnen, was ja schlussendlich ner audioberechnung enstspricht, oder nich?. und wenn da nun mit 15,773 anstelle mit 16 multipliziert (was, wie du sagst ja besonders effizent is) wird, kann das doch schon nen untershied ausmachen, oder?
bitte vor jeder frage erstmal überprüfen, ob das kapitel "mein erster synth" S. 76 im hnadbuch, schon gelesen wurde.
Benutzeravatar
herw
moderator
Beiträge: 3123
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Beitrag von herw »

helmsklamm hat geschrieben:...aber der punkt is, das events ja oftmals mit audiosignalen rechnen, was ja schlussendlich ner audioberechnung enstspricht, oder nich?. und wenn da nun mit 15,773 anstelle mit 16 multipliziert (was, wie du sagst ja besonders effizent is) wird, kann das doch schon nen untershied ausmachen, oder?
dass eine Multiplikation mit 16 effizienter ist als eine Multiplikation mit 15,773, habe ich nicht gesagt oder habe ich da jetzt was völlig missverstanden?
helmsklamm
synth gott
Beiträge: 1011
Registriert: 10. Mai 2006, 16:21
Wohnort: 030

Beitrag von helmsklamm »

herw hat geschrieben:Bloß weil die Addition in der Schule vor der Multiplikation erklärt wird, ist sie für einen Rechner noch lange nicht einfacher als eine Multiplikation: Beispiel Multiplikation mit 16 ist für einen Rechner, der mit Binärzahlen arbeitet nichts weiter als ein vierfacher bit-shift Befehl und extrem einfach.

ciao herw
oder ich?
bitte vor jeder frage erstmal überprüfen, ob das kapitel "mein erster synth" S. 76 im hnadbuch, schon gelesen wurde.
Benutzeravatar
herw
moderator
Beiträge: 3123
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Beitrag von herw »

helmsklamm hat geschrieben:
herw hat geschrieben:Bloß weil die Addition in der Schule vor der Multiplikation erklärt wird, ist sie für einen Rechner noch lange nicht einfacher als eine Multiplikation: Beispiel Multiplikation mit 16 ist für einen Rechner, der mit Binärzahlen arbeitet nichts weiter als ein vierfacher bit-shift Befehl und extrem einfach.

ciao herw
oder ich?
ach das! ja, da ging es um den Vergleich der Multiplikationen mit ganzen Zahlen und binären Stufenzahlen (1, 2, 4, 8, 16, 32, etc.). Ich dachte, du wolltest Festkomma-Zahlen und Fließkomma-Zahlen vergleichen.
helmsklamm
synth gott
Beiträge: 1011
Registriert: 10. Mai 2006, 16:21
Wohnort: 030

Beitrag von helmsklamm »

naja, und wie isses nun?
is nun ne division mit ner 12stelligen float nun rechenintensiver als eine mit bspw. 8?
und falls, wäre es dann nich sinnvoll, die stepsize so zu wählen, das sie nach möglichkeit viel- oder "gering"fache von 8 aufweisen?
bitte vor jeder frage erstmal überprüfen, ob das kapitel "mein erster synth" S. 76 im hnadbuch, schon gelesen wurde.
Benutzeravatar
herw
moderator
Beiträge: 3123
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Beitrag von herw »

helmsklamm hat geschrieben:naja, und wie isses nun?
is nun ne division mit ner 12stelligen float nun rechenintensiver als eine mit bspw. 8?
und falls, wäre es dann nich sinnvoll, die stepsize so zu wählen, das sie nach möglichkeit viel- oder "gering"fache von 8 aufweisen?
kannst du ja mal durchtesten ich würde wetten, dass die audio-Multiplikation mit 8 weniger aufwändig ist als mit einer 12 stelligen Fließkommazahl. Allerdings ist die Multiplikation mit einer Stufenzahl ja auch ein ziemlicher Spezialfall.
Aber dann bleibt immer noch die Frage, wie diese Multiplikation in eine Corecell eingebaut wird: da gibt es ja dann die Möglichkeiten der einfachen Multiplikation und der Modulation.
Vielleicht entwickelst du mal einen kleinen Testaufbau, der Unterschiede aufzeigt oder auch nicht.

ciao herw
helmsklamm
synth gott
Beiträge: 1011
Registriert: 10. Mai 2006, 16:21
Wohnort: 030

Beitrag von helmsklamm »

also ich überleg grad wie ne testumgebung aussehen könnte:

ein knob mit 0.125 (geringfache von 8) und einer mit 0.1246735 oder so.

da aber bei einer einfachen division wohl n hochsensibles messgerät ranmüsste, vielleicht das ganze mehere dutzend mal hintereineander multipliziert und gleich wieder kehrwertdividiert uswusf. - käme ja hinten keine ohrexplodierungen sachen raus.

wär das n weg?
bitte vor jeder frage erstmal überprüfen, ob das kapitel "mein erster synth" S. 76 im hnadbuch, schon gelesen wurde.
Benutzeravatar
herw
moderator
Beiträge: 3123
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Beitrag von herw »

helmsklamm hat geschrieben:also ich überleg grad wie ne testumgebung aussehen könnte:

ein knob mit 0.125 (geringfache von 8 ) und einer mit 0.1246735 oder so.

da aber bei einer einfachen division wohl n hochsensibles messgerät ranmüsste, vielleicht das ganze mehere dutzend mal hintereineander multipliziert und gleich wieder kehrwertdividiert uswusf. - käme ja hinten keine ohrexplodierungen sachen raus.

wär das n weg?
Benutzeravatar
herw
moderator
Beiträge: 3123
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Beitrag von herw »

herw hat geschrieben:
helmsklamm hat geschrieben:also ich überleg grad wie ne testumgebung aussehen könnte:

ein knob mit 0.125 (geringfache von 8 ) und einer mit 0.1246735 oder so.

da aber bei einer einfachen division wohl n hochsensibles messgerät ranmüsste, vielleicht das ganze mehere dutzend mal hintereineander multipliziert und gleich wieder kehrwertdividiert uswusf. - käme ja hinten keine ohrexplodierungen sachen raus.

wär das n weg?
Ich habe einfach einen Sägezahnoszillator mit 1000( !) Stimmen laufen gelassen und eine Division durch 8 bzw. 7,23457 durchgeführt.
Bild
Achtung den Level-Regler auf -60 stellen!!!
Der Unterschied ist minimal, wenn man überhaupt den Messergebnissen von Reaktor glauben darf.
Das ist eher eine Frage, die die Programmierer von Reaktor und Entwickler von Computern beantworten können.

ciao herw
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
helmsklamm
synth gott
Beiträge: 1011
Registriert: 10. Mai 2006, 16:21
Wohnort: 030

Beitrag von helmsklamm »

hm, hätt ich nich gedacht.

aber schön zu wissen, das man darauf nich och noch achten muss, sondern beqeume stepsizes wählen kann.
bitte vor jeder frage erstmal überprüfen, ob das kapitel "mein erster synth" S. 76 im hnadbuch, schon gelesen wurde.
Benutzeravatar
KlangRaum
synth guru
Beiträge: 647
Registriert: 1. August 2006, 12:55

Beitrag von KlangRaum »

wenn man (...auf einer CPU...) dediziert mit (schneller) integerarithmetik arbeitet, lassen sich unter gewissen umständen bestimmte rechenoperationen sogar in eine noch schnellere binärarithmetik überführen.

simples beispiel: statt mit float oder integer eine multiplikation mit 2 durchzuführen, lässt sich das selbe in integer mit einer bitweisen verschiebung erreichen - das selbe ginge mit der 16 (2^4).. ähnliches gilt für die division.

die frage ist nur, ob es an dieser stelle 1.) möglich ist so zu arbeiten -sprich: eventueller aufwand zur konvertierung etc und ob sich 2.) wesentliche operationen auf dieser art überhaupt durchführen lassen, also ob ein bestimmter vorgang überhaupt auf diese vorgehensweise abgebildet werden kann.

ich denke mal, das man an dieser stelle CORE ausreizen kann... falls NI es auch konsequenterweise ähnlich umgesetzt hat. solange es um steuernde logik und nicht um audiobearbeitung handelt, kann man mit solchen tricks bei komplexen schaltungen bestimmt einige prozentpunkte an cpuleistung sparen

leider ist die lastanzeige bei reaktor eher mal ein schätzeisen ;) .......
helmsklamm
synth gott
Beiträge: 1011
Registriert: 10. Mai 2006, 16:21
Wohnort: 030

Beitrag von helmsklamm »

puh, kannst du das mal im langsamen debug-modus wiederholen?
bitte vor jeder frage erstmal überprüfen, ob das kapitel "mein erster synth" S. 76 im hnadbuch, schon gelesen wurde.
Benutzeravatar
KlangRaum
synth guru
Beiträge: 647
Registriert: 1. August 2006, 12:55

Beitrag von KlangRaum »

meint: es gibt viele *rechenformeln* die man zum teil durch relativ einfache wie schnelle anweisungen ersetzen kann. das geht von float runter zu integer... von integer runter zu binär. float ist aufwendig und benötigt (auf der cpu-ebene) mehr zeit wie integer. einige dinge sind mit direkter binärarithmetik noch schneller.

integermultiplikation/division mit/durch 2,4,8,16... ist so ein fall.
wenn du dir ne binäre wertetabelle anschaust, siehst du sofort, das man hier einfach die bits schieben kann

00000100 = 4 ....einmal nach links schieben = multiplikation mit 2
00001000 = 8 ....einmal nach links schieben = multiplikation mit 2
00010000 = 16 ......... einmal nach rechts schieben = division mit 2
00001000 = 8 .......

das ist jetzt nur ein beispiel

auf der primaryebene von reaktor ist das sicher nicht so direkt umsetzbar (arbeitet wohl generell mit float), aber mit core lässt sich einiges rausholen. das kommt zwar bei einfachen aufgaben nicht so zum tragen wie bei sachen, die in ihrer logik komplett zerlegt wurden und auch nach binärer funktionsweise arbeiten. sortier- & suchalgorithmen sind ein gutes beispiel dafür.... im nächsten schritt lassen sich damit tabellen aufbauen, die zb kennlinien und funktionen abbilden

du kannst zb tabellenzugriffe für sequencer, wavetables oder einfach funktionen via read/write komplett mit integer machen - float ist unsinnig, wenn du nicht interpolieren musst. also ist die überlegung immer, ob bei der sache float benötigt wird... btw welche genaugkeit benötigt wird

wie wird ein wert interpretiert? welche quantisierung wird benötigt?

letztendlich ist es eine frage der interpretation, ob ich mit einem floatbereich von 0.0001 bis 1.0000 arbeite und überall zeitraubende float-arithmetik einsetze oder das ganze auf integer abbilde, mit 0-10000 arbeite und ganz zum schluss einmal eine skalierung vornehme.
oder: wenn ich im bereich von 0-100 nur 2 kommastellen brauche, kann ich das selbe auch in den bereich von 0 bis 10000 verlagern.....
integer-modulo ist auch so ein ding....
ich will jetzt mal nicht zu tief da einsteigen, es würde den thread sprengen. wiegesagt... es ist eine frage der entsprechenden modellierung ob und was man damit umsetzt. bei reaktor ist da auch eine grenze gesetzt- durch art und funktion der jeweis vorhandenen core-primitives. ich geh jetzt auch mal davon aus, das reaktor-core im integermode auch wirklich mit echtem integer arbeitet und solche arbeitsweisen mit entsprechend besserer perfomance ausführt ;)
Benutzeravatar
herw
moderator
Beiträge: 3123
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Beitrag von herw »

KlangRaum hat geschrieben:meint: es gibt viele *rechenformeln* die man zum teil durch relativ einfache wie schnelle anweisungen ersetzen kann. das geht von float runter zu integer... von integer runter zu binär. float ist aufwendig und benötigt (auf der cpu-ebene) mehr zeit wie integer. einige dinge sind mit direkter binärarithmetik noch schneller.
...
genau das meinte ich mit meiner Bemerkung auf Seite 3 (erste post) dieses Threads ;-) du hast es aber viel schöner und ausführlicher dargelegt.

ciao herw
Antworten