2010-04-26 3 views
4

Кто-нибудь знает реализацию Java DRMAA-API, которая, как известно, работает с программным обеспечением кластера PBS/Torque?Есть ли библиотека DRMAA Java, которая работает с Torque/PBS?

Основы этого: я хотел бы отправить задания на новый набор кластеров linux из Java с помощью API, совместимого с DRMAA. Кластером управляет PBS/Torque. Torque включает в себя библиотеку PBS DRMAA 1.0 для Torque/PBS, которая содержит привязку DRMA-C и предоставляет в файлах libdrmaa.so и .a. Я знаю, что Sun grid engine включает drmaa.jar, предоставляющий Java-DRMAA API. Фактически я решил использовать SGE, но было решено сначала попробовать PBS.

Теория, лежащая в основе этого решения:
«DRMAA является стандартом, поэтому Java API требует только совместимого с стандартами привязки dmaa-c». Тем не менее, я не смог найти такой «общий API-интерфейс DRMAA-C-java» и теперь предполагаю, что это предположение неверно и что библиотеки Java являются специфичными для двигателя.

Редактировать: Я просто экспериментировал с пакетом drmaa.jar от солнечной решетки и пытался перекрестно использовать его с pbs libdrmaa.so. Неудивительно, что это не удалось (JNI неудовлетворенная ошибка ссылки).

Заключение: Это не работает! После некоторого поиска я вижу только эти несколько вариантов:

  1. Install GridWay наверх Globus инструментария. Установленный ontop PBS, GridWay утверждает, что обеспечивает DRMAA в Java. Выглядит слишком сложно для настройки .
  2. Слом DRMAA, отправьте в PBS вызов системной команды qsub, qstat, и т. Д. С Java. Простой, но не очень приятный.
  3. Реализовать сам драмма. Слишком сложный путь ...

  4. Переключить на решетчатый двигатель. GE в моем мнению превосходит PBS в отношении языковых привязок.

Я предпочитаю вариант 2. или 4. Любые рекомендации?

+0

того, чтобы принять мой собственный ответ как правильный один может быть неприятно;) – Michael

ответ

3

После еще нескольких поисков, похоже, что я должен что-то написать сам. Кажется, пока что нет оптимального ответа, но он может служить предупреждением для тех, кто пытается это сделать.

Лучшее место, чтобы задать эти вопросы, возможно, крутящий момент Список рассылки: www.clusterresources.com/resources/mailing-lists.php

Прежде всего, причина, почему вы не можете просто использовать любой DRMAA-Java библиотеки и использовать его с любой реализацией DRMAA-C: DRMAA описывает интерфейс управления ресурсами, а не как он реализован. Поставщик может использовать реализацию DRMAA-C и использовать только эти функции, но им этого не нужно. Он может использовать все, что есть в двигателе. Итак, одно важное сообщение: если вам нужны определенные языковые привязки, убедитесь, что они есть для всех необходимых языков.

Относительно указанных вариантов:

  1. Использование GridWay/Globus Toolkit: http://www.gridway.org/doku.php?id=start Преимущество: GridWay является мета планировщик, который поддерживает множество систем управления ресурсами (SGE, PBS, ...). Возможно, единственный способ получить интерфейс DRMAA для работы с PBS на данный момент. Недостаток: Похоже на инфляцию слоев и сложность. Не имейте опыта с этим.

  2. Использование системных команд, qsub, qstat, qdel. Преимущества: быстрый взломать Недостаток: грязный хак, необходимо реализовать парсер для вывода, может не заметить, если что-то пойдет не так, огибают сообщения от STDIN/STDOUT/STDERR, не портативный

  3. Использования JNI должен быть возможными для создания привязки для каждой c-функции в drmaa.c Преимущество: обеспечило бы полную реализацию drmaa (надеюсь) Disadvanteges: включает скомпилированный код, много ручной упаковки C-функций (возможно, это может быть автоматизировано)

  4. Переключиться на другой механизм сетки. Возможно, нам следовало бы провести этот анализ раньше. Однако у нас уже есть еще один кластер Torque, и есть опыт в этом. Рабочие два создавали бы более гетерогенную инфраструктуру.

  5. Изменение существующей библиотеки drmaa от другого поставщика. Не знаю, возможно ли это ... Мы тоже это рассмотрим.

1

Вы когда-нибудь решали, что с этим делать? Удалось ли вам связать привязки Java DRMAA с Torque/PBS? Я ищу, чтобы получить код Java DRMAA, работающий в системе Torque/PBS, и если вы уже сделали тяжелую работу, я бы хотел ее украсть.

Однако, если вы этого не сделали, не должно быть слишком плохо сделать некоторые привязки Java, и я сделаю это, если никто не сделает этого. Несколько лет назад я успешно модифицировал привязки DRMAA Java для SGE для работы с новой реализацией DRMAA для Xgrid (теперь устаревшей, но, возможно, скоро ее можно оживить).

Я даже написал краткий пост в блоге на своем опыте (включает в себя ссылку на общие инструкции):

http://edbaskerville.com/2006/07/11/java-bindings-working/

+0

Привет, жаль, что мы, наконец, решили переключиться на (Oracle/Sun) Открыть- исходная версия GridEngine. Это оказалось более полной системой. – Michael

+0

Имеет смысл. Код, который я переношу, предназначен для Sun Grid Engine (возможно, скоро это Oracle-источник), в котором возникли привязки Java. Я буду продвигаться с привязками Torque/PBS и размещать здесь, когда/если я заработаю их. –

2

Я также имел эту проблему. Это проект создания объектно-ориентированного связывания с C++ и Java DRMAA для PBS/Torque.

Недостатком является то, что вы должны иметь возможность загружать библиотеку, созданную из кода C++, поэтому она не является реализацией «чистой Java», которая может быть распространена только как .jar-файл, ожидая, что конечный пользователь предоставит «libdrmaa.so».

Для чего это стоит, вот это: https://github.com/bryan-lunt/PBSJavaDRMAA/

Смежные вопросы