[Wien] cannot touch '/optics.symmat': Read-only file system
Oleg Rubel
rubelo at mcmaster.ca
Thu Nov 14 04:01:03 CET 2019
Dear Wien2k community,
I run into a problem when performing optics calculations in parallel
mode (not MPI), hybrid with SOC. It is run for Si, but it is just a step
stone to heavier materials where SOC really matters.
Optics is executed as
> [rubel at gra690 optics]$ x optic -so -hf -p
> running OPTIC in parallel mode
> [1] 4932
> OPTIC END
> [1] + Done ( cd $PWD; $t $exe ${def}_${loop}.def; rm -f .lock_$lockfile[$p] ) >> .timeop_$loop
> [1] 4937
> ...
> Summary of opticpara:
> localhost user=0 wallclock=203580
> scratch=/
> touch: cannot touch '/optics.symmat': Read-only file system
> touch: cannot touch '/optics.mommat2': Read-only file system
> touch: cannot touch '/optics.mat_diag': Read-only file system
> touch: cannot touch '/optics.mme': Read-only file system
> /optics.symmat: Read-only file system.
> /optics.symma1: Read-only file system.
> /optics.symma2: Read-only file system.
> /optics.mat_diag: Read-only file system.
> /optics.mme: Read-only file system.
> rm: cannot remove '/optics.symmat_1': No such file or directory
> rm: cannot remove '/optics.mat_diag_1': No such file or directory
> rm: cannot remove '/optics.mme_1': No such file or directory
> ...
The output shows that optics actually ends OK, but the script gets stuck
with results files pointing to the root directory "/" for some reason.
Of course, I have no permission to write there. The same problem was
reported earlier on the mailing list
https://www.mail-archive.com/wien@zeus.theochem.tuwien.ac.at/msg17103.html
The problem is the value of "scratch" variable. I edited the file
> [rubel at gra690 optics]$ vim $WIENROOT/opticcpara
to display the variable. As you can see in the output above, the value
is "scratch=/" in spite of the fact that
> [rubel at gra690 optics]$ echo $SCRATCH
> ./
The workaround is to make changes in the file $WIENROOT/opticcpara
> if ( $?SCRATCH ) then
> set scratch=`echo $SCRATCH | sed -e 's/\/$//'`/ # we are afraid
> # different settings in different
> # computing centers
> #use global variable for scratch if set
> echo "scratch=$scratch" # OLEG
> set scratch=$SCRATCH # OLEG
> endif
I am not sure what does the whole command with "sed ..." suppose to do?
Why do we need to change $SCRATCH value? I tried in different shells
> [rubel at gra-login1 optics]$ scratch=`echo $SCRATCH | sed -e 's/\/$//'`/
> [rubel at gra-login1 optics]$ echo $scratch
> ./
> [rubel at gra-login1 optics]$ /bin/csh
> [rubel at gra-login1 optics]$ set scratch=`echo $SCRATCH | sed -e 's/\/$//'`/
> [rubel at gra-login1 optics]$ echo $scratch
> ./
> [rubel at gra-login1 optics]$ echo $shell
> /bin/tcsh
I could not reproduce "/" in the command line, but in the script the
value is different for some reason.
Any thoughts are welcome :)
Thank you in advance
Oleg
--
Oleg Rubel (PhD, PEng)
Department of Materials Science and Engineering
McMaster University
JHE 359, 1280 Main Street West, Hamilton, Ontario L8S 4L8, Canada
Email: rubelo at mcmaster.ca
Tel: +1-905-525-9140, ext. 24094
Web: http://olegrubel.mcmaster.ca
More information about the Wien
mailing list