Ошибка источника массива буфера Ray Qutip только для чтения - PullRequest
0 голосов
/ 01 апреля 2020

В настоящее время я использую Qutip (http://qutip.org/) для некоторого физического моделирования, которое я ускоряю с помощью библиотеки распределенных вычислений Ray (https://ray.readthedocs.io/en/latest/#). У меня был некоторый успех, но я столкнулся с проблемой.

Это функция в Qutip, связанная с классом Qobj, называемая .dag (), ее точная функция не имеет значения, но эффективно действует так, как будто она работает с вектором, называемым здесь "штат". При вызове его из функции удаленного луча, выполняемой на нескольких ядрах, я получаю эту ошибку:

TaskError(ValueError): ray::QuantumPFunctions.eq_terms() (pid=4509, ip=192.168.1.97)
File "python/ray/_raylet.pyx", line 452, in ray._raylet.execute_task
File "/home/oliverccohen/Documents/JupyterLab/MSci-Project/QuantumPFunctions.py", line 87,  in eq_terms
return sum(abs(coefs[i])**2*state*state.dag() for i,state in enumerate(states[start:end]))
File "/home/oliverccohen/Documents/JupyterLab/MSci-Project/QuantumPFunctions.py", line 87, in <genexpr>
return sum(abs(coefs[i])**2*state*state.dag() for i,state in enumerate(states[start:end]))
File "/home/oliverccohen/.local/lib/python3.6/site-packages/qutip/qobj.py", line 920, in dag
out.data = zcsr_adjoint(self.data)
File "qutip/cy/spmath.pyx", line 499, in qutip.cy.spmath.zcsr_adjoint
File "stringsource", line 658, in View.MemoryView.memoryview_cwrapper
File "stringsource", line 349, in View.MemoryView.memoryview.__cinit__
ValueError: buffer source array is read-only

Некоторые предварительные исследования, кажется, указывают на то, что это связано с тем фактом, что сопряженная функция используется в dag ( ), и полученная в результате установка памяти не позволяет Рэю работать с такой функцией. Однако я не уверен, как лучше всего исправить проблему.

Кто-нибудь видел подобную проблему / сумел придумать исправление?

...