Domanda

mi preparo a scrivere un pacchetto di simulazione fotonico che verrà eseguito su un cluster Linux e Windows a 128 nodi, con un client basato su Windows per la progettazione di posti di lavoro (CAD-like) e di sottoporlo a al cluster.

La maggior parte di questo è un terreno ben calcato, ma io sono curioso come C # stack fino a C ++, in termini di reale capacità elaborazione di calcoli numerici. Sono molto bene con entrambe le lingue, ma trovo l'oggetto del modello e il quadro di sostegno superiore di C # con .NET o Mono incredibilmente seducente. Tuttavia, non posso, con questa applicazione, sacrificio troppo in potenza di elaborazione per il bene di preferenza sviluppatore.

Qualcuno ha qualche esperienza in questo settore? Ci sono dei punti di riferimento duri disponibili? Mi piacerebbe pensare che il codice macchina finale sarebbe stato ottimizzato utilizzando le stesse tecniche sia che provenga da un C # o C ++ di origine, soprattutto perché che avviene tipicamente a / livello di IL pcode.

È stato utile?

Soluzione

Le tecniche di ottimizzazione impiegate da C # e C ++ nativo sono molto diversi. C # compilatori emettono IL, che è solo marginalmente ottimizzato e poi JIT'ed di codice binario quando si tratta di eseguire per la prima volta. La maggior parte del lavoro di ottimizzazione accade all'interno del compilatore JIT.

Questo ha pro e contro. JIT ha tempo di bilanci, il che limita la quantità di sforzo che può spendere per l'ottimizzazione. Ma ha anche una profonda conoscenza dell'hardware in realtà è in esecuzione, in modo che possa (in teoria) fare uso trasparente di codici operativi della CPU più recenti e la conoscenza dettagliata dei dati sulle prestazioni come ad esempio una banca dati i rischi di pipeline.

In pratica, non so quanto sia significativo il secondo è. So che almeno Mono parallelizzare automaticamente alcuni loop se si ritrova in esecuzione su una CPU con SSE (SSE2, forse?), Che può essere un grosso problema per lo scenario.

Altri suggerimenti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top