I need fastest possible way to multiply and divide big arrays of data.
I've read this (wrote by Ben Voigt here):
.NET doesn't use MMX or SSE or AVX, as of the current version
(...)
modern C++ compilers not only allow SIMD usage, but can auto-vectorize ordinary-looking code into SIMD instructions
.
I think I need:
SSE support with vector operations (for multiplying 4 floats at once)
multithreading support (solution/library that will not collide somehow with C# threading)
Is there any library/dll that i can use?
Edit: any alternatives for Octave? I neeed only 2 operations: divide, multiply. If I understood correctly what is Octave and how it works - I will need to parse output... It cant be fast...
According to "what have you tried" and "why you don't want to use simple for
":
I need this for neural network training. Network (now) has more than 50 inputs, many neurons (each 50+ weights). Learning data contains 100.000+ rows, 50+ fields each. Each neuron input needs few (at least 5) multiply operations.
I have no idea how many learning epochs i need, but i tried to benchmark only multiply operations and i got result: about 16 secs per epoch on my Intel Core Duo T2500 2.0GHz CPU.
Of course i can buy faster computer, but new computer is worth more than few hours of my work, so I hope it looks logical...