Snakemake is not really designed to store temporary files to local disk, but in the documentation, they suggest a workaround using "shadow rules".
The problem I have is, that our front node does not have /scratch/..
directory and therefore snakemake complains right away
snakemake my_result.tsv -p --jobs 10 --shadow-prefix /scratch/$USER --cluster "qsub "
...
PermissionError: [Errno 13] Permission denied: '/scratch'
Every single computational node does have the directory, only the frontend does not. Is there any easy workaround?
--- edit ---
I will try to clarify where I think is the problem.
The head node does not have anything mounted to /scratch
, I think that's why I am getting that error. I sort of expected that snakemake will attempt do create the shadow environments for individual executed jobs, because if it does, everything would be fine. All the computing nodes do have their local disks mounted to /scratch
.
Of course, I could use a different shadow directory, but all the directories that are mounted both at the front-end and computing nodes are NOT local disks of individual nodes, which would cause more network traveling of the temporary data.
--- edit 2 ---
Thanks @Chris_Rands for finding the relevant lines. I opened an Issue on Snakemake GitHub. Once I will know more, I will get back with the answer here.
--shadow-prefix
to a different directory path? $\endgroup$/scratch/...
is not a local directory on the computing nodes. If I pick a directory that is actually on the shared storage, all the temporary files will have to travel through networking. That's what I wanted to avoid with the shadow prefix. $\endgroup$