Чистое Python решение для нескольких узлов SLURM - PullRequest
0 голосов
/ 01 июля 2018

Я работаю над проектом по выполнению многоузлового скрипта Python в кластере SLURM. Решение должно быть p2p. Проблема в том, что у меня нет идеи, с чего начать. Хотя я должен вещать первым, верно? Выяснить, какие узлы назначены моей работе (4 узла), а затем использовать каждый узел с 1/4 частью работы (?). Каждый узел должен отслеживать, какая часть работы была выполнена, верно? Я слышал, как кто-то упоминал файловое решение, но я не совсем понял это. Надеюсь, вы, ребята, можете помочь мне с этим. Также нельзя использовать MPI или что-либо подобное.

(задание, которое я должен представить, - это чтение большого файла и обработка каждой строки этого файла)

1 Ответ

0 голосов
/ 01 июля 2018

Вы говорите, что общая задача - прочитать большой файл и обработать каждую строку.

Во-первых, вам нужна стратегия, чтобы разделить работу. Один процесс может прочитать весь файл, а затем отправить его остальным, может иметь смысл, если ваш диск работает очень медленно, а сеть работает очень быстро, но, скорее всего, вы захотите разделить задачу чтения.

Часто вы можете делать это без явной связи между процессами. Просто попросите первый процесс прочитать первые 25% байтов файла, затем продолжайте чтение, пока не увидите еще одну новую строку. Второй процесс читает от 25% до 50% в файле, затем продолжается до тех пор, пока не увидит еще одну новую строку. И так далее.

Таким образом, все, что вам нужно сделать, это сообщить процессам три факта при запуске:

  1. Путь к файлу.
  2. Количество процессов (N), которые будут обрабатывать файл.
  3. Индекс каждого конкретного процесса (от 0 до N), так что он может определить, какую часть считать.
...