rohskopf / modecode

Massively parallel vibrational mode calculator.
21 stars 8 forks source link

Memory leak when using my own input files #11

Closed ejmeitz closed 1 year ago

ejmeitz commented 1 year ago

Hello,

I am able to run all of the examples in the modecode directory just fine but when I go to run my own examples the program just hangs and memory slowly fills up until the program crashes. I am not sure if I compiled something incorrectly of if the format of my input is incorrect. I have triple checked both and cannot really find an issue. The system (see files below) is 256 particles which will have a lot of force constants, but the cluster I'm using has 96GB of memory and I also tested this with smaller systems and had a similar issue. Any help would be appreciated! Thanks.

I am using the command below to run which is just copied from one of the examples: mpirun -np 10 modecode fd 0.001 3.0 1e-8 2 > outfile_ifc2

After the program crashes the lammps log file is still empty (even though I turned logging back on) which suggests the program is failing somewhere reading the INPUT.

Note I made these .txt for GitHub to work I am not trying to run it with the .txt extension. INPUT.txt in.pos.256.0.txt

rohskopf commented 1 year ago

Strange that the examples work but you're still seeing a memory problem. I see you're using finite difference - have you also tried the dynamical matrix command in LAMMPS? There might be better behavior on clusters there.

ejmeitz commented 1 year ago

Yeah strange for sure.

As for using LAMMPS, I already know what the dynamical matrix should be for this system I just wanted to verify they were the same as what ModeCode spits out. Long term though I want 3rd order force constants so I kind of need to use ModeCode.

BTW if I do not use MPI I get the same problem so I don't think its anything to do with the cluster or memory sharing between processes. I'll load it into Visual Studio and debug if there's no immediately obvious problem you see.

rohskopf commented 1 year ago

Sounds good. Keep in mind we also have a 3rd order option in LAMMPS: https://docs.lammps.org/third_order.html

Always good to have multiple checks.

ejmeitz commented 1 year ago

Oh cool, did not know that was in LAMMPS. There is no fourth order though it seems?

I guess I can convert to modal coupling constants manually then based on your paper. Although I would very much like to get ModeCode working.

rohskopf commented 1 year ago

No 4th order in LAMMPS. ModeCode simply post-processes the force constants and eigenvectors. I haven't made an interface to LAMMPS output yet, we store the force constants a bit differently in ModeCode (actually requires less memory because we don't store force constants outside the cutoff range).

rohskopf commented 1 year ago

Hi @ejmeitz , I noticed your INPUT file does not follow the format from the examples. The program is actually hanging at the read input stage because of this. I know it's bothersome but we have to use that exact format for now.

I recommend taking the INPUT files from the Si 8 atom example, keeping the dashed line sections, and changing your settings.

ejmeitz commented 1 year ago

Oh awesome, did not realize the "------------------------------END FILE" and stuff was required in the INPUT file. Added that and it all runs now.

Thanks you!