ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
24 апреля
737906 Топик полностью
Ксения (20.02.2017 04:41 - 05:06, просмотров: 250) ответил Evgeny_CD на Ксения, просьба раскритиковать в части количества AVX блоков и их растактовки.
К сожалению, я слишком плохо представляю возможности FPGA по части вычислений с плавающей точкой, чтобы мои оценки имели какой-то вес. Тем не менее, ваши пункты я прокомментирую. Таблица. Из нее мне неясно, где кончаются строки, относящиеся к FPGA, и начинаются те, что относятся к процессорам. После слова "Процессор" это очевидно, но после "Данные Intel - производительность FPU SP, MFLOPS" возникает неясность, т.к. Intel нынче имеет отношение и к тому, и к другому. > 1. У FPGA для реализации DP надо брать 4 блока DSP. Я считал, что тактовая при этом не упадет, но это почти наверняка не так. Эффективность FPGA в части DP за счет этих /4 падает очень сильно. То, что тут требуется 4 блока, не удивляет, т.к. AVX-регистр как раз эквивалентен 4-м DP, идущим подряд. Однако сильно удивляет, отчего при этом в 4 раза падает производительность? Что мешает всем этим 4-ем блокам работать параллельно/синхронно, раз уж их 4 штуки? Вот если бы блок был всего один и обслуживал 4 DP по очереди, то тогда бы это не вызывало удивления, а тут 4 блока не хотят работать одновременно, да еще и в FPGA - удивительно! > 2. Приводимых Интелом циферок по FPU перфомансу я не получил, однако понял, что они считали, приравнивая MAC к двум SP FPU операциям. > 3. Я везде считал MAC как одну операцию, кроме оговоренной строки. Мне тоже это странно. Если операция MAC (FMA) занимает столько же тактов, сколько операции умножения и сложения вместе взятые, то зачем она нужна??? > 4. Мне сейчас лень искать, сколько AVX блоков в каждом ядре интела, и я считал, что блок 1, как следствие HT ничего не даст. Пишут, что два на каждое ядро (невиртуальное): "The 256-bit AVX vector units in the Ivy Bridge core can do eight double-precision floating point calculations per clock cycle via two AVX units per core" - https://www.hpcwir …-hpc-niche-xeon-e7-v2/ "It has two 256-bit floating-point AVX units per core (one MUL, one ADD)" - https://forums.ana …500k-at-stock.2270567/ Однако в MKL-библиотеке рекомендуют заказывать число потоков равным числу ядер, т.е на практике выглядит, как один AVX-блок на ядро. > 5. Получилось, что ~80 SP FPU MFLOPS/$ - это некий инвариант для адекватных FPGA Xeon - E5. Причем, при росте тактовой более быстрые варинты Arria 10 имеют большую FPU производительность, но 80 SP FPU MFLOPS/$ не меняется!!!! No comments > 6. DP FPU - это не то, для чего нужно использовать современные FPGA. Видно, что CPU эффективнее в 2 раза по MFLOPS/$. DP FPU в FPGA - это редкое ислючение для особых случаев. Так обращать матрицы на FPGA нам не светит. 7. Все эти расчеты весьма далеки от практики - MAC сделать это хорошо, а вот данные оттащить/притащить - это совсем другое дело. И это единственное, в чем FPGA за счет большого количества внутренней памяти и большого ресурса коммутации может превзойти CPU. Если это удастся закодить. Также быстрый IO, который в мире ПК ограничен только PCIe x 16, в мире FPGA может быт кратно быстрее. Но чтобы выжать производительность из Xeon - тоже очень много и очень сложно кодить надо. Выжимать производительность из Xeon, как раз, несложно - достаточно разделить работу между ядрами. Библиотечные функции умножения на матрицу сами это делают (стараются множить разные строки параллельно на разных ядрах), если разрешить, при поддержке OpenMP (Open Multi-Processing), входящей в состав MS VS. А вот по части FPGA сказать не берусь. На вскидку здесь видна проблема связи с памятью, т.к. у процессора связь с памятью быстрее и есть ее кэширование, тогда как FPGA связана с памятью через более медленную PCI-шину, а кэширования, скорее всего, нет. Кроме того, неясно, как CPU узнает, что FPGA закончила свою работу? Периодически ее опрашивает? – Тогда возникнут задержки из-за необходимости синхронизации. А иначе, в FPGA надо заливать какой-то программный код на какое-то число шагов вперед, чтобы она делала не одну операцию, а сразу несколько – тогда необходимость синхронизации с CPU уже перестанет выглядеть столь накладно. И вот еще что. Если предположить, что FPGA возможно запрограммировать/прошить так, что ее производительность по арифметике с плавающей точкой превысит возможности центрального процессора, то что мешает сделать сам этот процессор по той же архитектуре, которую придали FPGA? Ибо FPGA допустимо рассматривать, как логический конструктор, но то, что создано из деталей конструктора, ничто не мешает "отлить в бронзе". Причем такая отливка всегда окажется дешевле.