Опрос: сервер сборки в виртуальной машине?

Мы можем использовать matrix-multiplication -

c = A.sum(1,keepdims=True)
means_np = np.where(c==0,0,A.dot(X)/c)

Мы можем оптимизировать его дальше, преобразовав A в float32 dtype, если это еще не так, и если потеря точности в порядке, как показано ниже -

In [57]: np.random.seed(0)

In [58]: A = np.random.randint(0,2,(1000,1000))

In [59]: X = np.random.rand(1000,1000).astype(np.float32)

In [60]: %timeit A.dot(X)
10 loops, best of 3: 27 ms per loop

In [61]: %timeit A.astype(np.float32).dot(X)
100 loops, best of 3: 10.2 ms per loop

In [62]: np.allclose(A.dot(X), A.astype(np.float32).dot(X))
Out[62]: True

Таким образом, используйте A.astype(np.float32).dot(X) для замены A.dot(X).

В качестве альтернативы, чтобы решить для случая, когда сумма строк равна zero, и это требует от нас использования np.where, мы могли бы присвоить любое ненулевое значение, скажем, 1 в c, а затем просто делим на это, например, -

c = A.sum(1,keepdims=True)
c[c==0] = 1
means_np = A.dot(X)/c

Это также позволило бы избежать предупреждения, которое в противном случае мы получили бы из np.where в тех случаях с нулевой суммой.

8
задан Garry Shutler 19 January 2009 в 15:49
поделиться

5 ответов

Вот некоторые преимущества выполнения Вашего сервера сборки в виртуальной среде:

Совместно используйте одно кричащее быстрое поле через несколько серверов сборки - говорят, что у Вас есть полдюжины серверов сборки. Соедините одно очень быстрое (64-128gb поршень с 4 CPU, очень быстрые жесткие диски, и т.д.) машина и выполните гипервизор на нем. Теперь, все серверы сборки могут получить доступ к этим более быстрым аппаратным средствам, если они делают сборки, когда другие серверы сборки не. Установите расписание сборки, и необходимо смочь сделать более быстрые сборки. Если необходимо использовать физические поля, Вы, вероятно, не сможете предоставить тот уровень качества аппаратных средств на каждом отдельном сервере сборки - но это легче выровнять по ширине, когда это совместно используется.

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

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

10
ответ дан 5 December 2019 в 12:13
поделиться

Как всегда, это зависит...

Предположение, что у Вас есть работа другого VM того же сервера и их другой VM's, может обработать случайное замедление, вызванное рабочей сборкой, затем я сказал бы да. Но если Вы собираетесь разместить единственный сервер сборки VM на единственном хосте, или если на другой VM's негативно повлияет случайное выполнение сборки, то нет.

Я могу сказать Вам, что, где я работаю, мы переключились на хостинг большинства наших серверов сборки на VMware. Так как мы выполняем несколько сборок неделя 5 + линейки продуктов, имеет смысл для нас размещать их всех на одной быстрой машине. Мы также размещаем значительную часть наших машин тестирования на том же сервере, который позволяет нам находить машине хорошее применение, и так как нет никаких рабочих серверов, работающих на нем, замедление, которое происходит во время сборок, не является проблемой.

2
ответ дан 5 December 2019 в 12:13
поделиться

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

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

Используя VMs на самом деле вполне хорошая идея, если необходимо быть независимы от аппаратной и программной совместимости. Ваш предпочтительный поставщик оборудования может прекратить поддерживать Вашу необходимую версию ОС для Вашего сервера сборки в их новых машинах, затем Ваша гарантия может истечь на Вашем старом сервере сборки. Это оставляет Вас потенциально не могущими сделать сборки в той ОС.

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

2
ответ дан 5 December 2019 в 12:13
поделиться

Я не вижу преимущества, если Ваш VM не находится на некотором поле, которое является виртуальным сервером.

0
ответ дан 5 December 2019 в 12:13
поделиться

Плюсы и минусы использования виртуальной машины для вашего сервера сборки такие же, как и при использовании виртуальной машины для любой другой службы.

Этот вопрос также применим к использованию виртуальной машины для почтового / вики-сервера и т. Д.

(я бы просто опубликовал это как комментарий, но пока не получил ответ)

0
ответ дан 5 December 2019 в 12:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: