adrian-soto / QEdark_repo

QEdark code Github repository
GNU General Public License v2.0
4 stars 2 forks source link

Executing the program in parallel #3

Open realcoolsid123 opened 6 years ago

realcoolsid123 commented 6 years ago

Hi Adrian,

I'm working with Prof. Rouven and Marivi, and have been using your code for Xenon. I wanted to know how I can invoke the parallel execution of the program, as I can't use openMPI. So if I want a parallel realisation of QE, how do I go about doing it?

Currently I'm using: ./pw.x < si.in dm.in > output.txt Which invokes the serial execution. Using flags -fopenmp or -openmp doesn't solve it either. What flags do I need to use to get the parallel code running? Could you please post the full command if possible?

Or is the parallel execution such that I must run the process separately as (say) 38 jobs for 1 mass term per job? Seems like the QE preprocessing (generating the k points) is a prerequisite for all mass terms, so this way of running it will be very sub-optimal.

Thanks!

adrian-soto commented 6 years ago

Hi!

I'm glad you're working on this and sorry for the late reply.

If you compiled the program adequately (i.e. turning off openMPI and turning on openmp) should be able to execute the program just as any program. If you want to run it with multithreading just remember to set your environment variable OMP_NUM_THREADS to the correct value using the export command in the shell.

PS: In some systems I've found it necessary to change the value of the the OMP_STACKSIZE environment variable. Setting it to 512M has been sufficient in my previous runs.

adrian-soto commented 6 years ago

Here is a copy-paste from a job submission script:

# Path to executable QEdarkEXEC="path_to_my_pw.x_file" # use your own here

# Set environment variables export OMP_NUM_THREADS=24 export OMP_STACKSIZE=512M

# Input and output file names infile="GaAs.in" outfile="GaAs.out"

# Run $QEdarkEXEC < $infile > $outfile

realcoolsid123 commented 6 years ago

Hi,

Your script helped a lot. I set the stack size to around 8kM, as 500M wasn't sufficient for Ecut > 150Ry. Seems to work for now.

I have another (probably simple) question: How does the code take into account the fact that the amount of the crystal is 1kg? For the multimass calculation, is the output Rate normalised for 1kg of material, or is the number of atoms required to make 1 kg a hard set quantity for Si and Ge? (My concern arises because I'm working with Xenon)

As a corollary, if I input an atom of mass m, what's the amount of material I'm calculating the Rate for?