Sto lavorando a un progetto di elaborazione dei segnali che consente l'elaborazione parallela su flussi di dati nonché input e output da e verso più endpoint.
La catena del segnale è suddivisa in "endpoint" e "nodi".
Gli endpoint possono essere dichiarati input o output e i nodi sono qualsiasi cosa in mezzo.
È possibile dichiarare che i due tipi di oggetti dipendono l'uno dall'altro, tutti i tipi possono contenere dipendenze eccetto per gli endpoint dichiarati come input.
Un esempio di catena del segnale potrebbe essere:
input1 -- + -- node1 -- + -- node3 --output1
input2 -- / \ node2 -- / \--output2
Una versione testuale:
- output1 dipende dal nodo 3
- output2 dipende dal nodo 3
- node3 dipende dai nodi 1 e amp; 2 (riassunto) I nodi
- 1 e 2 dipendono dagli ingressi 1 e amp; 2 (riassunto)
I nodi / endpoint attualmente contengono un puntatore agli oggetti da cui dipendono.
Sto cercando di sviluppare un algoritmo in grado di tracciare il grafico partendo dagli output e determinare l'ordine in cui i dati devono essere elaborati tenendo conto dei dati che possono essere elaborati in parallelo.
Risultato di esempio:
- leggi input1 & input2 (parallelo)
- somma input
- esegue processi sui nodi 1 & 2 (parallelo)
- sommano i risultati dei nodi 1 e amp; 2
- esegue i processi sul nodo 3
- scrivi uscite 1 & 2 (parallelo)
Non sono sicuro da dove iniziare quando si sviluppa un algoritmo per analizzarlo, o se il maniero che ho collegato i nodi è sufficiente per farlo. Attualmente è impostato come un elenco collegato singolarmente in cui ogni oggetto conosce gli oggetti precedenti
Sto lavorando in C ++.