Как можно получить данные о быстродействии кеш CPU?
Здравствуйте! Производители процессоров предоставляют данные о размерах регистров и кеш памяти 3 уровней. Но данных о времени доступа в тактах я не нашел. Можно было бы написать тесты, но хотелось получить данные от производителей. Помогите, кто знает.
Это все работало и предсказывалось где-то до 386 процессора. У более современных машин с суперскалярной архитектурой и программно управляемым транслятором команд, это выливается в большое количество вариантов, буквально зависит от версии микрокода (который загружается в CPU динамически)
спасибо. именно в этом я и пытаюсь разобраться. я задавал здесь вопрос есть ли команды работы с кеш. но никто не ответил. язнаю что современные процессоры очень эффективно используют кеш, но всетаки вручную оптимизированная программа под конкретный алгорим может быть эффекьтивной. возможна ли разработка такой проогшраммы?
Фокс Йовович, я выяснил что среднее быстродействие обращения к ram сильно зависит размера выборки видел тесты
1 как сделать чтобы cpu выбрал в кеш большой массив из ram?
2 всетаки общий вопрос. есть ли команды работы с кеш и регистрами. этот тнужно для оптимизации различных алгоритмов. нейронные сети цифровая фильтрация разложение уолша хаара и тд
Вопрос общий потому что задача касается многих алгоритмов
1 доступ к кеш и регистрами позволити получить максимальное быстродействие
2:но даже знание как используется кеш позволит сильно ускорить
ehevnlem, есть ассемблерные подсказки, помогающие процессору лучше оптимизировать обращение к кэшу.
"Команды для работы с регистрами". Ну да, они есть, их много. MMX, SSE, AVX - все эти семейства команд работают с регистрами. И в каждом - порядка сотен инструкций.
Хорошо настроенный компилятор C, C++, фортрана дает быстрый код, который выжимает из процессора максимум. Кроме того, большинство ваших хотелок уже реализовано в виде библиотек и соревноваться с ними - гиблое дело, вам понадобится несколько лет обучения чтобы хотя бы повторить по скорости MKL или ATLAS (кстати, последняя имеет открытые исходники и хорошо оптимизирует работу с кэшем).
Можете также поучиться ассемблеру у компилятора - пишете простое умножение матриц, включаете оптимизацию на максимум -03 и погружаетесь в листинг. Там вы увидите и инструкции AVX, работающие с регистрами, и команды на предвыборку из кэша.
Отлично. Это то что надо. Попробую поработать с оптимизацией, в порядке развлечения. Например tensorflow самый популярный пакет для нейронных сетей написан на python. Попробую ускорить, там надо изменить десяток строк кода
ehevnlem, тяжелые вычислительные части там написаны на C++ и CUDA. Маловероятно, что поменяв в питоньем коде 10 строчек вы чего-то добьетесь и ничего не сломаете.
ehevnlem, мой вам добрый совет - сначала запрограммируйте обычное умножение матриц 64к*64к, хотя бы по порядку времени похожее на то, что делает MKL. Этой задачи как раз достаточно для тотального погружения во все аспекты HPC и оптимизацию вычислений.
Кстати, самый большой выигрыш у умножении матриц дает не использование злых инструкций процессора, а алгоритм Штрассена.
А потом уже пытайтесь сделать убийцу TensorFlow и прочие достижения науки.
Я занимаюсь трейдом. Пока хватает вычислительных ресурсов, но уже думаю об оптимизации.. Нейронные сети iir fir filters, haar walsh.все больше думаю что с CPU надо завязывать. Все задачи для GPU годятся
После общения с вами мой подход сменился. Раньше меня беспокоила ram а сейчас думаю пустить работу ram фоном, а процессоры пока считают. Те все определится скорость счета. Ваше мнение?
Думаю что получится. Прога очень маленькая а данные можно обновлять. Арифметику надо ускорять по возможности снижая разрядность данных. И спасибо. Сделаю покажу