I have made a special 3D engine that use only the CPU and I have a performance issue (below 10 fps for min graphics element required).
I am working on an i3-6100, having test it on an i5-6400 and got +50 fps, but now I am thinking about acquiring a xeon or xeon phi instead.
My engine is optimized for support multithreading (OpenMP), but I still wonder if taking an intel xeon/xeon phi processor will be better than continuing to upgrade the processor with the latest intel core.
Else I have no clue how intel xeon/xeon phi processor product family work, I have only knowledge into intel core series.
Hey guy !
I do not think using a Xelon processor will help for your original rendering engine. However, you have to know that creating thread is not performance wise. A way to do it is to create some thread, and feed it with tasks (That is how normal thread pool work). I do not know which OpenMP implementation you are using, but, please check if the threads are within a pool or created by each loop. If you are using C++, you can use something like `for_each(std::execution::par)` instead of OpenMP. I am pretty sure that implementation use a thread pool.
However, there is not only the threads that can help your fps go up. There is memory caching, keeping instruction hot, avoid indirection (virtual call) etc.
After, there is data structure that can help you to optimize your rendering. I remember you are trying to emulate atoms rendering. Instead of using a huge array of billions of atoms, you can partition them. That way, instead of process billion atoms, you will process only thousands or few millions atoms. Actually, I disagree with this kind of approach (simulate atoms etc) because using texture is the same, and it is performance wise, and it is perfect if you are willing to use both your graphic card and your CPU. Intel CPU are bad for MT but good for ST. Graphic card are made for.... graphics. So I can advice you to perform like 80% of your rendering on the gpu side, and 20% of partition or other on your CPU.