Какова лучшая [закрытая] реализация MPI

Я думаю, что вы можете попробовать использовать двойные скобки [[]] для вызова этого в кадре данных или использовать параметр subset в applymap(), как показано ниже :

df[['Name']].style.applymap(color_green).to_excel(path,index=False)

Другой путь будет таким:

df.style.applymap(color_green, subset=pd.IndexSlice[:, ['Name']])

это приводит к полному фрейму данных, оформленному в виде списка определенных столбцов.

Для лучшего понимания, пример ниже:

Демо:

Давайте рассмотрим следующий df:

   Name  some_col
0    abc         1
1  CHECK         1
2   defg         2
3  CHECK         3
4    efg         3
5    ijk         3
6    lmn         1
7    opq         7

def color_green(val):
    color = 'green' if val != 'CHECK' else 'black'
    return 'color: %s' % color
df[['Name']].style.applymap(color_green)

это выводит

enter image description here

второй метод:

[113 ]

выводит:

enter image description here

Затем вы можете экспортировать это в Excel.

Надеюсь, это поможет.

25
задан prasanna 27 September 2008 в 19:40
поделиться

4 ответа

MPICH был вокруг намного дольше. Это чрезвычайно портативно, и Вы найдете ценность лет подсказок и обманываете онлайн. Это - безопасная ставка, и это, вероятно, совместимо с большим количеством программ MPI там.

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

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

21
ответ дан 28 November 2019 в 21:37
поделиться

Я написал довольно много параллельных приложений для кластеров Windows и Linux, и я могу посоветовать вам, что сейчас MPICH2, вероятно, является более безопасным выбором. Как упоминает другой респондент, это очень зрелая библиотека. Кроме того, теперь есть широкая поддержка вещания (через MPI_Bcast ), и на самом деле, MPICH2 имеет довольно много хороших функций, таких как scatter-and-collect .

OpenMPI набирает обороты. Вычисления Penguin (они являются крупным поставщиком кластеров и им нравится Linux) на самом деле имеют несколько действительно сильных тестов, в которых OpenMPI опережает MPICH2 при определенных обстоятельствах.

Что касается вашего комментария о «повышении производительности», лучший совет, который я могу дать, - никогда не отправлять больше данных, чем это абсолютно необходимо, если вы связаны с вводом / выводом, и никогда не выполнять больше работы, чем необходимо, если вы используете процессор связаны. Я попал в ловушку оптимизации неправильного фрагмента кода несколько раз :) Надеюсь, вы не пойдете по моим стопам!

Проверьте форумы MPI - у них много хорошего информация о подпрограммах MPI , и на сайте Beowulf есть много интересных вопросов.

9
ответ дан 28 November 2019 в 21:37
поделиться

Мы использовали mpich просто, потому что это казалось самым доступным и лучшим зарегистрированный, мы не приложили много сил для тестирования альтернатив. MPICH имеет разумные инструменты для развертывания на окнах.
основная проблема производительности, которую мы имели, была то, что мы должны были поставить те же базовые данные во все узлы, и MPICH не делает (или не сделал), широковещательная передача поддержки - настолько развертывающийся исходные данные была O (n)

-1
ответ дан 28 November 2019 в 21:37
поделиться

«Лучше» трудно определить ... «Быстрее» можно ответить, сравнив его с вашим кодом и вашим оборудованием. Такие вещи, как коллективная оптимизация и оптимизация разгрузки, будут зависеть от вашего конкретного оборудования, а также могут быть довольно вариативными в отношении версий стека драйверов, Google должен быть в состоянии найти ваши рабочие комбинации.

Что касается работы по оптимизации, это отчасти зависит от кода и отчасти от оборудования.

Привязан ли ввод-вывод вашего кода к хранилищу? В этом случае может очень помочь исследование чего-то лучшего, чем NFS, или использование ввода-вывода MPI вместо наивного параллельного ввода-вывода

. Если вы привязаны к сети, тогда может помочь рассмотрение местоположения связи и перекрытия коммуникаций / вычислений. Большинство различных реализаций MPI имеют параметры настройки для использования локальной общей памяти, а не сети для внутриузловой связи, что для некоторых кодов может значительно снизить нагрузку на сеть.

Разделение трафика ввода-вывода и MPI может иметь большое значение для некоторых кластеров, особенно для кластеров Gigabit Ethernet.

3
ответ дан 28 November 2019 в 21:37
поделиться
Другие вопросы по тегам:

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