Компилятор создающий самый быстрый код

Тема в разделе "LANGS.C", создана пользователем Llirik, 13 июн 2023.

  1. algent

    algent Member

    Публикаций:
    0
    Регистрация:
    11 апр 2018
    Сообщения:
    101
    А для вас не очевидно, что у вас просто ошибка в коде ?? Возможно совсем простая, по невнимательности.
    Запускайте отладчик и сидите в нём до просветления.
    Это конечно, если "многих циклов по поиску элементов", не есть хрень, которая и ранее, отжирала лишь 1% времени.
     
  2. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    468
    Да, Вы правы. Это математические вычисления, но другие.... я их написал с нуля. Когда эту формулу писал и искал ошибки, чуть мозг не взорвался))
    Оперативки 16 гигов.
    Подскажите, пожалуйста, что и где об этом можно почитать. Я этим вопросом не занимался. Не было необходимости.

    algent, ошибки нет точно иначе формула бы не работала. Я на поиск ошибок потратил около года.
     
  3. algent

    algent Member

    Публикаций:
    0
    Регистрация:
    11 апр 2018
    Сообщения:
    101
    Умножить 12345 на 7, можно 12344 раза прибавив 7. И результат будет правильным. Ну вам виднее.
    --- Сообщение объединено, 21 июн 2023 ---
    И кстати :). А выложите задачку :). Ваше решение не надо, просто саму задачу.
     
    UbIvItS и q2e74 нравится это.
  4. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    468
    Не хочу пока раскрывать карты....
     
  5. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    1.173
    Адрес:
    подполье
    Задачя: найти нёх
    4+(%НЁХ%)=42
     
    q2e74 нравится это.
  6. q2e74

    q2e74 Active Member

    Публикаций:
    0
    Регистрация:
    18 окт 2018
    Сообщения:
    994
    Llirik, срочно читайте сассмана структура и интерпретация (обе книги. компьютерный программ и классической механики) сейчас уже есть на русском. Там люди умудряються большими числами ворочить на одном из самых медленных языков в мире.
    --- Сообщение объединено, 21 июн 2023 ---
    Llirik, знакомые ребята считали газодинамику для турбин, испытывали проблемы, но никаких бесконечных формул не было. Знал математиков, так там были и переходы в другие системы счисления и прикопанные промежуточные результаты, посчитанные другим путём. Активно используют приближения. Служно представить, что там есть места с массой вложенных циклов, которые не допускают разбивки вычислений.

    Вы случайно не пишете какую-нибудь глупость по разматыванию блок-чейна?
    --- Сообщение объединено, 21 июн 2023 ---
    algent,
     
  7. Application

    Application Active Member

    Публикаций:
    1
    Регистрация:
    15 окт 2022
    Сообщения:
    110
    нёх = 2. (с) javascript
    --- Сообщение объединено, 21 июн 2023 ---
    2 + 2 = 22

     
    UbIvItS и TrashGen нравится это.
  8. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    563
    Вроде не оффтоп.
    Сейчас вокруг AVX хайп, да довольно давно.

    Эти инструкции современные компиляторы сами в игровых движках применяют, либо программисты 3д векторы оптимизируют интристиками? Ну да, структура.
    Код (C++):
    1.  
    2. struct {
    3.     double x,y,z;
    4. };
    5.  
    3д вектор сам себя на 4д вектор AVX не натянет. Надо ручкаим делать самому.
    Код (C++):
    1.  
    2. union {
    3.     struct {
    4.       double x,y,z,_;
    5.    };
    6.    __m256  m;
    7. };
    8.  
    Ну а потом самому лично, интистиками делать чудеса оптимизации. Я кстати против AVX512, сделайте лучше 4х АЛУшний поток или хотя бы ядро.
    В общем, несколько лет назад я натянут структуру Fvector для XRayEngine 1.0007 на параллельный SSE, но как-то забросил проект, хотя там почти всё готово.
    Ладно, к чему это я. То есть сам компилятор AVX инструкции не сможет применить на полную мощность, надо всё ручками программировать, ну или воспользоваться библиотеками где это всё есть. Сейчас тестирую свой старый код на Е5450 3ГГц, легендарный Хэон, да я так это слово произношу. И что-то быстро получается, быстрей амудного атлона 2 640. Надо более корректные тесты сделать, я просто по примеру форума методом подсчета тактов rdtsc, это может быть не совсем правильно особенно для интелов, из-за непонятных задержек.
     
  9. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    362
    для годика так 2000го да, но сейчас уже давно все сделано за нас
     
  10. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.124
    в куче случаев - это Ооочень мало :)
    писать алго без понимания принципов оптимазы - дело пустое. ставь гцц, а там https://valgrind.org/
    на компль надейся, а сам не плошай - к примеру, out-of-order execution и оптимальное кэширование компиль из коробки не даст :)
     
  11. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    352
    UbIvItS, к вам как к спецу и фанатику(в хорошем смысле) Линукса (абсолютно без ерничества) такой вопрос:
    Вот вы дали ссылку на https://valgrind.org/, а ведь в Windows аналога нет. Встречались мне и еще кое-какие "тулзы", которых нет в Windows. В связи с этим хотел спросить: если бы у вас была работа связанная с программированием для Windows, стали бы вы заморачиваться и изучать Линукс, ради некоторых программ(отладки, оптимизации и т.п...), которых нет в Windows? Или в этом нет большого смысла и всегда можно найти, что-то подобное/похожее?
     
    Llirik нравится это.
  12. q2e74

    q2e74 Active Member

    Публикаций:
    0
    Регистрация:
    18 окт 2018
    Сообщения:
    994
    GRAFik, для винды есть clang в ключах есть и sanitizer'ы
     
  13. algent

    algent Member

    Публикаций:
    0
    Регистрация:
    11 апр 2018
    Сообщения:
    101
    Llirik, Ваша суперцель, чтобы 90%, лучше 99%, из 10 000 подряд идущих RW, попали в один 8К( или 16К) диапазон адресов. Процессору это очень понравится и он засунет этот диапазон в кэш L1. Неважно если через секунду, другой рабочий диапазон адресов будет на 3Гб в сторону, важен принцип: 95% из тысяч подряд идущих RW, попадают в один 8К( или 16К) диапазон адресов.
     
  14. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    468
    С Интелом пока не получается.... Сейчас собрал Clang`ом из Visual studio. При начале вычислений моя прога ушла в несознанку) (скорее всего в какой-то бесконечный цикл. ещё не смотрел под отладчиком), хотя при сборке стандартным компилятором Visual studio, а уж тем более Билдером никаких бесконечных циклов и в помине нет, а это место проходится за наносекунды, если не за её долю, т.к. до основных дебрей ещё очень далеко
    --- Сообщение объединено, 22 июн 2023 ---
    А вот в дебаг-сборке работает (чуть медленнее, чем сборка Билдера)
     
  15. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    352
    Ну это примерно, равноценно совету - переходите на C#(си шарп) и будет вам Щастье. :)
     
  16. R81...

    R81... Active Member

    Публикаций:
    0
    Регистрация:
    1 фев 2020
    Сообщения:
    142
    Последнее в вашей заявке сильнее 1-го ядра процессора.
    Поддержу Intro: "Компилятор создающий самый быстрый код" - пока еще человек. Для этого алгоритм может создаваться в инструкциях процессора, а не языка компилятора.
     
    algent нравится это.
  17. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    468
    R81..., У меня 4 ядра. Инструкции для процессора у меня в другой функции и на её скорость я не жалуюсь, а в этой только +, - работающие только с целыми положительными числами, работа с указателями и море if, whihe и есть даже goto. Так какие ещё инструкции для процессора тут нужны?
     
  18. algent

    algent Member

    Публикаций:
    0
    Регистрация:
    11 апр 2018
    Сообщения:
    101
    rdtsc не является сериализирующей инструкцией. Используйте перед ней mfence или cpuid. Но из-за store буфера, кэша, конвейера, не стоит рассчитывать на высокую точность. Точности там и нет, есть очень высокая гибкость системы.
     
  19. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    468
    Подскажите, пожалуйста, хотя бы как создать длл или статическую либ из командной строки OneApi. Пробую так:
    Ругается:
    . Добавляю: /SUBSYSTEM:WINDOWS , выдаёт:
    --- Сообщение объединено, 24 июн 2023 ---
    И почему obj создаётся не в папке проекта, а в какой-то временной папке которую не найти?
     
  20. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.124
    линь - это корявый ИПО (инфраструктурное ПО), а вынька - комерс продукт с заточкой под конечного юзверя(офис/мультимедиа/гамисы).. то бишь цели разные и соответственно имеются различия в инструментарии. если крапаешь прожки для всяких там дизайнеров/музыкантов/итд-тп, то оптимизация софтинки идёт из ФАКта несовершенства чел уха/глаза. другой же Вопрос, когда нужна РЕАЛЬНАЯ производительность, и вот тут с вынькой ПЛОХО. :)