How can I access math coprocessor from C# code? I would like to make some calculations on integers as fast as it’s possible. I know it’s possible under C++ compliers to use Assembler code inside it, but what about .Net?
Share
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
The JIT compiler knows about the math coprocessor and will use it. What you really want is to use the SIMD engine, not the math coprocessor. This was part of the promise of JIT-compilation, that the runtime could pick the fastest hardware acceleration available on each computer, but I don’t think .NET actually does that, at least in v4.
Or are you using the term “math coprocessor” to mean something other than the x87 FPU? There are some FPGA boards marketed as accelerator/coprocessor systems. If that’s what you mean, you’ll need to consult the programming manual that comes with the particular product. There are no special CPU instructions for accessing those, inline assembler wouldn’t be helpful in this case.
For example, the GPU is even faster at math on large datasets than the CPU’s SIMD engine, and you can access that from .NET using DirectX Compute Shaders (or p/invoking OpenCL), no assembler required.