1 系统环境
硬件环境(Ascend/GPU/CPU): Ascend/GPU/CPU
MindSpore版本: mindspore=2.0.0
执行模式(PyNative/ Graph):不限
Python版本: Python=3.9
操作系统平台: 不限
2 报错信息
2.1 脚本信息
MindSpore使用run_pyscf跑量子化学时报错Invalid cross-device link
from openfermion.chem import MolecularData
from openfermionpyscf import run_pyscf
from mindquantum.core.gates import X
from mindquantum.core.circuit import Circuit
from mindquantum.core.operators import Hamiltonian
from mindquantum.simulator import Simulator
from mindquantum.algorithm.nisq import generate_uccsd
import mindspore as ms
ms.set_context(mode=ms.PYNATIVE_MODE, device_target="CPU")
dist = 1.5
geometry = [
["Li", [0.0, 0.0, 0.0 * dist]],
["H", [0.0, 0.0, 1.0 * dist]],
]
basis = "sto3g"
spin = 0
print("Geometry: \n", geometry)
molecule_of = MolecularData(
geometry,
basis,
multiplicity=2 * spin + 1
)
molecule_of = run_pyscf(
molecule_of,
run_scf=1,
run_ccsd=1,
run_fci=1
)
print("Hartree-Fock energy: %20.16f Ha" % (molecule_of.hf_energy))
print("CCSD energy: %20.16f Ha" % (molecule_of.ccsd_energy))
print("FCI energy: %20.16f Ha" % (molecule_of.fci_energy))
2.2 报错信息
Traceback (most recent call last):
File "/usr/lib/python3.7/shutil.py", line 566, in move
os.rename(src, real_dst)
OSError: [Errno 18] Invalid cross-device link: 'ddce6e68-a287-4612-91c1-775b3d9852b5.hdf5' -> '/usr/local/lib/python3.7/dist-packages/openfermion/testing/data/H1-Li1_sto3g_singlet.hdf5'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "fci.py", line 31, in <module>
run_fci=1
File "/usr/local/lib/python3.7/dist-packages/openfermionpyscf/_run_pyscf.py", line 205, in run_pyscf
pyscf_molecular_data.save()
File "/usr/local/lib/python3.7/dist-packages/openfermion/chem/molecular_data.py", line 846, in save
shutil.move("{}.hdf5".format(tmp_name), "{}.hdf5".format(self.filename))
File "/usr/lib/python3.7/shutil.py", line 580, in move
copy_function(src, real_dst)
File "/usr/lib/python3.7/shutil.py", line 266, in copy2
copyfile(src, dst, follow_symlinks=follow_symlinks)
File "/usr/lib/python3.7/shutil.py", line 121, in copyfile
with open(dst, 'wb') as fdst:
PermissionError: [Errno 13] Permission denied: '/usr/local/lib/python3.7/dist-packages/openfermion/testing/data/H1-Li1_sto3g_singlet.hdf5'
3 根因分析
这是由于分子文件默认存储到了系统目录,权限不足导致的。
4 解决方案
将data_directory='./'传入到MolecularData中。
from openfermion.chem import MolecularData
from openfermionpyscf import run_pyscf
from mindquantum.core.gates import X
from mindquantum.core.circuit import Circuit
from mindquantum.core.operators import Hamiltonian
from mindquantum.simulator import Simulator
from mindquantum.algorithm.nisq import generate_uccsd
import mindspore as ms
ms.set_context(mode=ms.PYNATIVE_MODE, device_target="CPU")
dist = 1.5
geometry = [
["Li", [0.0, 0.0, 0.0 * dist]],
["H", [0.0, 0.0, 1.0 * dist]],
]
basis = "sto3g"
spin = 0
print("Geometry: \n", geometry)
molecule_of = MolecularData(geometry, basis, multiplicity=2 * spin + 1, data_directory='./')
molecule_of = run_pyscf(
molecule_of,
run_scf=1,
run_ccsd=1,
run_fci=1
)
print("Hartree-Fock energy: %20.16f Ha" % (molecule_of.hf_energy))
print("CCSD energy: %20.16f Ha" % (molecule_of.ccsd_energy))
print("FCI energy: %20.16f Ha" % (molecule_of.fci_energy))