考慮到執行禁用位從高級別管理環境(如VB.NET 2008或C#)對本機處理器執行指令的推薦方式是什麼。另外有沒有人在對圖形處理器執行GPU指令時達到類似的效果?從託管代碼執行CPU/GPU指令
9
A
回答
8
有對C#幾個GPU選項,直接訪問,而恢復到的P/Invoke或寫自己的C++包裝:
- Brahma是挺有意思的。它可以通過定製的LINQ提供程序直接訪問GPU。該代碼包含一些在GPU上運行的高度計算方法的示例,全部使用LINQ以C#編寫。
- SlimDX爲所有主要的DirectX功能提供了很好的.NET包裝。使用自定義着色器,您可以通過DirectX在GPU上進行計算。它還包括DX11支持,因此您可以直接使用計算着色器(如果有硬件的話)。
- 您可以通過CUDA.NET訪問CUDA。
- 您可以通過OpenCL.NET使用OpenCL。
至於CPU指令,這通常需要使用匯編指令降低到較低級別的本機代碼。可能最有意義的完全管理(至少部分相關)選項是使用Mono.Simd,它可以在Mono堆棧上運行時從託管代碼直接訪問CPU中的SIMD指令。
+0
Thankyou Mono.Simd鏈接是真棒 – PeanutPower 2010-01-20 17:42:15
2
使用任何您想要的指令創建非託管的.dll庫,並使用P/Invoke來調用它。
3
這不是一個選項。您必須使用內聯彙編或內聯函數在由MASM生成的或者在非託管C/C++中編寫的DLL中調用函數。或者使用C++/CLI編譯器並使用#pragma managed生成混合模式代碼。
請注意,您現在不能再依賴於JIT編譯器來生成適用於操作系統的任何平臺代碼。使用Project + Properties,Build選項卡,Platform Target強制架構匹配您的非託管代碼。
看看CUDA的受管GPU代碼。
相關問題
- 1. 從託管代碼託管CLR?
- 2. 託管代碼與非託管代碼
- 3. 如何使用託管代碼從非託管代碼?
- 4. 從非託管代碼獲取值到託管代碼
- 5. 通多 - 從託管代碼維數組非託管代碼
- 6. 從託管代碼調用非託管代碼的性能
- 7. C++ cli從非託管代碼調用託管代碼
- 8. 從託管代碼調用非託管代碼
- 9. 從非託管代碼調用託管代碼
- 10. llvm可以從託管語言執行代碼嗎?
- 11. 從非託管代碼
- 12. 從windows命令行執行Perl代碼
- 13. 託管代碼中的指針? C#
- 14. 託管代碼是指JIT還是GC?
- 15. 執行託管的VBScript現代的C#代碼
- 16. 託管Java代碼
- 17. C++託管代碼
- 18. 託管源代碼管理?
- 19. 自託管代碼管理
- 20. 託管代碼在非託管
- 21. 託管的system.timer over un託管代碼
- 22. 從python代碼執行Unix命令
- 23. 從Ruby代碼執行shell命令
- 24. 從java代碼執行CURL命令
- 25. 執行源代碼管理
- 26. 允許託管環境中的託管代碼回撥非託管代碼
- 27. 從C#託管代碼調用win32 CreateProfile()管理代碼
- 28. 如何將數據從非託管代碼推送到託管代碼?
- 29. 從非託管代碼調用託管.NET代碼的最佳方式
- 30. 將數據從非託管代碼(C)傳遞到託管代碼(C#)
真正的問題是:你想完成什麼?您可以在CUDA.NET中使用GPU(http://www.hoopoe-cloud.com/Solutions/CUDA.NET/Default.aspx)。 – 2010-01-20 17:09:49
目標是儘可能接近裸機運行自定義計算,但從託管環境啓動。 – PeanutPower 2010-01-20 17:28:58
[使用GPU與c#]可能重複(http://stackoverflow.com/questions/375011/utilizing-the-gpu-with-c-sharp) – 2012-07-26 23:26:57