16 research outputs found
Implementation of FIR filters for fast multi-channel processing
Digital signal processors are ubiquitous in electronics, with applications ranging from sound processing to software-defined radio. Finite impulse response (FIR) filters are among the components that are used for the processing; the implementation is tailored to the user’s needs, whether they specifically need performance or configurability. Handling numerous channels in a single filter block can be achieved in hardware by running multiple filters in parallels, with a high space expense and controller overhead. This project proposes and discusses an implementation template for a pipeline that simultaneously processes a desired number of channels, while keeping coefficients configurability. The implementation we propose is economic in terms of area while meeting the theoretical timing requirements to process long filters
Hardware And Software For Reproducible Research In Audio Array Signal Processing
In our demo, we present two hardware platforms for prototyping audio array signal processing. Pyramic is a 48-channel microphone array fitted on an FPGA and Compact Six is a portable microphone array with six microphones, closer to the technical constraints of consumer electronics. A browser based interface was developed that allows the user to interact with the audio stream from the arrays in real time. The software component of this demo is a Python module with implementations of basic audio signal processing blocks and popular techniques like STFT, beamforming, and DoA. Both the hardware design files and the software are open source and freely shared. As part of a collaboration with IBM Research, their beamforming and imaging technologies will also be portrayed. The hardware will be demonstrated through an installation processing the microphone signals into light patterns on a circular LED array. The demo will be interactive and let visitors play with different algorithms for DoA (SRP, FRIDA [1], Bluebild) and beamforming (MVDR, Flexibeam [2]). The availability of an open platform with reference implementations encourages reproducible research and minimizes setup-time when testing and benchmarking new audio array signal processing algorithms. It can also serve as a useful educational tool, providing a means to work with real-life signals
Dérivation automatique d'allocations mémoire pour l'accélération de programmes dans le modèle polyédrique
As processors compute power keeps increasing, so do their demands in memory accesses: some computations will require a higher bandwidth and exhibit regular memory access patterns, others will require a lower access latency and exhibit random access patterns. To cope with all demands, memory technologies are becoming diverse. It is then necessary to adapt both programs and hardware accelerators to the memory technology they use. Notably, memory access patterns and memory layouts have to be optimized. Manual optimization can be extremely tedious and does not scale to a large number of processors and memories, where automation becomes necessary. In this Ph.D dissertation, we suggest several automated methods to derive data layouts from programs, notably for FPGA accelerators. We focus on getting the best throughput from high-latency, high-bandwidth memories and, for all kinds of memories, the lowest redundancy while preserving contiguity. To this effect, we introduce mathematical analyses to partition the data flow of a program with uniform and affine dependence patterns, propose memory layouts and automation techniques to get optimized FPGA accelerators.À mesure que les processeurs gagnent en puissance de calcul, leurs demandes en accès mémoire s'accroissent de différentes manières : certains calculs exigent une latence faible pour des accès aléatoires, d'autres un débit important et des accès réguliers. Pour répondre à cette demande, les architectures et technologies mémoire se diversifient. Il est alors nécessaire que les programmes et les accélérateurs qui les exécutent s'adaptent pour effectuer des accès de faible latence et de haut débit; notamment, sont à adapter la suite des accès en mémoire et la disposition des données. Si ces tâches sont réalisables manuellement, leur automatisation épargne au développeur d'avoir à les rechercher. Dans cette thèse, on propose plusieurs méthodes automatisées de disposition des données pour des accélérateurs FPGA. Pour des mémoires à haut débit et haute latence d'accès, on cherche à maximiser l'utilisation de la bande passante; pour des mémoires à plus faible débit, on minimise la quantité d'accès non valorisés en préservant la contiguité. On introduit à cet effet des analyses mathématiques, des allocations de mémoires spécifiques ainsi que des transformations automatisées de programme pour obtenir des accélérateurs FPGA optimisés
Extension board for CycloneV : Multi microphone acquisition - Signal Analysis (Extending the Pyramic Array)
The Pyramic architecture is a flexible 48-microphone array mounted on a powerful FPGA-SoC system. It allows to do massively multi-channel audio processing in real-time. This project implements an extension to the original system. In the original system, audio output is not allowed from the hardware processor system of the SoC, thus we cannot perform simultaneous capture and output. We implemented this through the design of an audio output controller, as well as a library (libpyramicio) that drives the capture and output from the software part and makes it easy for application developers to create algorithms that run on the Pyramic array
Dérivation automatique d'allocations mémoire pour l'accélération de programmes dans le modèle polyédrique
À mesure que les processeurs gagnent en puissance de calcul, leurs demandes en accès mémoire s'accroissent de différentes manières : certains calculs exigent une latence faible pour des accès aléatoires, d'autres un débit important et des accès réguliers. Pour répondre à cette demande, les architectures et technologies mémoire se diversifient. Il est alors nécessaire que les programmes et les accélérateurs qui les exécutent s'adaptent pour effectuer des accès de faible latence et de haut débit; notamment, sont à adapter la suite des accès en mémoire et la disposition des données. Si ces tâches sont réalisables manuellement, leur automatisation épargne au développeur d'avoir à les rechercher. Dans cette thèse, on propose plusieurs méthodes automatisées de disposition des données pour des accélérateurs FPGA. Pour des mémoires à haut débit et haute latence d'accès, on cherche à maximiser l'utilisation de la bande passante; pour des mémoires à plus faible débit, on minimise la quantité d'accès non valorisés en préservant la contiguité. On introduit à cet effet des analyses mathématiques, des allocations de mémoires spécifiques ainsi que des transformations automatisées de programme pour obtenir des accélérateurs FPGA optimisés.As processors compute power keeps increasing, so do their demands in memory accesses: some computations will require a higher bandwidth and exhibit regular memory access patterns, others will require a lower access latency and exhibit random access patterns. To cope with all demands, memory technologies are becoming diverse. It is then necessary to adapt both programs and hardware accelerators to the memory technology they use. Notably, memory access patterns and memory layouts have to be optimized. Manual optimization can be extremely tedious and does not scale to a large number of processors and memories, where automation becomes necessary. In this Ph.D dissertation, we suggest several automated methods to derive data layouts from programs, notably for FPGA accelerators. We focus on getting the best throughput from high-latency, high-bandwidth memories and, for all kinds of memories, the lowest redundancy while preserving contiguity. To this effect, we introduce mathematical analyses to partition the data flow of a program with uniform and affine dependence patterns, propose memory layouts and automation techniques to get optimized FPGA accelerators
Dérivation automatique d'allocations mémoire pour l'accélération de programmes dans le modèle polyédrique
As processors compute power keeps increasing, so do their demands in memory accesses: some computations will require a higher bandwidth and exhibit regular memory access patterns, others will require a lower access latency and exhibit random access patterns. To cope with all demands, memory technologies are becoming diverse. It is then necessary to adapt both programs and hardware accelerators to the memory technology they use. Notably, memory access patterns and memory layouts have to be optimized. Manual optimization can be extremely tedious and does not scale to a large number of processors and memories, where automation becomes necessary. In this Ph.D dissertation, we suggest several automated methods to derive data layouts from programs, notably for FPGA accelerators. We focus on getting the best throughput from high-latency, high-bandwidth memories and, for all kinds of memories, the lowest redundancy while preserving contiguity. To this effect, we introduce mathematical analyses to partition the data flow of a program with uniform and affine dependence patterns, propose memory layouts and automation techniques to get optimized FPGA accelerators.À mesure que les processeurs gagnent en puissance de calcul, leurs demandes en accès mémoire s'accroissent de différentes manières : certains calculs exigent une latence faible pour des accès aléatoires, d'autres un débit important et des accès réguliers. Pour répondre à cette demande, les architectures et technologies mémoire se diversifient. Il est alors nécessaire que les programmes et les accélérateurs qui les exécutent s'adaptent pour effectuer des accès de faible latence et de haut débit; notamment, sont à adapter la suite des accès en mémoire et la disposition des données. Si ces tâches sont réalisables manuellement, leur automatisation épargne au développeur d'avoir à les rechercher. Dans cette thèse, on propose plusieurs méthodes automatisées de disposition des données pour des accélérateurs FPGA. Pour des mémoires à haut débit et haute latence d'accès, on cherche à maximiser l'utilisation de la bande passante; pour des mémoires à plus faible débit, on minimise la quantité d'accès non valorisés en préservant la contiguité. On introduit à cet effet des analyses mathématiques, des allocations de mémoires spécifiques ainsi que des transformations automatisées de programme pour obtenir des accélérateurs FPGA optimisés
Dérivation automatique d'allocations mémoire pour l'accélération de programmes dans le modèle polyédrique
As processors compute power keeps increasing, so do their demands in memory accesses: some computations will require a higher bandwidth and exhibit regular memory access patterns, others will require a lower access latency and exhibit random access patterns. To cope with all demands, memory technologies are becoming diverse. It is then necessary to adapt both programs and hardware accelerators to the memory technology they use. Notably, memory access patterns and memory layouts have to be optimized. Manual optimization can be extremely tedious and does not scale to a large number of processors and memories, where automation becomes necessary. In this Ph.D dissertation, we suggest several automated methods to derive data layouts from programs, notably for FPGA accelerators. We focus on getting the best throughput from high-latency, high-bandwidth memories and, for all kinds of memories, the lowest redundancy while preserving contiguity. To this effect, we introduce mathematical analyses to partition the data flow of a program with uniform and affine dependence patterns, propose memory layouts and automation techniques to get optimized FPGA accelerators.À mesure que les processeurs gagnent en puissance de calcul, leurs demandes en accès mémoire s'accroissent de différentes manières : certains calculs exigent une latence faible pour des accès aléatoires, d'autres un débit important et des accès réguliers. Pour répondre à cette demande, les architectures et technologies mémoire se diversifient. Il est alors nécessaire que les programmes et les accélérateurs qui les exécutent s'adaptent pour effectuer des accès de faible latence et de haut débit; notamment, sont à adapter la suite des accès en mémoire et la disposition des données. Si ces tâches sont réalisables manuellement, leur automatisation épargne au développeur d'avoir à les rechercher. Dans cette thèse, on propose plusieurs méthodes automatisées de disposition des données pour des accélérateurs FPGA. Pour des mémoires à haut débit et haute latence d'accès, on cherche à maximiser l'utilisation de la bande passante; pour des mémoires à plus faible débit, on minimise la quantité d'accès non valorisés en préservant la contiguité. On introduit à cet effet des analyses mathématiques, des allocations de mémoires spécifiques ainsi que des transformations automatisées de programme pour obtenir des accélérateurs FPGA optimisés
Maximal Atomic irRedundant Sets: a Usage-based Dataflow Partitioning Algorithm
International audiencePrograms admitting a polyhedral representation can be transformed in many ways for locality and parallelism, notably loop tiling. Data flow analysis can then compute dependence relations between iterations and between tiles. When tiling is applied, certain iteration-wise dependences cross tile boundaries, creating the need for inter-tile data communication. Previous work computes it as the flow-in and flow-out sets of iteration tiles. In this paper, we propose a partitioning of the flow-out of a tile into the maximal sets of iterations that are entirely consumed and incur no redundant storage or transfer. The computation is described as an algorithm and performed on a selection of polyhedral programs. We then suggest possible applications of this decomposition in compression and memory allocation
Maximal Atomic irRedundant Sets: a Usage-based Dataflow Partitioning Algorithm
International audiencePrograms admitting a polyhedral representation can be transformed in many ways for locality and parallelism, notably loop tiling. Data flow analysis can then compute dependence relations between iterations and between tiles. When tiling is applied, certain iteration-wise dependences cross tile boundaries, creating the need for inter-tile data communication. Previous work computes it as the flow-in and flow-out sets of iteration tiles. In this paper, we propose a partitioning of the flow-out of a tile into the maximal sets of iterations that are entirely consumed and incur no redundant storage or transfer. The computation is described as an algorithm and performed on a selection of polyhedral programs. We then suggest possible applications of this decomposition in compression and memory allocation
Increasing FPGA Accelerators Memory Bandwidth with a Burst-Friendly Memory Layout
International audienc