Recientemente instalé Open MPI y se queja
PMIx has detected a temporary directory name that results
in a path that is too long for the Unix domain socket:
Temp dir: /var/folders/**/*****************************/T/openmpi-sessions-501@host*******************************/*****
Esta pregunta sugiere establecer TMPDIR
en /tmp
. ¿Es eso seguro? ¿Estropeará otros programas?
Puede haber fallas de seguridad que resulten del uso descuidado de/tmp
; los usuarios locales maliciosos pueden eliminar archivos arbitrarios o posiblemente incluso ejecutar código arbitrario en su cuenta de usuario, dependiendo de qué tan grave /tmp
sea la falla. Una solución que permanece dentro del char sun_path[104]
límite de los sockets de dominio de Unix (consulte /usr/include/sys/un.h
la definición) es crear un directorio temporal y usarlo para MPI:
$ mktemp -d /tmp/mpi-XXXXXXXX
/tmp/mpi-zUN9SQo6
lo que deja 86 caracteres para que use el archivo de socket (104 menos uno para el final NUL
menos 17).
Dependiendo de dónde y cuándo configure, TMPDIR
otros programas podrían estropearse fácilmente, en particular, tmux
o screen
que luego no puedan ubicar su zócalo de control. Si es posible, alcance la TMPDIR
configuración personalizada lo más cerca posible de las llamadas MPI, por ejemplo, con una función de shell o alias a lo largo de las líneas de
alias mpi4py='TMPDIR=$(mktemp -d /tmp/mpi-XXXXXXXX) mpi4py'
Esto crearía un directorio temporal único para cada invocación; los directorios en /tmp
se podan automáticamente. Si se necesita un directorio compartido o más persistente, /var/tmp
suele ser más adecuado
$ mkdir /var/tmp/mympi
y asegúrese de confirmar que el directorio no existía en caso de que un atacante local demasiado inteligente ya haya creado ese directorio (poco probable, pero esta es la razón por la que mktemp -d
se creó). Luego, en su perfil de shell, el alias podría verse así
alias mpi4py='TMPDIR=/var/tmp/mympi mpi4py'
Esta forma es nuevamente más adecuada si es necesario un estado compartido entre diferentes invocaciones de comandos MPI.
thrig
sin ladera
/private/tmp
se poda regularmente. Si solo quiero una ubicación tmp fija para una aplicación específica, probablemente solo crearía/tmp/APPNAME_temp
y usaría esto.sin ladera
NoethersOneRing
TMPDIR
¿vuelve al valor anterior? Entonces, si quiero usar,mpi4py
puedo cambiarTMPDIR
, hacer lo que sea, y luego simplemente cerrar esa terminal.NoethersOneRing
alias yourmpicommand='TMPDIR=$(mktemp -d /tmp/mpi-XXXXXXXX) yourmpicommand'
como el anterior? ¿O es algo diferente?thrig
alias
en su configuración de shell; no sería necesario cerrar la terminal ya que el entorno personalizado solo se aplicaría al comando con el alias. Aprender los conceptos básicos de, por ejemplo,bash
puede ser beneficioso si todo esto parece misterioso.NoethersOneRing
mpiexec
, por ejemplo, seTMPDIR
establecerá uno nuevo cada vez que ejecutempiexec
. Eso no parece ser lo que quiero hacer. (¿O es eso?)thrig