Я хочу сравнить производительность одноядерного процессора и многоядерного процессора. Я написал программу и пропустил ее 1000 раз на одноядерном процессоре, чтобы увидеть время работы. В многоядерном случае я использовал OpenCL для запуска ядра, где код был таким же, как и внутри итерации в первом случае.Программа OpenCL работает на CPU
Рассматриваемый многоядерный процессор может запускать 8 параллельных потоков, теоретически, время работы многоядерного корпуса должно быть выше T (одноядерный)/8. Но результат состоит в том, что T (многоядерный) составляет почти 1/20 от T (одноядерный).
Интересно, почему это происходит? Разработал ли OpenCL-компилятор некоторую оптимизацию для многоядерного процессора?
Какой это код? Как была скомпилирована программа (например, флаги оптимизации)? – jprice
Лучше использовать OpenMP для сравнения производительности одного/нескольких ядер. Он очень прост в использовании, и он выполняет точно такой же код сборки. – stgatilov