Giống như bất kỳ thuộc tính máy nào khác, bạn chỉ cần quảng cáo thuộc tính máy trong lớp máy và sau đó yêu cầu công việc của bạn cần.
Để quảng cáo nó trong máy classad, bạn có thể mã hóa cứng nó vào tập tin cấu hình condor mỗi máy bằng cách thêm một cái gì đó như thế này:
has_numpy = True
STARTD_EXPRS = $(STARTD_EXPRS) HAS_NUMPY
... hoặc tốt hơn nữa, bạn có thể nói Condor để tự động phát hiện nó khi chạy với tập lệnh và quảng cáo kết quả qua một số startd classad hook. Để làm điều đó, hãy lắp một has_numpy
kịch bản đơn giản trên mỗi máy như vậy:
#!/usr/bin/env python
try:
import numpy
except ImportError:
print "has_numpy = False"
else:
print "has_numpy = True"
... và sau đó nói với Condor để chạy nó mỗi năm phút và dính vào các kết quả trong classad startd, bằng cách thêm vào sau vào tệp cấu hình của máy condor của máy:
HASNUMPY = /usr/libexec/condor/has_numpy
STARTD_CRON_JOBLIST = $(STARTD_CRON_JOBLIST) HASNUMPY
STARTD_CRON_HASNUMPY_EXECUTABLE = $(HASNUMPY)
STARTD_CRON_HASNUMPY_PERIOD = 300
... và sau đó cấu hình lại máy tính của bạn sẽ tự động phát hiện và báo cáo xem có cài đặt numpy hay không.
Sau đó, bạn chỉ cần thêm một yêu cầu tương ứng với công việc của bạn nộp hồ sơ, như vậy:
Requirements = (has_numpy == True)
... và công việc của bạn sẽ chỉ chạy trên máy nơi NumPy được cài đặt.
Cảm ơn câu trả lời của bạn. Thật không may trường hợp của tôi chứng tỏ khôn ngoan khác. Các công việc được gửi đến các máy khác nhau. Một số lần gửi kết quả trong một ImportError của một khối u. Tôi đã kiểm tra kỹ các máy đó và chúng không có phần nào được cài đặt. Vì vậy, condor dường như không ngăn chặn việc gửi một công việc đến một máy không đáp ứng các yêu cầu của công việc - trong trường hợp của tôi là một cài đặt đầy ắp. Có lẽ nó là trường hợp trong cài đặt của chúng tôi condor, mặc dù. Bản thân tôi đã không thiết lập hệ thống và đây là lần đầu tiên tôi làm việc với condor. :-) – Aufwind
Thời gian để liên hệ với nhà phát triển condor. Hướng dẫn của họ không chính xác, hoặc Python được xử lý khác với Java. –
Trích dẫn này từ hướng dẫn sử dụng nằm ngoài ngữ cảnh. Tính năng gọi hệ thống từ xa Condor chỉ khả dụng cho các công việc "vũ trụ chuẩn".Mặc dù ông không nói như vậy, OP phải sử dụng vũ trụ "vanilla" vì vũ trụ tiêu chuẩn áp đặt các ràng buộc ngăn cản các trình thông dịch như Python chạy dưới nó. – Pinko