Сохранение результатов из массива slurm в Python - PullRequest
0 голосов
/ 01 июня 2019

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

Как правило, это означает, что у меня много скриптов Python общего вида

def Function():
   results = numpy.zeros([1,3])
   a = random.uniform(hi,low)
   b = random.uniform(hi,low)
   c = LongComputation(a,b)
   results[0,0] = a
   results[0,1] = b
   results[0,2] = c
   return results

Игнорируя это в этом примере, это немного чрезмерно спроектировано в этом примере с использованием массивов. Как правило, отсюда я отправляю задания с использованием массива slurm, и каждый сценарий сохраняет файл .csv с именем файла, к которому добавлен идентификатор массива, поэтому я получаю run_0.csv, run_1.csv и т. Д. И т. Д. .

Тогда я просто cat все это вместе. Я опасался просто записывать результаты в один и тот же файл .csv из-за двух заданий, которые выполнялись одновременно, пытаясь записать в файл одновременно. Метод cat работает достаточно хорошо, но он оставляет каталоги с сотнями тысяч файлов в них - есть, очевидно, более элегантный способ сделать это, который может обрабатывать несколько независимых заданий из массива (а не внутренних параллельных процессов), пытаясь писать одновременно?

...