Hi,
I'm running a ground state simulation of Heisenberg XYZ model, using a slightly modified boundary condition, in which the XX, YY interactions on the first and last bonds are shutdown (the purpose of this is to guarantee an exact degeneray, due to a quaternion symmetry). The file is in attachment, it is based on the IsingStatics example file. But when I run it, I get the following error after a few seconds
** On entry to DGEMM parameter number 10 had an illegal value
What caused this error?
Thanks for help in advance.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
It looks like BLAS is complaining about an illegal value in a matrix multiplication step in your setup. I'll be taking a look at this over the next day or so, but in the meantime could you tell me which steps you followed to install OpenMPS?
Thanks,
MJ
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi Matthew,
I'm using OpenMPS v3.0 which I installed about a year ago. I think I just followed the html documentation. My system is ubuntu 18.04. I just noticed there is a newer version v3.1. Maybe I should download the newer version and try again with the same code. [Also, the illegal value error doesn't always occur, it depends on the values of parameters Jx, Jy,Jz. But I met the error at several different points.]
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi Matthew,
I'm using OpenMPS v3.0 which I installed about a year ago. I think I just
followed the html documentation. My system is ubuntu 18.04. I just noticed
there is a newer version v3.1. Maybe I should download the newer version
and try again with the same code. [Also, the illegal value error doesn't
always occur, it depends on the values of parameters Jx, Jy,Jz. But I met
the error at several different points.]
Hi,
I just tried the newest OpenMPS3.1 version but the problem remains, it says:
On entry to DGEMM parameter number 10 had an illegal value
Note: The following floating-point exceptions are signalling: IEEE_UNDERFLOW_FLAG IEEE_DENORMAL.
Daniel, what do you mean by adding "-O0" flag? Do you mean when I install openmps I should type
python BuildOSMPS.py -O0 --local='./'
?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Below I've noted a few details. I'm wondering if the file you attached always produces the error. I want to make sure that I've got a minimal reproducer for the error. Your feedback on this point is most appreciated.
... Notes ...
There were some changes in how we compile OpenMPS in version 3.1+. The source installation instructions will point you to this page. To save you some clicking, the command is below (assuming you have resolved all dependencies):
where /path/to/install_dir is the path you'd like to place the Fortran executable. It needs to be accessible to the Python script / simulation you're running. If this path needs elevated privileges to write to, then you need to execute the last command with sudo:
Hi Matthew,
I recompiled openmps again, did exactly what you said, including the -O0 flag, but the error still exists. This time it says:
Beginning eMPS for convergence parameter set/state: 1 2 !
Beginning two-site excited state.
outer 1 sweep 1 bd 21 energy 0.0000000000000000
Site k, energy 1 -76.803053762636139
Site k, energy 2 -81.089303202367773
Site k, energy 3 -86.930343031361673
Site k, energy 4 -89.754093300675052
Site k, energy 5 -94.172753591469061
Site k, energy 6 -94.768090196263969
16 18 || 32 2 52
ContractionOps_include.f90:333: contr_exec_tensor: dim mismatch (1).
contr_tensor: contr_prepr failed.
lcontr_perm: idx > rank
contr_tensor: lcontr_perm failed.
contr_tensor: contr_meta_info failed.
Tensors_include.f90:758: destroy_tensor: elem not allocated.
Note: The following floating-point exceptions are signalling: IEEE_UNDERFLOW_FLAG IEEE_DENORMAL
STOP raise_error
In the attachment is the python file I'm using. It produces the same error every time with this input.
Hi Matthew,
May I ask if you have figured out how to solve this issue? I'm still very interested in this as I'm using this code for a research project. Any suggestions for me? Even a temporary solution would be fine (e.g. would using a different computer work?), as I don't plan to do large scale numerics. I'm just using numerics to compare with my analytic results. Thanks.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hey Allen,
It's always alright to ask for an update. Yes, I believe I've got a fix for you. I still need to run a few checks before I send the details. Can I get back to you tomorrow afternoon, or is your project more pressing than this?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Apologies for the delay. I needed to double check what I was seeing in my latest runs. When I compile the latest version of OpenMPS (master), and reduce the local_tol in the MPS convergence paramters, your code runs as is.
Would you mind setting the local tolerance to something modest, like 1E-12, and see if it runs for you? My guess right now is that we're running up against the limit of machine precision at 1E-30.
-MJ
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I see. The second variational excited state search seems to produce NaN in the routine. I can get converged results for the ground state and the first excited state with output:
OpenMPS uses either abolute differencing or variance to determine how it should take the next step in the search. The variance is producing NaN, and absolute differencing is producing 0 (which leads to NaN).
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi Matthew,
When I set 'n_excited_states' to be 1 and local_tol to be 1E-30, it runs OK:
-58.6081057073068 True
-58.6081057073072 True
Notice that these are actually the two ground states (with exact degeneracy guaranteed by the quaternion symmetry).
When I set 'n_excited_states' to be 2 and local_tol to be 1E-12, then the 2nd excited state gives an error:
Tensors_include.f90:894: dot_tensor: dimension mismatch.
Note: The following floating-point exceptions are signalling: IEEE_UNDERFLOW_FLAG IEEE_DENORMAL
STOP raise_error
And postprocess gives:
-58.6081057073022 False
-58.608105691201 False
Traceback (most recent call last):
File "HeisenbergXYZGS.py", line 107, in <module>
main(PostProcess=Post)
File "HeisenbergXYZGS.py", line 87, in main
energy=Output['energy']
File "/home/lagrenge/software/OpenMPS_v3.1_1/openmps/MPSPyLib/obsterms.py", line 3253, in getitem
Res = self.read()
File "/home/lagrenge/software/OpenMPS_v3.1_1/openmps/MPSPyLib/obsterms.py", line 3359, in read
raise NotImplementedError
NotImplementedError</module>
What parameters are you using in your simulation? Why is there no degeneracy?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi Matthew,
I'm happy to see you've got a fix. I'm not in a hurry, fixing it by tomorrow is totally fine, so please take your time. Just reminding you so that you don't totally forget this. Thanks in advance.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Allen,
Apologies for the delay. I set the system size to 10, then 11, to see if there was something pathological about the system itself with our code. The physical results you posted are consistent with my findings.
Your issue remains at the top of my priority list. Currently, I’m looking at possibly changing the simulation script so that it sidesteps the issue and unblocks your research.
I expect to have something for you on Monday or Tuesday. Is that alright?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi Matthew,
Sure, just don't feel stressed about this. I thought I've already found a way to avoid this problem (at the physical level). With my special boundary condition the \sigma_1^z and \sigma_L^z are conserved, so I could just manually implement these conserved quantities by doing simulation on a smaller system with L-2 sites, where there is a h\sigma^z term on the first and last spin. The original ground states correspond to h=J_z, h'=J_z and h=-J_z, h'=-J_z, while the original lowest excited states correspond to h=J_z, h'=-J_z and h=-J_z, h'=J_z. The code runs without problem this way.
But anyway I still hope to understand the origin of that problem in case it may bother me again in future. Thanks for your effort on this.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
I'm running a ground state simulation of Heisenberg XYZ model, using a slightly modified boundary condition, in which the XX, YY interactions on the first and last bonds are shutdown (the purpose of this is to guarantee an exact degeneray, due to a quaternion symmetry). The file is in attachment, it is based on the IsingStatics example file. But when I run it, I get the following error after a few seconds
** On entry to DGEMM parameter number 10 had an illegal value
What caused this error?
Thanks for help in advance.
Hey Allen,
It looks like BLAS is complaining about an illegal value in a matrix multiplication step in your setup. I'll be taking a look at this over the next day or so, but in the meantime could you tell me which steps you followed to install OpenMPS?
Thanks,
MJ
Hi Matthew,
I'm using OpenMPS v3.0 which I installed about a year ago. I think I just followed the html documentation. My system is ubuntu 18.04. I just noticed there is a newer version v3.1. Maybe I should download the newer version and try again with the same code. [Also, the illegal value error doesn't always occur, it depends on the values of parameters Jx, Jy,Jz. But I met the error at several different points.]
Hi Allen, hi Matthew,
I would also consider compiling without optimization, i.e. -O0 flag. It
would give an indicator of how severe the problem is in the end.
Best regards,
Daniel
On Wed, Sep 18, 2019 at 4:57 AM Allen Wang lagrenge@users.sourceforge.net
wrote:
Hi,
I just tried the newest OpenMPS3.1 version but the problem remains, it says:
On entry to DGEMM parameter number 10 had an illegal value
Note: The following floating-point exceptions are signalling: IEEE_UNDERFLOW_FLAG IEEE_DENORMAL.
Daniel, what do you mean by adding "-O0" flag? Do you mean when I install openmps I should type
python BuildOSMPS.py -O0 --local='./'
?
Hey Allen,
Below I've noted a few details. I'm wondering if the file you attached always produces the error. I want to make sure that I've got a minimal reproducer for the error. Your feedback on this point is most appreciated.
... Notes ...
There were some changes in how we compile OpenMPS in version 3.1+. The source installation instructions will point you to this page. To save you some clicking, the command is below (assuming you have resolved all dependencies):
where
/path/to/install_dir
is the path you'd like to place the Fortran executable. It needs to be accessible to the Python script / simulation you're running. If this path needs elevated privileges to write to, then you need to execute the last command withsudo
:Daniel is referring to the optimization options passed to the Fortran compiler. In OpenMPS ver. 3.1+, you can specify these flags via:
Last edit: Matthew Jones 2019-09-19
Hi Matthew,
I recompiled openmps again, did exactly what you said, including the -O0 flag, but the error still exists. This time it says:
Beginning eMPS for convergence parameter set/state: 1 2 !
Beginning two-site excited state.
outer 1 sweep 1 bd 21 energy 0.0000000000000000
Site k, energy 1 -76.803053762636139
Site k, energy 2 -81.089303202367773
Site k, energy 3 -86.930343031361673
Site k, energy 4 -89.754093300675052
Site k, energy 5 -94.172753591469061
Site k, energy 6 -94.768090196263969
16 18 || 32 2 52
ContractionOps_include.f90:333: contr_exec_tensor: dim mismatch (1).
contr_tensor: contr_prepr failed.
lcontr_perm: idx > rank
contr_tensor: lcontr_perm failed.
contr_tensor: contr_meta_info failed.
Tensors_include.f90:758: destroy_tensor: elem not allocated.
Note: The following floating-point exceptions are signalling: IEEE_UNDERFLOW_FLAG IEEE_DENORMAL
STOP raise_error
In the attachment is the python file I'm using. It produces the same error every time with this input.
This is very helpful, Allen. Thanks! I'll run through this sample right way.
Hi Matthew,
May I ask if you have figured out how to solve this issue? I'm still very interested in this as I'm using this code for a research project. Any suggestions for me? Even a temporary solution would be fine (e.g. would using a different computer work?), as I don't plan to do large scale numerics. I'm just using numerics to compare with my analytic results. Thanks.
Hey Allen,
It's always alright to ask for an update. Yes, I believe I've got a fix for you. I still need to run a few checks before I send the details. Can I get back to you tomorrow afternoon, or is your project more pressing than this?
Hi Matthew,
Where is the fix?
Allen,
I hit a small snag. I'll have an update for you this afternoon.
Sorry about this. Hopefully, the delay doesn't impact you too negatively.
-MJ
Allen,
Apologies for the delay. I needed to double check what I was seeing in my latest runs. When I compile the latest version of OpenMPS (master), and reduce the
local_tol
in the MPS convergence paramters, your code runs as is.Would you mind setting the local tolerance to something modest, like 1E-12, and see if it runs for you? My guess right now is that we're running up against the limit of machine precision at 1E-30.
-MJ
Allen,
I see. The second variational excited state search seems to produce NaN in the routine. I can get converged results for the ground state and the first excited state with output:
Can you confirm this is what you get?
OpenMPS uses either abolute differencing or variance to determine how it should take the next step in the search. The variance is producing NaN, and absolute differencing is producing 0 (which leads to NaN).
Hi Matthew,
When I set 'n_excited_states' to be 1 and local_tol to be 1E-30, it runs OK:
-58.6081057073068 True
-58.6081057073072 True
Notice that these are actually the two ground states (with exact degeneracy guaranteed by the quaternion symmetry).
When I set 'n_excited_states' to be 2 and local_tol to be 1E-12, then the 2nd excited state gives an error:
Tensors_include.f90:894: dot_tensor: dimension mismatch.
Note: The following floating-point exceptions are signalling: IEEE_UNDERFLOW_FLAG IEEE_DENORMAL
STOP raise_error
And postprocess gives:
-58.6081057073022 False
-58.608105691201 False
Traceback (most recent call last):
File "HeisenbergXYZGS.py", line 107, in <module>
main(PostProcess=Post)
File "HeisenbergXYZGS.py", line 87, in main
energy=Output['energy']
File "/home/lagrenge/software/OpenMPS_v3.1_1/openmps/MPSPyLib/obsterms.py", line 3253, in getitem
Res = self.read()
File "/home/lagrenge/software/OpenMPS_v3.1_1/openmps/MPSPyLib/obsterms.py", line 3359, in read
raise NotImplementedError
NotImplementedError</module>
What parameters are you using in your simulation? Why is there no degeneracy?
Hi Matthew,
I'm happy to see you've got a fix. I'm not in a hurry, fixing it by tomorrow is totally fine, so please take your time. Just reminding you so that you don't totally forget this. Thanks in advance.
Allen,
Apologies for the delay. I set the system size to 10, then 11, to see if there was something pathological about the system itself with our code. The physical results you posted are consistent with my findings.
Your issue remains at the top of my priority list. Currently, I’m looking at possibly changing the simulation script so that it sidesteps the issue and unblocks your research.
I expect to have something for you on Monday or Tuesday. Is that alright?
Without changing the physics, obviously
Hi Matthew,
Sure, just don't feel stressed about this. I thought I've already found a way to avoid this problem (at the physical level). With my special boundary condition the \sigma_1^z and \sigma_L^z are conserved, so I could just manually implement these conserved quantities by doing simulation on a smaller system with L-2 sites, where there is a h\sigma^z term on the first and last spin. The original ground states correspond to h=J_z, h'=J_z and h=-J_z, h'=-J_z, while the original lowest excited states correspond to h=J_z, h'=-J_z and h=-J_z, h'=J_z. The code runs without problem this way.
But anyway I still hope to understand the origin of that problem in case it may bother me again in future. Thanks for your effort on this.