2009-09-21 2 views
4

Я хотел бы начать играть с параллелизмом в программах, которые я пишу (в основном для удовольствия), но у меня нет многоядерной системы и я не могу позволить себе скоро. Я запускаю linux. Есть ли способ, например, с помощью виртуальной машины сравнить производительность многопоточной реализации программы с однопоточной версией, без фактического запуска ее на аппаратном обеспечении с несколькими процессорами или ядрами?Тестирование производительности параллельных программ на одноядерном компьютере

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

Благодаря

ответ

4

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

Если вы хотите УЧИТЬСЯ, как программировать несколько потоков, вы можете сделать это на одной основной машине для первых шагов (например, как работает API и т. Д.). Но вам придется протестировать многоядерную машину, и очень вероятно, что вы увидите ошибки на многоядерной машине, которую вы не видите на одной базовой машине.

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

+0

Кроме того, некоторые кеширующие ошибки будут скрыты некоторыми многоядерными процессорами и будут отображаться только с несколькими физическими чипами процессора. –

0

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

0

Для наблюдения за эффектами, отличными от потенциально улучшенной локальности, вам понадобится оборудование или имитатор, который на самом деле моделирует взаимодействие/взаимодействие, которое происходит, когда программа работает параллельно. Магии не было.

2

В зависимости от того, что вы сравниваете, вы можете использовать узел Amazon EC2. Это не бесплатно, но это дешевле, чем покупка компьютера.

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