Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - filipr

Pages: 1 [2] 3 4 5
16
General Questions and Answers / Re: error in mpiexec.hydra
« on: September 15, 2023, 08:32 »
Remove the '-localonly' option from the command, it was only available for older versions of Intel MPI.

17
Code
mpiexec -np 1 atkpython < test.py >> test.out

You are piping the file test.py into the standard input (stdin) of the atkpython program. That is not how atkpython (or normal python) works. Instead you should simply pass the script file as an argument to the atkpython program:

Code
mpiexec -np 1 atkpython test.py >> test.out

You can see the expected way to run the program by executing atkpython --help

18
Dear Vaclav,

NMR chemical shifts aren't implemented for the LCAO method in QuantumATK, only the plane-wave based GIPAW method is implemented. As I mentioned above, in this framework it isn't so easy to define "ghost atoms", as you don't have the arbitrary local basis sets as one has in LCAO and Gaussian based codes. I think that it is in theory possible to create a zero charged PAW dataset/pseudopotential and use that to create "ghost atoms" on which one can then calculate the chemical shifts. I am unsure whether the implementation currently supports this as I wrote above.

Even if it is possible to create a "ghost atom" PAW dataset and it works, there are some limitations to the approach, e.g. that the ghost atoms can't be placed too close to other atoms as the PAW augmentation spheres are not allowed to overlap.

19
The NMR method uses the GIPAW approach which again is based on the PAW formalism for treating the atomic cores. The PAW formalism is basically a way to use a mixed basis of plane waves and localized orbitals. In GIPAW the shielding tensors are calculated by projecting on the localized basis, which is described by the PAW dataset/pseudopotential. Maybe it would be possible to create a custom  PAW dataset for your "ghost" atoms where you set the charge to zero, but I honestly don't know if this will work as there are many assumptions in the code and it wasn't designed with this in mind (in PW you don't need ghost atoms as the basis spans all space). It may work, it may run but give wrong results or it may straight up crash - I don't know and I even wrote the code.

You are welcome to try it out, though. I can give you some hints as to how to do it, if you wish, but first consider if you want to try this very experimental approach.

20
Hi Frank,

It appears the installation was successful this time. We did have an issue with using relative paths for installation directories in the past, but it should have been fixed in version 2022.12, so it's still unknown what the original issue was. Most likely something system specific.

Anyway, you new problem is that the program finds the libraries of an existing Intel MPI installation from 2016 (/software/tools/compilers/intel/compilers_and_libraries_2016.1.150/linux/mpi/intel64/lib/libmpifort.so.12). Maybe that's what you load with module load PE-intel? Try to remove that from your submission script. Also be sure that your PATH and LD_LIBRARY_PATH environment variables do not contain directories to any MPI libraries, and that no environment variables called I_MPI_ROOT and MKLROOT exist. Typically these are set in e.g. your .bashrc by sourcing environment scripts shipped by Intel software like source /path/to/intel/mpi/mpivars.sh, so be sure none of that is done. You don't want your shell environment to contain any traces of MPI, whether it is OpenMPI, MPICH or Intel-MPI.

21
Hmm yes, the installer failed to install the launcher scripts.

Can you try to install it again (just remove/uninstall the current installation first), but when you do:

  • Run installer with debug output, i.e.: ./QuantumATK-U-2022.12-Linux64.bin --debuglevel 4
  • Specify installation directory as absolute path

If it fails again, there should be a log file installbuilder_installer_*.log (with * the highest number) from the installer in your /tmp directory - please send us that file, so that we can see what went wrong and why.

Also, since you have to install it again, I recommend getting the new service pack version. The installation process hasn't changed, though.

22
In general the performance of QuantumATK should be almost equivalent on Linux and Windows. However for certain MPI parallel algorithms we rely on third party libraries whose newest and most performant versions are not available on Windows and we therefore have to fall back on an older, less performant, version.

QuantumATK calculations are computationally demanding and will thus benefit from running on powerful workstations, servers or HPC compute clusters. The HPC infrastructure is almost exclusively designed around the Linux environment.

So, it is my recommendation that you run your QuantumATK calculations on a powerful Linux machine or compute cluster. I think it will have better performance than an equivalent Windows machine, but we haven't made any rigorous benchmarks to back up this claim. You can still use the GUI desktop app on e.g. a Windows laptop just fine and just submit your calculations to be run on a Linux machine.

For system requirements and supported OS and distributions see https://docs.quantumatk.com/faq/faq_technical_hardware_for_u2022_12.html

23
General Questions and Answers / Re: I-V curve
« on: May 17, 2023, 14:48 »
There is an automated workflow for this, see the tutorial: https://docs.quantumatk.com/tutorials/ivcharacteristics/ivcharacteristics.html

24
General Questions and Answers / Re: Error
« on: May 12, 2023, 15:01 »
Intel MPI exit code 9 means that the MPI process has recieved the SIGKILL signal and has been stopped by the Operating System.

This is usually done by the job scheduling system if your process uses more memory or time than it is allowed to. If you have configured your submission script (and job scheduling system) correctly you should (or could) receive and email explaining why the job scheduling system killed your job.

For advice on how to reduce memory consumption check out: https://docs.quantumatk.com/technicalnotes/advanced_performance/advanced_performance.html

25
The dapl async_event error could either be 1) a bug or incompatibility in Intel MPI 2) a wrongly configured Intel MPI or 3) a wrongly configured network infrastructure on the cluster.

If you can run other MPI software on the cluster, we can disregard (3).

