Большинство попыток построения «буквальной» нейронной сети на ПЛИС очень быстро выходят за пределы маршрутизации. Вы можете получить несколько сотен ячеек, прежде чем извлечение P & R займет больше времени, чем ваша проблема, которую стоит ждать. В большинстве исследований NN и FPGA используется этот подход, концентрирующийся на минимальной реализации «узла» и предполагающий, что масштабирование теперь тривиально.
Чтобы заставить нейронную сеть разумного размера действительно работать, можно использовать FPGA для создания выделенной машины для вычисления числа нейронных сетей. Получите ваши начальные значения узлов в микросхеме памяти, предоставьте второй чип памяти для ваших следующих результатов временной метки и третью область для хранения ваших весов подключения. Прокачивайте значения узлов и данные соединения, используя методы для поддержания насыщенности шин памяти (порядок загрузки узлов по линии CAS, упреждающее чтение с использованием конвейеров). Потребуется большое количество проходов по предыдущему набору данных, когда вы сопоставите веса с предыдущими значениями, проведете их через модули DSP MAC, чтобы оценить веса новых узлов, а затем вытолкните в область памяти результатов после того, как все соединения оценены. После завершения всего временного шага измените направление потока на обратное, чтобы следующий временной шаг записал обратно в исходную область хранения.