thliebig / openEMS

openEMS is a free and open-source electromagnetic field solver using the EC-FDTD method.
http://openEMS.de
GNU General Public License v3.0
413 stars 146 forks source link

Use SIMD #94

Closed srogatch closed 1 year ago

thliebig commented 1 year ago

May I ask what the intention of this PR is? Why did you add SIMD to the non-SIMD, non-multithreading and non-compressed engine? Did you compare your approach to the already SIMD enabled engine_sse and higher? Additionally I think that this engine does not use aligned memory (not 100% sure)?

regards Thorsten

srogatch commented 1 year ago

@thliebig I didn't have the time to investigate all the nuances like compressed, multi-threaded, and MPI engines in your code. I didn't add the auto-vectorizer markup to the SSE engine because it's worthless: already vectorized code doesn't get further auto-vectorized. You can use the same pattern to add AVX(512) capabilities to the other engines you have. Your project didn't build successfully, so I couldn't test the performance or compiler correctness of my changes. We need a way to build your code, either a set of exact commands to use for installing all the dependencies or a docker image or a remote server (as you promised) where the build environment is configured. And you need to upgrade your CMakeLists.txt to a recent version of CMake. It looks like some VTK expected artifacts are wrong in your CMake modules because they are too old.

thliebig commented 1 year ago

I agree that the build-system needs an update (especially concerning the libraries) and such.

As far as your PR goes. please do not create pull request or even commits with untested (or worse not even compile tested) code