Informazioni sul servizio
TradottoSviluppo codice ad alte prestazioni in Chapel, un linguaggio progettato specificamente per il calcolo scientifico produttivo su larga scala. Se il tuo modello, risolutore o pipeline di elaborazione dati è bloccato su un core, sposterò il calcolo su tutti i core disponibili e poi su un intero cluster. Il mio compito principale è trasformare codice numerico ordinario in un programma che mantiene migliaia di thread occupati senza costringerti a riscrivere tutto a mano. Utilizzo cicli paralleli forall, domini distribuiti e il modello locale per distribuire array tra i nodi, e dove l'algoritmo richiede un controllo più fine applico il parallelismo di compiti attraverso begin, cobegin e variabili di sincronizzazione. I lavori tipici che svolgo: portare kernel sequenziali C o Fortran su Chapel, parallelizzare operazioni su template e matrici, costruire tabelle hash distribuite e traversate di grafi, e profilare perché il calcolo si ferma sul movimento dei dati piuttosto che sull'aritmetica. Misuro tutto. Prima di considerare il lavoro completato, mostro curve di scaling forte e debole in modo che tu possa vedere come si comporta il codice man mano che i core e la dimensione del problema crescono, e spiego da dove provengono i limiti. I risultati includono codice sorgente pulito e commentato, una ricetta per costruire sotto il tuo compilatore e launcher, un breve rapporto di scaling e memoria, e istruzioni per eseguire sul tuo hardware o scheduler. Ho scritto codice Chapel per metodi Monte Carlo, compiti N-body, passaggi di idrodinamica computazionale e algebra lineare sparsa di grandi dimensioni. Correttezza prima, poi velocità: aggiungo test riproducibili e controllo dei risultati rispetto a una baseline fidata prima di ottimizzare. Indica il numero di nodi, il tipo di connessione e il core che crea colli di bottiglia, e fornirò stime oneste di accelerazione e sforzo.