I was reading a question about c# code optimization and one solution was to use c++ with SSE. Is it possible to do SSE directly from a c# program?
Filip is correct. I have another, older post showing a similar, but more detailed example. I have actually run this code, and modified it myself to prove to myself that it works. I am contemplating using this technique in a project I am working and is why I am out looking to see what may be new since this is a bit old. As the author implies, you can write any function you wish in C++, compile it, then copy the bytes into your C#.
http://blogs.msdn.com/b/devinj/archive/2005/07/12/438323.aspx
I would add that Joe's CLI C++ class is a good idea as well, however, I don't think the sse compiler flag and the /clr flag are compatible on the same project. I just verified that: have to write your high perf code in a separate project to use the SSE (/arch:sse or /arch:sse2) compiler flag as /clr is incomatible. To do anything much more complex than do simple arithmetic on a few inputs, I think this is the best approach.
SIMD for .NET will be available in the near future. RyuJIT (the next-generation JIT compiler for .NET) required for this feature ATM.
You should use Microsoft.Numerics.Vectors.Vector<T>
class from Microsoft.Bcl.Simd package to take advantage of this feature. Sample code here.
Sure you can (the more important question is - why would you? Just leave it to the runtime; that's its job).
C# lets you map a delegate to a memory address. That memory address can contain raw assembly codes. You can read more on Michael Giagnocavo's blog.
Although I have not tried myself, it may be possible to use Marshal.GetDelegateForFunctionPointer as well.
Recently Microsoft has released a beta SIMD vector library (Microsoft.Bcl.Simd) for C# which requires installation of the RyuJIT CTP and works only Windows 8.
You can also just used a native SSE library and invoke it from C#. For example the Yeppp library, see this StackOverflow answer.