Не будучи экспертом по производительности / бенчмаркингу, я могу лишь попытаться дать вам несколько общих соображений относительно OpenCL и CUDA.Честное предупреждение, хотя, я могу ошибиться.
Проблема с эталонными тестами, очевидно, заключается в том, что вы можете объективно оценивать только очень конкретные вещи - скажем, одну и ту же программу, выполненную в CUDA и OpenCL, на одном и том же оборудовании (как вы назвали источник).Но вы не сможете сделать вывод из этого эксперимента, что вы получите аналогичные результаты в другой программе или на другом оборудовании.Результаты будут отличаться, поэтому вам понадобится большой набор тестов.Это то, что вы просите, но я не знаю ничего подобного в существовании - люди выберут любую технологию для своих более крупных проектов и не напишут все дважды.
Вот примеры кода NVIDIA, готовов обоих CUDA и OpenCL .Вы можете выбрать несколько и сравнить свои результаты.
Я не думаю, что это было бы хорошо проведенное время.Возможно, вам следует подойти к этой проблеме с другой стороны: что вы можете сделать с одной из платформ, которую вы не можете сделать с другой?Они оба используют одни и те же драйверы, поэтому оба будут поддерживать модные технологии, которые выходят с новым оборудованием.Планирование потоков выполняется аппаратно, поэтому они имеют одинаковую производительность.Остается проверить следующие вещи:
- будет оптимально использовать код для всей доступной пропускной способности памяти
- позволит компилятору создать эффективный код
- вы можете использоватьиз всех вычислительных единиц
- и т. д. *
Из моих тестов ответ на эти вопросы - будет ли мой код оптимально использовать аппаратное обеспечение - да для обеих платформ.Так что они определенно играют в одной лиге, и даже если один из них на 5% быстрее другого для какой-то конкретной проблемы в данный момент, я думаю, что это не будет иметь значения в общем виде.
Я намеренно нене пишите ничего о других случаях использования OpenCL, например, на процессорах.Это поле гораздо шире, поскольку у вас разные ОС, даже разные OpenCL SDK для одних и тех же процессоров (например, Apple и Intel) и множество способов параллельного программирования без OpenCL (для сравнения).