Существует ли библиотека Java DRMAA, которая работает с Torque/PBS?
Кто-нибудь знает реализацию Java DRMAA-API на Java, которая, как известно, работает с программным обеспечением кластера PBS/Torque?
Предпосылки к этому: я хотел бы отправить задания во вновь настроенный Linux-кластер из Java с использованием API, совместимого с DRMAA. Кластер управляется PBS/Torque. Torque включает библиотеку PBS DRMAA 1.0 для Torque/PBS, которая содержит привязку DRMA-C и предоставляется в двоичных файлах libdrmaa.so и.a. Я знаю, что грид-движок Sun включает в себя drmaa.jar, предоставляющий API-интерфейс Java-DRMAA. На самом деле я решил использовать SGE, но было решено сначала попробовать PBS.
Теория, лежащая в основе этого решения:
"DRMAA - это стандарт, и поэтому для API Java требуется только совместимое со стандартом связывание drmaa-c". Однако я не смог найти такой "общий API-интерфейс DRMAA-C-java" и теперь предположил, что это предположение неверно и что библиотеки Java являются специфичными для движка.
Редактировать: я просто экспериментировал с drmaa.jar из пакета движка sun grid и пытался использовать его совместно с pbs libdrmaa.so. Не удивительно, что это не удалось (ошибка ссылки JNI неудовлетворенная).
Вывод: так не получается! После некоторого поиска я вижу только эти несколько вариантов:
- Установите GridWay поверх инструментария Globus. Установленный поверх PBS, GridWay утверждает, что предоставляет DRMAA на Java. Выглядит слишком сложно для моей обстановки.
- Удалите DRMAA, отправьте в PBS, вызвав системные команды qsub, qstat и т. Д. Из Java. Просто, но не так приятно.
Реализовать привязку drmaa самостоятельно. Слишком сложно...
Переключиться на Grid Engine. GE, по моему мнению, превосходит PBS в отношении языковых привязок.
Я предпочитаю вариант 2. или 4. Любые рекомендации?
3 ответа
После еще нескольких поисков, похоже, я должен сам что-то написать. Кажется, пока нет оптимального ответа, но он может послужить предупреждением для тех, кто пытается сделать то же самое.
Лучшее место, чтобы задать эти вопросы, возможно, список рассылки Torque: www.clusterresources.com/resources/mailing-lists.php
Прежде всего, причина, по которой вы не можете просто использовать любую библиотеку DRMAA-Java и использовать ее с любой реализацией DRMAA-C, заключается в следующем: DRMAA описывает интерфейс управления ресурсами, а не то, как он реализован. Поставщик может использовать реализацию DRMAA-C и использовать только эти функции, но они не обязаны это делать. Он может использовать все, что есть в двигателе. Итак, одно важное сообщение: если вам нужны определенные языковые привязки, убедитесь, что они есть для всех требуемых языков.
Что касается упомянутых вариантов:
Использование GridWay / Globus Toolkit: http://www.gridway.org/doku.php?id=start Преимущество: Gridway - это мета-планировщик, который поддерживает многие системы управления ресурсами (SGE, PBS,...). Возможно, единственный способ получить интерфейс DRMAA для работы с PBS на данный момент. Недостаток: похоже на раздувание слоев и сложности. Не имею опыта с этим.
Используя системные команды, qsub, qstat, qdel. Преимущество: быстрый взлом Недостатки: грязный взлом, необходимо реализовать парсеры для вывода, может не заметить, если что-то пойдет не так, передавать сообщения от stdin/stdout/stderr, непереносимые
С помощью JNI должна быть возможность создать привязку для каждой c-функции в drmaa.c. Преимущество: обеспечит полную реализацию drmaa (надеюсь). Недостатки: включает в себя скомпилированный код, много ручного переноса C-функций (возможно, это можно автоматизировать).)
Переключиться на другой движок сетки. Возможно, мы должны были сделать этот анализ раньше. Однако у нас уже есть еще один кластер Torque, и с этим есть опыт. Работа двух создаст более разнородную инфраструктуру.
Изменение существующей библиотеки drmaa от другого поставщика. Не знаю, возможно ли это... Мы тоже это рассмотрим.
У меня тоже была эта проблема. Это проект по созданию объектно-ориентированной привязки C++ и Java DRMAA для PBS/Torque.
Недостатком является то, что вы должны иметь возможность загружать библиотеку, созданную из кода C++, так что это не реализация "чистой Java", которая может распространяться только в виде файла.jar, ожидая, что конечный пользователь предоставит "libdrmaa.so". " самих себя.
Для чего это стоит, вот оно: https://github.com/bryan-lunt/PBSJavaDRMAA/
Вы когда-нибудь решали, что с этим делать? Удалось ли вам заставить привязки Java DRMAA работать с Torque/PBS? Я хочу, чтобы какой-нибудь код Java DRMAA работал в системе Torque / PBS, и если вы уже проделали тяжелую работу, я бы хотел украсть ее.
Однако, если вы этого не сделаете, сделать некоторые привязки Java не должно быть слишком плохо, и я сделаю это, если никто другой не сделает. Несколько лет назад я успешно изменил привязки DRMAA Java для SGE для работы с новой реализацией DRMAA для Xgrid (в настоящее время устаревшая, но, возможно, скоро будет восстановлена).
Я даже написал краткое сообщение в блоге о своем опыте (включает ссылку на общие инструкции):