QuantumATK 2019.12 ships Intel MPI 2018 update 1. For (2) please read the Intel MPI user guide and documentation which you can find here. I suggest reaching out to your cluster administrator to get advice on how to configure Intel MPI to use the cluster network infrastructure.

If you believe that Intel MPI 2018 update 1 is incompatible with your cluster it is possible to use a newer version when running QuantumATK. If your cluster already has a new version of Intel MPI installed in a module system you can simply put e.g.:

Code
module load intel-mpi

in your submission script. If Intel MPI is not installed, you can install it yourself by downloading the oneAPI installer from Intel's website. Then in your submission script put:

Code
source /path/to/intel/oneapi/mpi/latest/env/mpivars.sh

You can verify that it find the correct version by executing

Code
mpirun --version

Be sure that your submission script uses the mpiexec/mpirun executable of the new version of Intel MPI (which should now be in your PATH) and not the hardcoded path to the one in QuantumATK/libexec/mpiexec.hydra. If you use a job scheduler you may have to use the MPI launcher it provides, e.g. for SLURM use srun.

Now, this will still not work out of the box. The reason is that the QuantumATK/bin/atkpython file is actually not an executable but a launcher script, which sets up environment variables so that third party libraries like Intel MPI can be found. You can open it in a text editor if you are curious. Importantly in this case is that it prepends the path to the QuantumATK/lib directory to LD_LIBRARY_PATH. When the program launches it will look for the mpi library (libmpi.so) in the directories in LD_LIBRARY_PATH in the order they appear. It will then always find the 2018.1 version in QuantumATK/lib. In order to force it to use the newer version of Intel MPI you thus have to delete or rename all files starting with "libmpi" in the QuantumATK/lib directory. That way it will end up instead finding the newest version in e.g. /path/to/intel/oneapi/mpi/latest/lib.

You can verify that an atkpython run uses the correct Intel MPI version by setting:

Code
export I_MPI_DEBUG=5

in your submission script. When the program starts it should output debug log messages from Intel MPI, including the version of the library used.

Starting from QuantumATK 2022.12 we now ship Intel MPI in a separate folder and append, instead of prepend, the directory to LD_LIBRARY_PATH. This makes it easier for users to use their own installation of Intel MPI without them having to delete/rename files.

26
Dear Filipr,
What to do when we have a gas adsorbed on a periodic system?
How shall we perform the HOMO-LUMO calculation in such case?

  • You would have to ensure that the size of the periodic system is repeated enough times so that the molecule does not artificially interact with its periodic images in the neighboring cells. You can either just guesstimate the size/number of repeats or do a convergence study if you want to be more thorough.
  • You can use a k-point sampling for the ground state calculation, of if the system is big enough it should be sufficient with a Gamma only calculation
  • Then you calculate the BandStructure of the system.
  • You need to find the band indices (= quantum numbers) of the states corresponding to the HOMO and LUMO on the molecule. Localized states on the molecule will typically have zero dispersion (if you made the system big enough), so they appear as a flat horizontal line in the band structure spectrum. It can be a bit hard to identify these on a spectrum where all the bands have been folded in due to the repeats of the substrate unit cell.
  • Another approach is to calculate the Eigenvalues (or just use BandStructure) at the Gamma point and select a few states around the Fermi level , then calculate the BlochState for those and visually inspect whether they are localized on the molecule or not.

27
See https://docs.quantumatk.com/manual/Types/Eigenstate/Eigenstate.html for reference.

Answers to your specific questions:

  • "Quantum number" is in this context simply the index of the state you want to calculate and plot. The index 0 corresponds to the state with the lowest energy.
  • You typically don't have to check any of the projection settings - only if you know you have to
  • "Atom indices" is a subsetting under "Projection Selector", so unless you want to project the Hamiltonian on a subsystem, you also should leave this blank
  • Same as above

So just put in a number in "Quantum number", leave rest blank and you should be fine. Note that "Eigenstate" is for molecules only - if you want to visualize the eigenstates of an extended, periodic system you should use "Bloch state" instead.

28
General Questions and Answers / Re: Charge Density Difference
« on: March 31, 2023, 10:00 »
If I understand what you mean by charge density difference, you need to split it up in three different calculations: 1) Full system, e.g. surface + molecule 2) only surface 3) only molecule. It is important that you use the same unit cell and grid sampling for each calculation, even the small molecule. To set a specific grid sampling you can use: density_mesh_cutoff=GridSampling(Na, Nb, Nc). If you do the calculation of the full system you can read off the grid sampling used in the log output or using e.g. density.shape() in Python.

Calculate the electron density for each system, then you can calculate the difference as:

Code
density_full = nlread('calculation_surface+molecule.hdf5', ElectronDensity)[0]
density_surface = nlread('calculation_surface.hdf5', ElectronDensity)[0]
density_molecule = nlread('calculation_molecule.hdf5', ElectronDensity)[0]

charge_difference_density = density_full - density_surface - density_molecule
nlsave('charge_difference_density.hdf5', charge_difference_density)

The charge_difference_density variable will contain a generic GridValues object that can be opened and viewed in NanoLab.

29
First try to run the script in serial from the terminal like so:

Code
export I_MPI_DEBUG=5
/path/to/quantumatk/bin/atkpython your_script.py

if that works, then try to run in parallel like so:

Code
export I_MPI_DEBUG=5
/path/to/quantumatk/libexec/mpiexec.hydra -n <#PROCS> /path/to/quantumatk/bin/atkpython your_script.py

where <#PROCS> are the number of MPI processes you want to use.

If any of these fail, please report back any output or error messages that are shown.

30
What do you mean by "not run"? How do you run it? and does it show any error messages?

Pages: 1 [2] 3 4 5