Tenendo conto del bit di disabilitazione dell'esecuzione, è il modo consigliato di eseguire le istruzioni su un processore nativo da un ambiente gestito di livello elevato come VB.NET 2008 o C#. Inoltre qualcuno ha ottenuto risultati simili nell'eseguire le istruzioni GPU contro un processore grafico?Esecuzione di istruzioni CPU/GPU dal codice gestito
risposta
Ci sono alcune opzioni GPU per C#, per l'accesso diretto, senza ritornare al P/Invoke o scrivere i propri wrapper C++:
- Brahma è abbastanza interessante. Fornisce l'accesso alla GPU direttamente tramite un provider LINQ personalizzato. Il codice include alcuni esempi di metodi altamente computazionali eseguiti sulla GPU, tutti scritti in C# tramite LINQ.
- SlimDX fornisce un bel wrapper .NET a tutte le principali funzionalità di DirectX. Con shader personalizzati, puoi eseguire calcoli sulla GPU tramite DirectX. Include anche il supporto per DX11, quindi puoi usare direttamente gli shader compute (se hai l'hardware per farlo).
- È possibile accedere a CUDA tramite CUDA.NET.
- È possibile utilizzare OpenCL tramite OpenCL.NET.
Per quanto riguarda le istruzioni della CPU, questo in genere richiederebbe il passaggio al codice nativo di livello inferiore con le istruzioni dell'assemblatore. Probabilmente l'opzione più interessante completamente gestita (almeno parzialmente correlata) sarebbe quella di utilizzare Mono.Simd, che fornisce l'accesso diretto alle istruzioni SIMD nella CPU dal codice gestito quando si esegue lo stack mono.
Grazie che il collegamento Mono.Simd è fantastico – PeanutPower
Creare la libreria .dll non gestita con le istruzioni che si desidera e utilizzare P/Invoke per chiamarla.
Non è un'opzione. Dovrai P/Richiamare una funzione nella DLL che è stata generata da MASM o scritta in C/C++ non gestito, usando assembly inline o intrinseche. Oppure utilizzare il compilatore C++/CLI e generare il codice in modalità mista con #pragma gestito.
Attenzione che ora non è più possibile dipendere dal compilatore JIT che genera qualsiasi codice di piattaforma adatto al sistema operativo. Usa Progetto + Proprietà, scheda Crea, Piattaforma di destinazione per forzare l'architettura a corrispondere al tuo codice non gestito.
Guarda CUDA per codice GPU gestito.
- 1. Prestazioni di richiamo del codice non gestito dal codice gestito
- 2. Utilizzo del codice non gestito dal codice gestito
- 3. Come utilizzare il codice gestito dal codice non gestito?
- 4. durante la chiamata di codice non gestito dal codice gestito in Windows 7
- 5. Chiamata di un callback nativo dal codice gestito .NET (durante il caricamento del codice gestito tramite COM)
- 6. Assegnazione memoria non gestita gratuita dal codice gestito
- 7. Come terminare un thread gestito bloccato nel codice non gestito?
- 8. Differenza tra codice nativo e codice gestito?
- 9. Esecuzione di Maven dal codice Java in Windows?
- 10. Esegui istruzioni DB dal file
- 11. come dovrebbe essere gestito Hateoas dal frontend?
- 12. chiamata C# funzioni dal C++ non gestito
- 13. Debug del codice non gestito durante il debug del codice gestito
- 14. Chiamare una dll C++ (codice non gestito) da un servizio Windows C# (scritto nel codice gestito)
- 15. Il codice gestito dovrebbe restituire un errore o generare eccezioni al codice non gestito?
- 16. esegue il debug del codice C++ gestito e del codice C++ non gestito in una soluzione
- 17. Multi Pass - matrice bidimensionale da codice gestito a codice non gestito
- 18. stop esecuzione di codice C#
- 19. Impossibile rilevare l'eccezione nativa nel codice gestito
- 20. Codice misto (nativo, gestito): come interagisce (tecnicamente)?
- 21. Velocità di esecuzione delle istruzioni condizionali rispetto alle funzioni matematiche
- 22. Come impersonare un utente nel codice gestito?
- 23. Analisi metrica codice per codice C++ non gestito
- 24. Quali sono i modi per generare MSIL dal codice non gestito
- 25. Dove trovare "Abilita il debug del codice non gestito" per poter modificare il codice mentre il sistema è in esecuzione?
- 26. Catturare il tempo di esecuzione tra 2 istruzioni Java?
- 27. codice in esecuzione se le istruzioni try hanno avuto esito positivo in python
- 28. Analizzatore di codice statico: C++ Visual Studio 2008 non gestito
- 29. Avvia l'applicazione Android dal codice
- 30. Tempo di esecuzione codice misura C (Linux)
La vera domanda è: cosa stai cercando di realizzare? È possibile utilizzare la GPU con CUDA.NET (http://www.hoopoe-cloud.com/Solutions/CUDA.NET/Default.aspx). –
L'obiettivo è eseguire calcoli personalizzati il più vicino possibile al metallo nudo, ma lanciati da un ambiente gestito. – PeanutPower
possibile duplicato di [Utilizzo della GPU con C#] (http://stackoverflow.com/questions/375011/utilizing-the-gpu-with-c-sharp) –