首页 > 解决方案 > 无法加载 DLL 'Microsoft.Quantum.Simulator.Runtime.dll' (CentOS 7)

问题描述

我正在尝试让Microsoft 的 Quantum Development Kit在 CentOS 7 机器上工作。我按照安装说明dotnet进行操作,简单dotnet的“Hello World”就可以工作了。我还yum从 Visual Studio 资源管理器安装了 Visual Studio 并安装了 Microsoft Quantum Development Kit for 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)。

问题:我如何让它工作?

标签: .netvisual-studioquantum-computingq#

解决方案


Microsoft.Quantum.Simulator.Runtime.dll是一个普通的 Linux 库 (.so),它只是为了更容易支持跨平台而重命名。

它看起来确实与您链接的问题类似,但是您应该查看Ubuntu答案:使用ldd找出依赖项是什么并安装缺少的任何内容。和那篇文章一样,问题很可能是你失踪了libgomp,但我对 CentOS 不熟悉。

不启用 AVX 会使事情变慢,特别是在处理大量量子比特时,但你仍然应该能够运行。


推荐阅读