Editor di hardwareEditor di hardware
Tutti i programmi per computer, incluso OghmaNano, vengono eseguiti su hardware fisico. Esistono numerose combinazioni di hardware che possono essere presenti in un computer: alcuni computer hanno un numero elevato di core della CPU, mentre altri ne hanno solo uno. Allo stesso modo, i computer sono dotati di quantità diverse di memoria, spazio su disco rigido e schede grafiche (GPU). Per aiutare l’utente a ottenere il massimo da OghmaNano, è disponibile un editor hardware in cui l’utente può configurare il comportamento di OghmaNano su un determinato computer. È possibile accedervi tramite la finestra della scheda di simulazione (??).Tutti i programmi per computer, incluso OghmaNano, vengono eseguiti su hardware fisico. Esistono numerose combinazioni di hardware che possono essere presenti in un computer: alcuni computer hanno un numero elevato di core della CPU, mentre altri ne hanno solo uno. Allo stesso modo, i computer sono dotati di quantità diverse di memoria, spazio su disco rigido e schede grafiche (GPU). Per aiutare l’utente a ottenere il massimo da OghmaNano, è disponibile un editor hardware in cui l’utente può configurare il comportamento di OghmaNano su un determinato computer. È possibile accedervi tramite la finestra della scheda di simulazione (??).
Se si fa clic su questo elemento, si aprirà la finestra dell’editor hardware (??).Se si fa clic su questo elemento, si aprirà la finestra dell’editor hardware (??).
La finestra delle impostazioni hardware è composta da diverse schede che consentono all’utente di modificare la configurazione e di eseguire test di performance sul dispositivo.La finestra delle impostazioni hardware è composta da diverse schede che consentono all’utente di modificare la configurazione e di eseguire test di performance sul dispositivo.
Scheda di configurazione CPU/GPUScheda di configurazione CPU/GPU
Questa scheda viene utilizzata per configurare il modo in cui OghmaNano interagisce con la GPU e la CPU, come descritto nella tabella seguente. Come spiegato in dettaglio in altre sezioni di questo manuale, OghmaNano è composto da due parti: oghma_core.exe, che rappresenta il motore di calcolo, e oghma_gui.exe, che rappresenta l’interfaccia utente grafica. In questa sezione è possibile regolare finemente il comportamento di entrambe le parti del modello.Questa scheda viene utilizzata per configurare il modo in cui OghmaNano interagisce con la GPU e la CPU, come descritto nella tabella seguente. Come spiegato in dettaglio in altre sezioni di questo manuale, OghmaNano è composto da due parti: oghma_core.exe, che rappresenta il motore di calcolo, e oghma_gui.exe, che rappresenta l’interfaccia utente grafica. In questa sezione è possibile regolare finemente il comportamento di entrambe le parti del modello.
- Numero di thread utilizzati dal backend: questo è il numero massimo di thread che OghmaNano oghma_core.exe può utilizzare. Questo valore determina: il numero massimo di adattamenti simultanei che possono essere eseguiti; il numero massimo di simulazioni di ottimizzazione che possono essere eseguite contemporaneamente; il numero massimo di thread utilizzati per le simulazioni FDTD; il numero massimo di file della cache DoS che possono essere generati contemporaneamente; il numero di punti nel dominio della frequenza che possono essere elaborati contemporaneamente.Numero di thread utilizzati dal backend: questo è il numero massimo di thread che OghmaNano oghma_core.exe può utilizzare. Questo valore determina: il numero massimo di adattamenti simultanei che possono essere eseguiti; il numero massimo di simulazioni di ottimizzazione che possono essere eseguite contemporaneamente; il numero massimo di thread utilizzati per le simulazioni FDTD; il numero massimo di file della cache DoS che possono essere generati contemporaneamente; il numero di punti nel dominio della frequenza che possono essere elaborati contemporaneamente.
- Numero massimo di istanze del core: questo parametro definisce il numero massimo di istanze di oghma_core.exe che possono essere avviate tramite l’interfaccia grafica. Se si sta eseguendo una scansione dei parametri, questo valore controllerà il numero massimo di simulazioni simultanee che possono essere eseguite contemporaneamente. Se il valore del parametro «Numero di thread utilizzati dal backend» è impostato su 4 e si sta eseguendo una simulazione FDTD, impostando il parametro «Numero massimo di istanze del core» su 8, l’interfaccia grafica avvierà 8 istanze di oghma_core.exe, ciascuna delle quali utilizzerà 4 thread, richiedendo quindi 32 core della CPU.Numero massimo di istanze del core: questo parametro definisce il numero massimo di istanze di oghma_core.exe che possono essere avviate tramite l’interfaccia grafica. Se si sta eseguendo una scansione dei parametri, questo valore controllerà il numero massimo di simulazioni simultanee che possono essere eseguite contemporaneamente. Se il valore del parametro «Numero di thread utilizzati dal backend» è impostato su 4 e si sta eseguendo una simulazione FDTD, impostando il parametro «Numero massimo di istanze del core» su 8, l’interfaccia grafica avvierà 8 istanze di oghma_core.exe, ciascuna delle quali utilizzerà 4 thread, richiedendo quindi 32 core della CPU.
- Tempo massimo di esecuzione: a volte, quando si esegue OghmaNano su un supercomputer in modalità autonoma, il programma può interrompersi, probabilmente a causa di un errore di input/output o di un errore di rete. Questa opzione può essere utilizzata per impostare la durata massima di una singola simulazione. Per singola simulazione intendo una singola curva JV, una singola simulazione nel dominio del tempo o una singola simulazione nel dominio della frequenza, ma non un intero processo di ottimizzazione che prevede l’esecuzione di migliaia di simulazioni individuali. Pertanto, con un valore di 2000 secondi, il risolutore si interromperà se, ad esempio, una singola simulazione JV richiede più di 2000 secondi. In realtà, ogni singola simulazione dovrebbe richiedere solo pochi secondi, quindi questa opzione funge da limite massimo di sicurezza nel caso in cui qualcosa vada storto.Tempo massimo di esecuzione: a volte, quando si esegue OghmaNano su un supercomputer in modalità autonoma, il programma può interrompersi, probabilmente a causa di un errore di input/output o di un errore di rete. Questa opzione può essere utilizzata per impostare la durata massima di una singola simulazione. Per singola simulazione intendo una singola curva JV, una singola simulazione nel dominio del tempo o una singola simulazione nel dominio della frequenza, ma non un intero processo di ottimizzazione che prevede l’esecuzione di migliaia di simulazioni individuali. Pertanto, con un valore di 2000 secondi, il risolutore si interromperà se, ad esempio, una singola simulazione JV richiede più di 2000 secondi. In realtà, ogni singola simulazione dovrebbe richiedere solo pochi secondi, quindi questa opzione funge da limite massimo di sicurezza nel caso in cui qualcosa vada storto.
- Tempo massimo di esecuzione: questo è il tempo massimo per il quale il programma oghma_core.exe può rimanere attivo in memoria. Se una simulazione o un processo di ottimizzazione richiede più tempo, verrà interrotto. Questo rappresenta una misura di sicurezza per evitare che le simulazioni vengano eseguite indefinitamente. Il valore predefinito è di 4 giorni.Tempo massimo di esecuzione: questo è il tempo massimo per il quale il programma oghma_core.exe può rimanere attivo in memoria. Se una simulazione o un processo di ottimizzazione richiede più tempo, verrà interrotto. Questo rappresenta una misura di sicurezza per evitare che le simulazioni vengano eseguite indefinitamente. Il valore predefinito è di 4 giorni.
- Processori basati su acciaio: a volte, quando si esegue OghmaNano su un PC condiviso, si avvia una simulazione mentre un altro utente sta utilizzando un numero significativo di core. Dopo un po', le simulazioni dell'altro utente terminano, lasciando il computer con processori inattivi. Se questa opzione è impostata su «True», OghmaNano monitorerà il numero di processori liberi e, se ne saranno disponibili di più, li utilizzerà.Processori basati su acciaio: a volte, quando si esegue OghmaNano su un PC condiviso, si avvia una simulazione mentre un altro utente sta utilizzando un numero significativo di core. Dopo un po', le simulazioni dell'altro utente terminano, lasciando il computer con processori inattivi. Se questa opzione è impostata su «True», OghmaNano monitorerà il numero di processori liberi e, se ne saranno disponibili di più, li utilizzerà.
- Numero minimo di CPU: da utilizzare insieme all’opzione precedente «CPU Steel» per impostare il numero minimo di CPU che verranno utilizzate.Numero minimo di CPU: da utilizzare insieme all’opzione precedente «CPU Steel» per impostare il numero minimo di CPU che verranno utilizzate.
- Salva i dati DoS sul disco: OghmaNano memorizza le tabelle di ricerca sul disco per accelerare le simulazioni; se questa opzione è impostata su «falso», queste tabelle non verranno salvate.Salva i dati DoS sul disco: OghmaNano memorizza le tabelle di ricerca sul disco per accelerare le simulazioni; se questa opzione è impostata su «falso», queste tabelle non verranno salvate.
- Accelerazione GPU tramite OpenCL: questa opzione consente di attivare o disattivare l’accelerazione GPU, che viene utilizzata principalmente durante le simulazioni FDTD.Accelerazione GPU tramite OpenCL: questa opzione consente di attivare o disattivare l’accelerazione GPU, che viene utilizzata principalmente durante le simulazioni FDTD.
- Nome della GPU: consente di selezionare la GPU da utilizzare.Nome della GPU: consente di selezionare la GPU da utilizzare.
Cache di NewtonCache di Newton
Quando si eseguono simulazioni con un numero elevato di equazioni differenziali ordinarie (ODE), come nel caso di dispositivi unidimensionali con un gran numero di stati di trappola e di punti spaziali, oppure quando si eseguono simulazioni di transistor organici a effetto di campo bidimensionali (OFET), ogni passo di tensione può richiedere un tempo considerevole per essere calcolato. Questo perché il risolutore deve risolvere ogni passo di tensione utilizzando il metodo di Newton fino a quando non raggiunge la convergenza. Per ogni passo del risolutore, è necessario calcolare la matrice Jacobiana, invertirla, moltiplicarla per i residui e calcolare gli aggiornamenti di tutte le variabili del risolutore. Questo può richiedere un tempo significativo per ogni passo (2000 ms). Un modo per evitare questo problema è memorizzare i risultati precedentemente calcolati su disco e, quando l'utente richiede al risolutore di calcolare un problema già risolto, recuperare il risultato invece di ricalcolarlo. Questo è molto utile nella progettazione di OLED, in cui si cerca di ottimizzare la struttura ottica del dispositivo, lasciando inalterata la struttura elettrica. È possibile eseguire nuove simulazioni ottiche utilizzando soluzioni elettriche già precalcolate. Le opzioni di configurazione sono visualizzate nella tabella seguente.Quando si eseguono simulazioni con un numero elevato di equazioni differenziali ordinarie (ODE), come nel caso di dispositivi unidimensionali con un gran numero di stati di trappola e di punti spaziali, oppure quando si eseguono simulazioni di transistor organici a effetto di campo bidimensionali (OFET), ogni passo di tensione può richiedere un tempo considerevole per essere calcolato. Questo perché il risolutore deve risolvere ogni passo di tensione utilizzando il metodo di Newton fino a quando non raggiunge la convergenza. Per ogni passo del risolutore, è necessario calcolare la matrice Jacobiana, invertirla, moltiplicarla per i residui e calcolare gli aggiornamenti di tutte le variabili del risolutore. Questo può richiedere un tempo significativo per ogni passo (2000 ms). Un modo per evitare questo problema è memorizzare i risultati precedentemente calcolati su disco e, quando l'utente richiede al risolutore di calcolare un problema già risolto, recuperare il risultato invece di ricalcolarlo. Questo è molto utile nella progettazione di OLED, in cui si cerca di ottimizzare la struttura ottica del dispositivo, lasciando inalterata la struttura elettrica. È possibile eseguire nuove simulazioni ottiche utilizzando soluzioni elettriche già precalcolate. Le opzioni di configurazione sono visualizzate nella tabella seguente.
L’utilizzo della cache di Newton comporta un certo costo in termini di risorse, pertanto la consiglierei solo quando la risoluzione del problema elettrico risulta particolarmente lenta. Dal punto di vista tecnico, la cache di Newton funziona calcolando la somma MD5 dei livelli di Fermi e dei potenziali per generare un hash del problema elettrico. Questo hash viene quindi confrontato con i dati presenti sul disco. Se viene trovata una soluzione precalcolata, i livelli di Fermi/potenziali vengono aggiornati con i valori presenti sul disco. La cache viene memorizzata in «oghma_local cache», e ogni soluzione precalcolata viene salvata come un nuovo file binario. Ogni esecuzione della simulazione genera un file di indice in cui vengono memorizzate tutte le somme MD5 relative a tale simulazione. Una volta che la cache è piena, OghmaNano elimina i risultati della simulazione in blocchi, in base ai file di indice.L’utilizzo della cache di Newton comporta un certo costo in termini di risorse, pertanto la consiglierei solo quando la risoluzione del problema elettrico risulta particolarmente lenta. Dal punto di vista tecnico, la cache di Newton funziona calcolando la somma MD5 dei livelli di Fermi e dei potenziali per generare un hash del problema elettrico. Questo hash viene quindi confrontato con i dati presenti sul disco. Se viene trovata una soluzione precalcolata, i livelli di Fermi/potenziali vengono aggiornati con i valori presenti sul disco. La cache viene memorizzata in «oghma_local cache», e ogni soluzione precalcolata viene salvata come un nuovo file binario. Ogni esecuzione della simulazione genera un file di indice in cui vengono memorizzate tutte le somme MD5 relative a tale simulazione. Una volta che la cache è piena, OghmaNano elimina i risultati della simulazione in blocchi, in base ai file di indice.
- Dimensione massima della cache: imposta la dimensione massima della cache in megabyte. Consiglio di impostarla a circa 1 GB.Dimensione massima della cache: imposta la dimensione massima della cache in megabyte. Consiglio di impostarla a circa 1 GB.
- Spazio libero minimo sul disco: definisce la quantità minima di spazio su disco necessaria per utilizzare la cache. Questa opzione è progettata per evitare che la cache riempia l'intero disco; consiglierei di impostarla su circa 5 GB.Spazio libero minimo sul disco: definisce la quantità minima di spazio su disco necessaria per utilizzare la cache. Questa opzione è progettata per evitare che la cache riempia l'intero disco; consiglierei di impostarla su circa 5 GB.
- Numero di simulazioni da conservare: questo parametro stabilirà il numero massimo di esecuzioni di simulazione da salvare. Consiglio di impostarlo tra 20 e 100.Numero di simulazioni da conservare: questo parametro stabilirà il numero massimo di esecuzioni di simulazione da salvare. Consiglio di impostarlo tra 20 e 100.
- Abilita la cache: questa opzione consente di attivare o disattivare la cache di Newton. L’opzione predefinita e consigliata è «False» (disattivata).Abilita la cache: questa opzione consente di attivare o disattivare la cache di Newton. L’opzione predefinita e consigliata è «False» (disattivata).
Test comparativo dell’hardwareTest comparativo dell’hardware
Nell’angolo in alto a sinistra della finestra delle impostazioni hardware (??) è presente un pulsante denominato «Test delle prestazioni hardware». Se si fa clic su questo pulsante, OghmaNano eseguirà un test delle prestazioni dell’hardware; i risultati di tale test possono essere visualizzati in (??). Questo test valuta la capacità della CPU di calcolare funzioni trigonometriche (seno, esponenziale) e di allocare/deallocare memoria in blocchi. Mostra il tempo necessario per eseguire alcune migliaia di operazioni, oltre a un valore R (chiamato anche Roderick). Questo valore è definito come R = tempo necessario per eseguire il calcolo sul proprio PC / tempo necessario per eseguire il calcolo sul mio PC. Pertanto, valori inferiori indicano che il proprio PC è più veloce del mio. Il mio PC è un Intel(R) Core(TM) i7-4900MQ con una frequenza di 2,80 GHz, montato su un laptop Lenovo ThinkPad del 2017. Quindi, la maggior parte dei computer moderni dovrebbe essere più veloce. Se si riscontra una buona performance della CPU, ma le simulazioni vengono eseguite più lentamente rispetto ai miei video su YouTube, ciò è quasi certamente dovuto a una scarsa velocità di I/O, causata da software antivirus, dall’archiviazione delle simulazioni su OneDrive, dall’utilizzo di unità di rete o dall’utilizzo di dispositivi di archiviazione USB lenti, ecc.Nell’angolo in alto a sinistra della finestra delle impostazioni hardware (??) è presente un pulsante denominato «Test delle prestazioni hardware». Se si fa clic su questo pulsante, OghmaNano eseguirà un test delle prestazioni dell’hardware; i risultati di tale test possono essere visualizzati in (??). Questo test valuta la capacità della CPU di calcolare funzioni trigonometriche (seno, esponenziale) e di allocare/deallocare memoria in blocchi. Mostra il tempo necessario per eseguire alcune migliaia di operazioni, oltre a un valore R (chiamato anche Roderick). Questo valore è definito come R = tempo necessario per eseguire il calcolo sul proprio PC / tempo necessario per eseguire il calcolo sul mio PC. Pertanto, valori inferiori indicano che il proprio PC è più veloce del mio. Il mio PC è un Intel(R) Core(TM) i7-4900MQ con una frequenza di 2,80 GHz, montato su un laptop Lenovo ThinkPad del 2017. Quindi, la maggior parte dei computer moderni dovrebbe essere più veloce. Se si riscontra una buona performance della CPU, ma le simulazioni vengono eseguite più lentamente rispetto ai miei video su YouTube, ciò è quasi certamente dovuto a una scarsa velocità di I/O, causata da software antivirus, dall’archiviazione delle simulazioni su OneDrive, dall’utilizzo di unità di rete o dall’utilizzo di dispositivi di archiviazione USB lenti, ecc.