ideas icon indicating copy to clipboard operation
ideas copied to clipboard

Поддержка run-time-cpu-dispatch

Open ilnurkh opened this issue 4 years ago • 0 comments

<Описание вашей идеи> Есть проблема - что сложно делать несколько реализаций (напирмер под sse-vs-avx) одной и той же функции. Было бы здорово уметь сказать комплияторо-линковщику:

  1. есть определяемая на старте функция
  2. вот список реализаций
  3. вот эта функция на старте (либо лениво?) выберет конечную реализацию

Главное что хочется - чтобы вызывающий код вызывал фиксированный символ, а указатель туда бы подставился прозрачно. Цель - минимизация расходов на runtim-cpu-dispatching

Заодно это поднимает вопрос чтобы в стандарте появились какие-нибудь std::cpu::have_avx512() а так constexpr варианты, а также функции или макросы std::cpu::can_have_avx512() (означает что запуск возможен на платформе с этим флагом), при std::cpu::can_have_avx512() == false гарантируется что ни один translation-unit не будет собран с -mavx512

<Примеры, где ваша идея будет полезна. Чем больше примеров и чем большую аудиторию они охватывают - тем лучше> Везде будет полезна

<Код c реализацией вашей идеи, если есть>

Полезные ссылки:

  • https://quick-bench.com/ - онлайн бенчмарк, поможет вам продемонстрировать эффективность вашего подхода
  • https://godbolt.org/ - онлайн дизассемблер
  • https://eel.is/c++draft/ - черновик стандарта C++ с возможностью ссылаться на конкретные параграфы
  • https://wg21.link/ - универсальная ссылка на международные proposal или баги в С++, например https://wg21.link/P1000 ссылается на документ P1000, а https://wg21.link/cwg100 на 100 баг в ядре языка

ilnurkh avatar Jul 25 '21 10:07 ilnurkh