Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migration fails from 9.7 to 9.10 due to missing AVX Instruction Set #4343

Open
daniatic opened this issue Aug 12, 2024 · 14 comments
Open

Migration fails from 9.7 to 9.10 due to missing AVX Instruction Set #4343

daniatic opened this issue Aug 12, 2024 · 14 comments
Assignees
Labels
Bug OS: Windows Windows OS Solver: CBC/CLP Issue specific to Coin-OR CBC/CLP
Milestone

Comments

@daniatic
Copy link

What version of OR-Tools and what language are you using?
Version: 9.10
Language: any

Which solver are you using (e.g. CP-SAT, Routing Solver, GLOP, BOP, Gurobi)
GLOP | LinearSolver | CLP_LINEAR_PROGRAMMING

What operating system (Linux, Windows, ...) and version?
Windows 10

What did you do?
Steps to reproduce the behavior:

  1. Create a medium to large size model (very small models just work)
  2. Call Solver.Solve
  3. Observe it crashing

What did you expect to see
That it not crashes the whole process, but rather throws an exception like "Google OrTools requires AVX instruction set to run properly".

What did you see instead?
SEHException 0xc000001d

Make sure you include information that can help us debug (full error message, model Proto).

The exception arises from the vcmpgtpd instruction which is part of the AVX Instruction Set, which was not required on 9.7 and before.

Anything else we should know about your project / environment

@lperron
Copy link
Collaborator

lperron commented Aug 12, 2024

which solver did you use ? glop or clp ?

@daniatic
Copy link
Author

We used the default solver, so I think GLOP. Thats my instantiation statement in .net:

new Google.OrTools.LinearSolver.Solver("LinearSolver", Solver.OptimizationProblemType.CLP_LINEAR_PROGRAMMING)

@lperron
Copy link
Collaborator

lperron commented Aug 12, 2024 via email

@daniatic
Copy link
Author

Excuse me! My Fault. We're obviously using clp! Using glop it works just fine. So there is an update of clp that causes that issue? Nonetheless, the failing instruction comes directly from google-ortools-native:
image

@lperron
Copy link
Collaborator

lperron commented Aug 12, 2024 via email

@daniatic
Copy link
Author

Thats very odd. I can just in place replace the google-ortools-native.dll between 9.7 and 9.10 and with 9.7 it works and with 9.10 it fails...

@daniatic
Copy link
Author

I tried to tackle down the origin of the call from google-ortools-native directly, but I was unable to build google-ortools on my machine, due to duplicate symbol error from Mutex. If I only had the symbol files I could investigate where the error comes from. @lperron could you provide the symbol files directly for windows and 9.10?

@Mizux Mizux self-assigned this Aug 13, 2024
@Mizux Mizux added Bug OS: Windows Windows OS Solver: CBC/CLP Issue specific to Coin-OR CBC/CLP labels Aug 13, 2024
@Mizux Mizux added this to the v9.11 milestone Aug 13, 2024
@Mizux
Copy link
Collaborator

Mizux commented Aug 13, 2024

@daniatic I can create a 9.11 pre-release, windows only, package if you want.
Which language did you want C#/nuget, Java/Maven or Python/Wheel ?

@daniatic
Copy link
Author

@Mizux that would be great. I need c# nuget.

@Mizux
Copy link
Collaborator

Mizux commented Aug 14, 2024

Here a Windows only or-tools v9.11 RC nupkg...
export.zip

note: In your csproj simply add a relative path so the csproj can found it

Project.csproj:

<Project Sdk="Microsoft.NET.Sdk">
...
  <!-- Dependencies -->
  <PropertyGroup>
     <RestoreSources>path_to_find_it;$(RestoreSources);https://api.nuget.org/v3/index.json</RestoreSources>
  </PropertyGroup>

@daniatic
Copy link
Author

I just unpacked the NuGet packages, but I couldn't find the PDB symbol files for the native DLL, which I need to trace the origin of the exception.

Or did you want me to try the latest version to see if the exception still occurs?

@lperron
Copy link
Collaborator

lperron commented Aug 14, 2024 via email

@daniatic
Copy link
Author

Unfortunately we just updated the virtual machine so that it exposes the AVX instruction set, so I'm no longer able to test it. I asked my IT if we still have machines that do not expose it or if they could create me one instance, so that I can test it. I'll keep you updated.

@daniatic
Copy link
Author

My IT still had one machine where I tried it with the provided 9.11 Version but error still persists. Now we'll also update that machine, so will not be able to test any further. If you want to look into it further it should be possible by starting up a windows virtual machine with qemu and leaving the default cpu as is: https://www.qemu.org/docs/master/system/i386/cpu.html#default-x86-cpu-models

Thank you for your support.

@Mizux Mizux modified the milestones: v9.11, v10.0 Aug 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug OS: Windows Windows OS Solver: CBC/CLP Issue specific to Coin-OR CBC/CLP
Projects
None yet
Development

No branches or pull requests

3 participants