Closed soggyomelette closed 5 months ago
Indeed, all Docker images are built on amd64
platform.
It is interesting that for 2.7.0 the code compiled on amd64
works also on arm64
.
Seems that either FLINT (new dependency added in master branch) and/or OpenBLAS binary code (another dependency added) is incompatible between architectures.
To fix this issue, we should build multi-platform Docker images for SDPB (and its dependencies, elemental
and flint
images) on CircleCI, as described here:
https://docs.docker.com/build/building/multi-platform
https://circleci.com/blog/building-docker-images-for-multiple-os-architectures/
Current workarounds:
bootstrapcollaboration/sdpb:2.7.0
Hi @soggyomelette, I've updated sdpb:master
image, could you please confirm that it works for you?
(unfortunately I don't have a MacBook to check that by myself)
Hi @vasdommes, can confirm it works now, thanks for the fix!
The latest docker release gives the following error on Macbook M1 after running
docker run -v $PWD:/usr/local/share/sdpb bootstrapcollaboration/sdpb:master mpirun --allow-run-as-root sdpb --precision=776 --verbosity 2 -s /usr/local/share/sdpb/sdp
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested Warning: --procGranularity option is obsolete. Setting it to anything larger than 1 will make the solution take longer. This option should not be used except for testing purposes. 2024-Apr-05 12:44:01 Start SDPB SDPB version: 2.7.0-95-g24f01173 MPI processes: 8, nodes: 1 SDP directory : "/usr/local/share/sdpb/sdp" out directory : "/usr/local/share/sdpb/sdp_out"
Parameters: maxIterations = 500 maxRuntime = 9223372036854775807 checkpointInterval = 3600 maxSharedMemory = 17179869184.0 GB (18446744073709551615 bytes) findPrimalFeasible = false findDualFeasible = false detectPrimalFeasibleJump = false detectDualFeasibleJump = false precision(actual) = 776(832) dualityGapThreshold = 1e-30 primalErrorThreshold = 1e-30 dualErrorThreshold = 1e-30 initialMatrixScalePrimal = 1e+20 initialMatrixScaleDual = 1e+20 feasibleCenteringParameter = 0.1 infeasibleCenteringParameter = 0.3 stepLengthReduction = 0.7 maxComplementarity = 1e+100 initialCheckpointDir = "/usr/local/share/sdpb/sdp.ck" checkpointDir = "/usr/local/share/sdpb/sdp.ck" noFinalCheckpoint = false writeSolution = x,y procGranularity = 1 verbosity = 2
Primary job terminated normally, but 1 process returned a non-zero exit code. Per user-direction, the job has been aborted.
mpirun noticed that process rank 1 with PID 0 on node aacbe7e7a17d exited on signal 4 (Illegal instruction).
However, release 2.7.0 works as expected despite the warning