16+
Пятница
23 июня
Вход |Карта сайта | |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

Средства и методы разработки

 
   Новая тема Правила Регистрация Поиск »» Архив
Вернуться в конференциюТопик полностью
Ксения  (28.02.2017 12:12) , в ответ на Загрузить ресурсы на 100% очень сложно. Может быть в каких-то синтетических тестах. В реальной жизни префетч срабатывает не со 100% точностью, и как минимум приходится ждать данные из памяти. И вероятность того, что пока один поток ждёт память, автор: =AlexD=
А у меня впечатление, что ресурсы исчерпываются очень быстро. 
Помните наш разговор, где я про число тактов и латентность спрашивала? Так вот я последовала вашему совету, перейти от теоретических расчетов к практическому измерению скорости выполнения. Результат оказался весьма неожиданным - цикл, состоящий из 3-х FPU операций и 2-х целочисленных операций зацикливания (декремент счетчика + условный переход) занял всего 3 такта! Т.е. сам цикл на ассемблере совершал 500 оборотов, а снаружи эту функцию крутил цикл for на С++ один миллион раз. Тем самым, внутренний цикл выполнялся за время теста пол миллиарда раз, затем я это время делила на пол миллиарда и умножала на частоту процессора. Результат 3 такта на оборот позволяет думать, что именно эти 3 FPU-операции и потребляют основное время, тогда как остальные издержки заметного влияния на результат не оказывают, поскольку повторяются гораздо меньшее число раз. А если так, то именно эти 3 FPU-операции занимают основное время теста, фактически не позволяя FPU ни простаивать, ни совмещать работу на стороне. Обращаю внимание, что мой тест не произволен, т.к. в практическом плане все алгебраические вычисления на матрицах повисают на на одной и той же паре операций. Это dot (скалярное произведение двух векторов - умножение со сложением в цикле) и axpy (вычитание из одного вектора второго, умноженного на коэффициент - умножение с вычитанием в цикле). В вычислительном плане dot и axpy эквивалентны - состоят из одного и того же числа операций. А мой тест - это реализация функции dot. Отсюда и мое столь пристальное внимание к ассемблеру, т.к. вычислительная производительность в основном зависит только от того, насколько аккуратно будут написаны эти две функции.
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7525 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXVII