Menu

On entry to DGEMM parameter number 10 had an illegal value

Technical
Allen Wang
2019-09-17
2019-10-09
  • Allen Wang

    Allen Wang - 2019-09-17

    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.

     
  • Matthew Jones

    Matthew Jones - 2019-09-18

    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

     
    • Allen Wang

      Allen Wang - 2019-09-18

      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.]

       
      • Daniel Jaschke

        Daniel Jaschke - 2019-09-18

        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 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.]


        On entry to DGEMM parameter number 10 had an illegal value
        https://sourceforge.net/p/openmps/discussion/tech/thread/9540dea27f/?limit=25#56a5/9f4c


        Sent from sourceforge.net because you indicated interest in
        https://sourceforge.net/p/openmps/discussion/tech/

        To unsubscribe from further messages, please visit
        https://sourceforge.net/auth/subscriptions/

         
  • Allen Wang

    Allen Wang - 2019-09-18

    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='./'
    ?

     
    • Matthew Jones

      Matthew Jones - 2019-09-19

      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):

      python3 setup.py install && \
      python3 BuildOSMPS.py --prefix=/path/to/install_dir
      

      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:

      python3 setup.py install && \
      sudo python3 BuildOSMPS.py --prefix=/path/to/install_dir
      

      Daniel is referring to the optimization options passed to the Fortran compiler. In OpenMPS ver. 3.1+, you can specify these flags via:

      python3 BuildOSMPS.py --prefix=/path/to/install_dir --option=OFLAGS:-O0
      
       

      Last edit: Matthew Jones 2019-09-19
  • Allen Wang

    Allen Wang - 2019-09-22

    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.

     
    • Matthew Jones

      Matthew Jones - 2019-09-22

      This is very helpful, Allen. Thanks! I'll run through this sample right way.

       
  • Allen Wang

    Allen Wang - 2019-09-27

    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.

     
    • Matthew Jones

      Matthew Jones - 2019-09-27

      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?

       
      • Allen Wang

        Allen Wang - 2019-09-29

        Hi Matthew,
        Where is the fix?

         
        • Matthew Jones

          Matthew Jones - 2019-09-29

          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

           
          • Matthew Jones

            Matthew Jones - 2019-09-30

            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

             
            • Matthew Jones

              Matthew Jones - 2019-09-30

              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:

              converged?  True ... energy:  -27.6517008990406
              converged?  True ... energy:  -23.809770189222
              

              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).

               
              • Allen Wang

                Allen Wang - 2019-10-01

                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?

                 
  • Allen Wang

    Allen Wang - 2019-09-27

    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.

     
  • Matthew Jones

    Matthew Jones - 2019-10-09

    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?

     
    • Matthew Jones

      Matthew Jones - 2019-10-09

      Without changing the physics, obviously

       
      • Allen Wang

        Allen Wang - 2019-10-09

        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.

         

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.