2010-10-25 29 views
3

如何使用SSE3指令集並行化我的F#程序? F#編譯器是否支持它?F#中的SSE3指令

+0

你可以用Mono代替.Net嗎? – Gabe 2010-10-25 04:59:09

+0

我想你是指向Mono.Simd。但是我已經使用.NET :( – Nishanth 2010-10-25 10:35:28

回答

3

.Net不會與該級別的硬件進行通信。如果你想明確控制所使用的指令集,你需要調用一個用更合適的語言編寫的庫。想到C/C++。

+0

,所以沒有相應的.NET中的Mono.Simd庫? – Nishanth 2010-10-25 06:29:13

+0

不,因爲Mono.Simd依賴於對JIT編譯器 – 2010-10-25 08:54:35

0

可能沒有必要,但你可以在一個委託的內部領域發揮使其調用任意代碼:http://www.atrevido.net/blog/2005/01/28/Inline+X86+ASM+In+C.aspx

請參閱評論以獲取更多注意事項和其他方法。直接使用代理目標的好處是(AFAIK),您不會像執行GetDelegateForFunctionPointer或其他互操作方法那樣獲得託管非託管轉換。

缺點是,這意味着你必須手工編寫代碼並確保調用約定排隊等等。這可能是脆弱的,而委託調用開銷可能使它不值得。