Мы знаем, что параллельная эффективность программы, работающей на многоядерной системе, может быть рассчитана как ускорение/N, где N - количество ядер. Поэтому, чтобы сначала использовать эту формулу, нам нужно выполнить код в многоядерной системе и вам нужно знать ускорение.Оценить параллельную эффективность с использованием процессора unicore
Я хотел бы знать, если у меня нет многоядерной системы, тогда можно ли оценить ускорение заданного кода в многоядерной системе, просто выполнив ее на одноядерном процессоре?
У меня есть доступ к счетчикам производительности (инструкция за каждый цикл, количество промахов кэш-памяти, количество инструкций и т. Д.), И у меня есть только двоичные коды кода.
[Примечание: Я оценил parallel_running_time (T_P) = serial_running_time/N, но эта оценка имеет неприемлемую ошибку]
спасибо
Нет, это невозможно, вы можете не знать производительность многопроцессорности, не запуская его на многопроцессорной машине –
Кстати, по опыту я обнаружил, что отношение нелинейно. Каждый раз, когда вы добавляете ядро, ускорение увеличивается немного меньше. Это больше похоже на отношение n log n. – jean
Что это за «ускорение», о котором вы говорите? Вы имеете в виду расчет максимального ускорения в соответствии с Законом Амдаля (http://en.wikipedia.org/wiki/Amdahl's_law)? –