Невозможно загрузить DLL 'Microsoft.Quantum.Simulator.Runtime.dll' (CentOS 7)
Я пытаюсь заставить Microsoft Quantum Development Kit работать на компьютере с CentOS 7. Я следовал инструкциям по установке dotnet
и тривиальный dotnet
"Hello World" работает. Я также установил Visual Studio из yum
и установил Microsoft Quantum Development Kit для Visual Studio из проводника Visual Studio.
После клонирования их репозитория github. Я попробую:
dotnet_vm: Teleportation$ cd ~/Quantum/Samples/Teleportation/
dotnet_vm: Teleportation$ scl enable rh-dotnet21 bash
dotnet_vm: Teleportation$ dotnet run
/home/user/Quantum/Microsoft.Quantum.Canon/Microsoft.Quantum.Canon.csproj : warning NU1603: Microsoft.Quantum.Canon depends on NETStandard.Library (>= 2.0.2-servicing-25519-03) but NETStandard.Library 2.0.2-servicing-25519-03 was not found. An approximate best match of NETStandard.Library 2.0.2 was resolved. [/home/user/Quantum/Samples/Teleportation/TeleportationSample.csproj]
/home/user/Quantum/Microsoft.Quantum.Canon/Microsoft.Quantum.Canon.csproj : warning NU1603: Microsoft.Quantum.Canon depends on NETStandard.Library (>= 2.0.2-servicing-25519-03) but NETStandard.Library 2.0.2-servicing-25519-03 was not found. An approximate best match of NETStandard.Library 2.0.2 was resolved.
Unhandled Exception: System.DllNotFoundException: Unable to load shared library 'Microsoft.Quantum.Simulator.Runtime.dll' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: libMicrosoft.Quantum.Simulator.Runtime.dll: cannot open shared object file: No such file or directory
at Microsoft.Quantum.Simulation.Simulators.QuantumSimulator.Init()
at Microsoft.Quantum.Simulation.Simulators.QuantumSimulator..ctor(Boolean throwOnReleasingQubitsNotInZeroState, Nullable`1 randomNumberGeneratorSeed, Boolean disableBorrowing)
at Microsoft.Quantum.Examples.Teleportation.Program.Main(String[] args) in /home/user/Quantum/Samples/Teleportation/Program.cs:line 13
Это похоже на ту же ошибку. Я попробовал то, что я думал, было эквивалентным решением Linux:
cp ~/.nuget/packages/microsoft.quantum.development.kit/0.2.1809.701-preview/runtimes/linux-x64/native/Microsoft.Quantum.Simulator.Runtime.dll ~/.nuget/packages/microsoft.quantum.development.kit/0.2.1809.701-preview/lib/netstandard2.0/
Я все еще получаю ту же ошибку. Кроме того, у меня не включен набор инструкций AVX на моем компьютере (что может быть потенциальной проблемой?).
Например
grep flags /proc/cpuinfo
flags : fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm nopl pni cx16 hypervisor lahf_lm abm
flags : fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm nopl pni cx16 hypervisor lahf_lm abm
dotnet_vm: Teleportation$
У меня нет опыта работы с Windows, и они не похожи на типичные библиотеки Linux (не.so или.a).
ВОПРОС: Как мне заставить это работать?
2 ответа
После ответа El Capi я посмотрел библиотеки, связанные с: например
dotnet_vm: gcc-5.1.0$ ldd /home/user/.nuget/packages/microsoft.quantum.development.kit/0.2.1809.701-preview/lib/netstandard2.0/Microsoft.Quantum.Simulator.Runtime.dll
/home/user/.nuget/packages/microsoft.quantum.development.kit/0.2.1809.701-preview/lib/netstandard2.0/Microsoft.Quantum.Simulator.Runtime.dll: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /home/user/.nuget/packages/microsoft.quantum.development.kit/0.2.1809.701-preview/lib/netstandard2.0/Microsoft.Quantum.Simulator.Runtime.dll)
/home/user/.nuget/packages/microsoft.quantum.development.kit/0.2.1809.701-preview/lib/netstandard2.0/Microsoft.Quantum.Simulator.Runtime.dll: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /home/user/.nuget/packages/microsoft.quantum.development.kit/0.2.1809.701-preview/lib/netstandard2.0/Microsoft.Quantum.Simulator.Runtime.dll)
/home/user/.nuget/packages/microsoft.quantum.development.kit/0.2.1809.701-preview/lib/netstandard2.0/Microsoft.Quantum.Simulator.Runtime.dll: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /home/user/.nuget/packages/microsoft.quantum.development.kit/0.2.1809.701-preview/lib/netstandard2.0/Microsoft.Quantum.Simulator.Runtime.dll)
linux-vdso.so.1 => (0x00007fff2f12b000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f1fb5fee000)
libm.so.6 => /lib64/libm.so.6 (0x00007f1fb5cec000)
libgomp.so.1 => /lib64/libgomp.so.1 (0x00007f1fb5ac6000)
libc.so.6 => /lib64/libc.so.6 (0x00007f1fb56f9000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1fb656a000)
Чтобы решить эту проблему с версиями относительно GLIBCXX_3.4.21, я установил gcc-5.1.0 (и его зависимости). Затем запустите код:
dotnet_vm: Teleportation$ dotnet run
/home/user/Quantum/Microsoft.Quantum.Canon/Microsoft.Quantum.Canon.csproj : warning NU1603: Microsoft.Quantum.Canon depends on NETStandard.Library (>= 2.0.2-servicing-25519-03) but NETStandard.Library 2.0.2-servicing-25519-03 was not found. An approximate best match of NETStandard.Library 2.0.2 was resolved. [/home/user/Quantum/Samples/Teleportation/TeleportationSample.csproj]
/home/user/Quantum/Microsoft.Quantum.Canon/Microsoft.Quantum.Canon.csproj : warning NU1603: Microsoft.Quantum.Canon depends on NETStandard.Library (>= 2.0.2-servicing-25519-03) but NETStandard.Library 2.0.2-servicing-25519-03 was not found. An approximate best match of NETStandard.Library 2.0.2 was resolved.
Round 0: Sent True, got True.
Teleportation successful!!
Round 1: Sent False, got False.
Teleportation successful!!
Round 2: Sent True, got True.
Teleportation successful!!
Round 3: Sent False, got False.
Teleportation successful!!
Round 4: Sent True, got True.
Teleportation successful!!
Round 5: Sent False, got False.
Teleportation successful!!
Round 6: Sent True, got True.
Teleportation successful!!
Round 7: Sent False, got False.
Teleportation successful!!
Press Enter to continue...
Это сработало!
Microsoft.Quantum.Simulator.Runtime.dll
это обычная библиотека Linux (.so), она просто переименована, чтобы облегчить поддержку кроссплатформенности.
Это похоже на аналогичную проблему с той, которую вы связали, однако вы должны посмотреть на Ubuntu
ответ: использовать ldd
выяснить, каковы зависимости и установить все, что отсутствует. Как и в этом посте, проблема, скорее всего, в том, что вы пропали без вести libgomp
, но я не знаком с CentOS.
Отключение AVX замедлит работу, особенно при работе с большим количеством кубитов, но вы все равно сможете работать.