Matt Keeter

Results 243 comments of Matt Keeter

Yes, that's what I meant – that set of flags is compiler flags for MSVC, and `/O2` is "optimize for speed", equivalent to `-O3` on Clang / GCC. I'll take...

Oh, you could also try adding `EIGEN_NO_DEBUG` to that line, so it looks like ``` set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD /O2 /DEIGEN_NO_DEBUG") ```

Can you try running the mesh performance breakdown on each OS? On Linux, it would be something like ``` ./libfive/test/libfive-test "Mesh::render (gyroid performance breakdown)" ```

Oh, you'll want to adjust the build command to build everything, rather than just Studio, e.g. ``` "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" --build . --config Release -- -v:n -m:8 ```...

On Linux, it's in `build/libfive/test/libfive-test` (note that it's in the build directory, not the source directory). Similarly, you may need to run `make` (without any targets) to build it, if...

Oh no, Windows... I've added a post-build operation to copy the DLLs into the `build/libfive/test` directory, so `libfive-test.exe` should be able to find them (8b9afa52ef5f7c3837ceb8da9456b03029b4f369).

Does this still happen when running on the command line? I'd suggest continuing to copy DLLs from _somewhere_ in the `vcpkg` directory into `build/libfive/test` directory, until `libfive-test.exe` stops complaining. (but...

Okay, that's showing Windows being faster than Linux VM, which is expected. I notice that the shape that's showing weirdly bad performance is using `log` / `exp`, so I wonder...

Okay, looks like Linux is using AVX (8-wide), while Windows is using SSE (4-wide) float instructions. There are AVX/SSE versions of `exp` and `log` ([source](https://eigen.tuxfamily.org/dox/group__CoeffwiseMathFunctions.html)), so this makes me suspicious!...

With `/arch:AVX` and all of the `#error` hints (to see which path is actually compiled), is it using the `EIGEN_VECTORIZE_AVX` path?