ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
24 апреля
735636 Топик полностью
Ксения (12.02.2017 05:55 - 05:58, просмотров: 211) ответил Evgeny_CD на Теоретики решили выпендриться, и на момент принятия решения внутри AMD у них была сильная крыша. Классика жанра!
Кажется, я поняла, зачем это сделали. https://www.pcper.com/images/reviews/272/sm2-dgemm.gif
Соревнования процессоров по части скорости арифметики с плавающей точкой обычно происходят на тесте из пакета матричной алгебры, когда вычисляются "бенчмарки", дающие преимущество то одному, то другому процессору. В самом деле, а где еще взять тест на интенсивную арифметику с плавающей точкой? - Только здесь! Тогда как для оценки других параметров производительности существуют другие тесты (например, на популярных компьютерных играх). Ну, а конкретно обычно гоняют тест по функции GEMM (General Matrix Multiplication), которая в своем double-варианте называетcя DGEMM. Типичный пример сравнения процессоров: https://www.pcper. …iews/272/sm2-dgemm.gif По той же причине бодание между Intel и AMD тоже идет именно по этому тесту, т.к. прочие тесты производительность по флоат-арифметике правильно оценить не могут, поскольку в прочих программах она используется изредка. К несчастью, функция GEMM написана вычурно - она не просто перемножает две матрицы, как это обычно требуется: Result = Matrix1 * Matrix2. а еще и прибавляет к ней третью матрицу, умноженную на скалярный коэффициент. Вот так: Result = Matrix1 * Matrix2 + Coeff * Matrix3. Такая же ерунда имеет место и в функции умножения матрицы на вектор - только там прибавляется не матрица, а вектор, умноженный на коэффициент. Такова уж особенность алгебраических пакетов, что там многие функции сделаны "на вырост", чтобы минимизировать общее число функций в пакете. Меня в свое время это ужасно злило, т.к. из-за таких добавок найти нужную функцию было не просто, но потом (когда большинство из них запомнила) привыкла и поняла, что функция GEMM для работы вполне годится, если выставить ей в параметрах нуль вместо коэффициента и нулевой поинтер в качестве третьей матрицы. Однако если гонять тест GEMM по полной (т.е. вкупе со сложением с третьей матрицей), то тут та самая нелепая FMA4 как раз и даст преимущество, т.к. благодаря 4-м аргументам, способна выполнить умножение сопряженное со сложением третьего члена, одной командой: Reg0 = Reg0 + Reg1 * Reg2 + Reg3 Т.е. я полагаю, что AMD пошла на вариант FMA4 только затем, чтобы получить избыточные бенчмарки на DGEMM-тесте.