2010-10-25 32 views
3

Comment paralléliser mon programme F # en utilisant le jeu d'instructions SSE3? Est-ce que le compilateur F # le supporte?Instructions SSE3 en F #

+0

Pouvez-vous utiliser Mono au lieu de .Net? – Gabe

+0

Je suppose que vous pointez vers Mono.Simd. Mais je dois utiliser .NET :( – Nishanth

Répondre

3

.Net ne parle pas au matériel à ce niveau. Si vous souhaitez un contrôle explicite sur le jeu d'instructions utilisé, vous devez appeler une bibliothèque écrite dans un langage plus approprié. C/C++ vient à l'esprit.

+0

alors il n'y a pas d'équivalent de la bibliothèque Mono.Simd dans .NET? – Nishanth

+0

Non, parce que Mono.Simd repose sur les modifications apportées au compilateur JIT –

0

Probablement pas utile, mais vous pouvez jouer avec les champs internes sur un délégué pour faire appel à un code arbitraire: http://www.atrevido.net/blog/2005/01/28/Inline+X86+ASM+In+C.aspx

Voir les commentaires pour plus de mises en garde et d'autres approches. L'avantage de jouer directement avec une cible de délégués est (AFAIK) vous n'obtiendrez pas une transition managée non gérée comme si vous aviez fait GetDelegateForFunctionPointer ou d'autres approches interop. En revanche, cela signifie que vous devez le coder à la main et vous assurer que les conventions d'appel s'alignent et ainsi de suite. C'est probablement fragile, et le coût de l'appel du délégué pourrait ne pas en valoir la peine.