Hi Lawrence,

  Setting XDG_CACHE_HOME works, thanks! We'll update the ARCHER Wiki page.


cheers

--cjc


From: Lawrence Mitchell <wence@gmx.li>
Sent: 06 June 2019 09:37:37
To: Cotter, Colin J
Cc: firedrake; loopy@tiker.net
Subject: Re: [firedrake] loopy wants to make a directory
 
Hi Colin,

cc'ing the loopy mailing list.

> On 6 Jun 2019, at 07:02, Cotter, Colin J <colin.cotter@imperial.ac.uk> wrote:
>
> Hi folks,
>   When running on ARCHER (national supercomputer) we need to set new paths for writing cache files because you have to build in /home but compute nodes are only allowed to write to /work. Since the loo.py changes it looks like we need to set paths for loo.py as well, otherwise I get the message at the bottom of this email. How do I set them?

It looks like loopy (via pytools) sets up these caches by asking python where the use cache directory is. This is controlled by the XDG_CACHE_HOME environment variable

Running your firedrake with:

export XDG_CACHE_HOME=$VIRTUAL_ENV/.cache

Should do the trick (once you've activated the virtualenv before setting the var).

Or try this patch?

diff --git a/firedrake_configuration/__init__.py b/firedrake_configuration/__init__.py
index b64b1b52..c6a1566b 100644
--- a/firedrake_configuration/__init__.py
+++ b/firedrake_configuration/__init__.py
@@ -46,3 +46,5 @@ def setup_cache_dirs():
         os.environ["PYOP2_CACHE_DIR"] = os.path.join(config["options"]["cache_dir"], "pyop2")
     if 'FIREDRAKE_TSFC_KERNEL_CACHE_DIR' not in os.environ:
         os.environ["FIREDRAKE_TSFC_KERNEL_CACHE_DIR"] = os.path.join(config["options"]["cache_dir"], "tsfc")
+
+    os.environ["XDG_CACHE_HOME"] = config["options"]["cache_dir"]



@loopy folk, I guess you're being good citizens by asking python for the cache directory. But controlling this on supercomputers is potentially an issue: you need to set different things depending on whether you're on linux or not.

I guess we can just assume that on a supercomputer you're on linux.

Thoughts?

Thanks,

Lawrence