Al igual que cualquier otro atributo de la máquina, solo tiene que anunciarlo en el classad de la máquina, y luego hacer que sus trabajos lo requieran.
para hacer publicidad en el ClassAd máquina, puede difícil que el código en el archivo de configuración condor de cada máquina mediante la adición de algo como esto:
has_numpy = True
STARTD_EXPRS = $(STARTD_EXPRS) HAS_NUMPY
... o mejor aún, puede decirle a Condor descubrirlo dinámicamente en tiempo de ejecución con un script y anunciar el resultado a través de startd classad hook. Para ello, instale un simple script has_numpy
en cada máquina, así:
#!/usr/bin/env python
try:
import numpy
except ImportError:
print "has_numpy = False"
else:
print "has_numpy = True"
... y luego decirle Cóndor para ejecutarlo cada cinco minutos y se adhieren los resultados en el ClassAd startd, añadiendo lo siguiente a la condor archivo de configuración de la máquina:
HASNUMPY = /usr/libexec/condor/has_numpy
STARTD_CRON_JOBLIST = $(STARTD_CRON_JOBLIST) HASNUMPY
STARTD_CRON_HASNUMPY_EXECUTABLE = $(HASNUMPY)
STARTD_CRON_HASNUMPY_PERIOD = 300
... y luego ta-da (después de un reconfig) sus máquinas de forma dinámica detectar e informar de si numpy está instalado y disponible para los scripts de python.
Entonces sólo tiene que añadir el requisito correspondiente a su trabajo puede enviar los archivos, así:
Requirements = (has_numpy == True)
... y su trabajo sólo se ejecutará en máquinas en las que se instala numpy.
Gracias por su respuesta. Desafortunadamente mi caso prueba de otra manera. Los trabajos se envían a diferentes máquinas. Algunas presentaciones dan como resultado un ImportError de numpy. Comprobé esas máquinas dos veces y no tenían ningún numpy instalado. Por lo tanto, el cóndor no parece impedir la presentación de un trabajo a una máquina que no cumple con los requisitos del trabajo; en mi caso, una instalación numpy. Tal vez sea el caso en nuestra instalación de cóndor, sin embargo. Yo mismo no configuré el sistema y es la primera vez que trabajo con cóndor. :-) – Aufwind
Hora de contactar a los desarrolladores de cóndores. O bien su manual no es correcto, o Python se trata de manera diferente como lo es Java. –
Esta cita del manual está fuera de contexto. La función de llamada remota del sistema Condor está disponible solo para trabajos de "universo estándar".Aunque no lo dice, el OP debe usar el universo "vainilla" porque el universo estándar impone restricciones que impiden que los intérpretes como Python se ejecuten debajo de él. – Pinko