Unless of course you have dual channel memory, as this would allow double the memory throughput! (supposedly)
Have you tried designing a "job" assignment thread setup.
EG:
Main core (or a new core designated as "the boss") assigns "chunks" of data as individual jobs. Threads can request a job and take the chunk of memory associated. The thread is then free to perform calculations on that job and return the info to the boss thread.
This would allow you to spawn multiple threads processing on your mathmatical problem.
As everyone else has said, you cant just expect a speed increase by moving an algorythm of some sort to a seperate thread. This is not logical and is not what threading is intended for. If however you wanted to run these mathmatical problems alongside say a graphical user interface or visual display, then threading is going to sky rocket in terms of performance.
Naturally you can expect a speed decrease as the system has to do a whole lot more. I wouldnt have thought such a drastic speed decrease though.
Have you tried designing a "job" assignment thread setup.
EG:
Main core (or a new core designated as "the boss") assigns "chunks" of data as individual jobs. Threads can request a job and take the chunk of memory associated. The thread is then free to perform calculations on that job and return the info to the boss thread.
This would allow you to spawn multiple threads processing on your mathmatical problem.
As everyone else has said, you cant just expect a speed increase by moving an algorythm of some sort to a seperate thread. This is not logical and is not what threading is intended for. If however you wanted to run these mathmatical problems alongside say a graphical user interface or visual display, then threading is going to sky rocket in terms of performance.
Naturally you can expect a speed decrease as the system has to do a whole lot more. I wouldnt have thought such a drastic speed decrease though.