.net - 无法加载 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)。
问题:我如何让它工作?
解决方案
这Microsoft.Quantum.Simulator.Runtime.dll
是一个普通的 Linux 库 (.so),它只是为了更容易支持跨平台而重命名。
它看起来确实与您链接的问题类似,但是您应该查看Ubuntu
答案:使用ldd
找出依赖项是什么并安装缺少的任何内容。和那篇文章一样,问题很可能是你失踪了libgomp
,但我对 CentOS 不熟悉。
不启用 AVX 会使事情变慢,特别是在处理大量量子比特时,但你仍然应该能够运行。
推荐阅读
- math - Solving T(n) = 9T(n / 10) + log^3 n?
- javascript - unable to update state using react useState
- javascript - Blockcypher error Non-canonical signature: wrong length marker
- python - Containerising an application to transparently read/write files on the host filesystem
- matlab - Why notch filter can't remove 50 hz frequency?
- haskell - Haskell,定义类型多态的函数的特化
- spring-boot - Gitlab CI docker镜像在本地无法访问
- c++ - 如何使用 c++ 模型填充播放列表 qml 类型?
- mysql - 在mysql中使用触发器总结两列并找到百分比
- c++ - 我应该使用 std::cerr 和 exit() 而不是抛出异常吗?