Ho alcuni nomi di funzioni che sono assegnati ad alcuni nodi. Devo decidere quali funzioni spostare su altri nodi per aumentare la velocità.
Perché devo spostare le funzioni su altri nodi? Se le funzioni di comunicazione si trovano sugli stessi nodi, richiedono meno tempo rispetto a quando le funzioni di comunicazione si trovano su nodi diversi. Una funzione potrebbe comunicare con diverse funzioni (tutte potrebbero essere su nodi diversi). La domanda è su quale nodo devo spostarlo, per massimizzare le prestazioni globali.
Ho bisogno di trovare una soluzione ottimale a livello globale usando la programmazione dinamica.
Ho le seguenti informazioni
-
Il valore intero della quantità di dati trasferiti tra le funzioni
-
La quantità di tempo necessaria per trasferire i dati tra i nodi. Inizialmente tutte le funzioni sono state assegnate ad alcuni nodi.
Qualcuno può aiutarmi a mappare questo problema all'algoritmo di schedulazione della catena di montaggio (programmazione dinamica) o creare qualche altra soluzione di programmazione dinamica a questo problema?
La metrica complessa è il tempo di esecuzione dell'intero programma. Il tempo di esecuzione indipendente di una funzione è calcolato da qualsiasi API temporizzatore (l'abbiamo già). Il tempo di esecuzione effettivo della sua (funzione) sarebbe uguale al tempo di esecuzione indipendente + il tempo di esecuzione di tutte le funzioni che producono dati consumati da questa funzione + il tempo di comunicazione tra questa funzione e altre funzioni sullo stesso nodo + il tempo di comunicazione tra questo funzione e funzioni su altri nodi. Il tempo di esecuzione del programma sarebbe quindi la somma del tempo di esecuzione di tutte le funzioni del programma.
Devo minimizzare il tempo di esecuzione del programma che è la somma del tempo di esecuzione di tutte le funzioni. Ogni tempo di esecuzione delle funzioni è la somma del suo tempo (precalcolato) e la somma di tutte le funzioni che verranno eseguite prima di esso e la sua somma con il suo tempo trascorso a comunicare con altre funzioni (nodi uguali o diversi).