Les algorithmes biométriques à l'ère de l'informatique parallèle

10/05/2013
Compartir!

Traditionnellement, l'industrie des semi-conducteurs a été capable d'augmenter la vitesse d'horloge de dispositifs informatiques, tout en doublant le nombre de transitoires à chaque nouvelle génération. Malheureusement, en raison de contraintes de puissance, la croissance de la fréquence d'horloge calée dans la dernière décennie et les principaux fabricants de microprocesseurs commutent leurs portefeuilles de produits aux architectures diverses. Les GPU modernes vont même plus loin et intègrent actuellement des centaines de cœurs simples à un budget de puissance raisonnable. De ce fait, les entreprises de logiciels ont eu du mal à s'adapter et à cartographier les algorithmes de séquentielles traditionnelles qui ont été conçus pour une exécution en série de ces nouveaux dispositifs. Cette tâche de parallélisation n’est pas aussi facile qu'on pourrait le croire. Généralement, les humains ont tendance à penser naturellement à leurs actions de façon séquentielle. Êtes-vous capable d'envisager rapidement des centaines d'actions simultanées (certains d'entre eux, même avec des interdépendances) en parallèle? La plupart des meilleurs esprits et des programmeurs dans le monde ne le sont pas. Et cela est raisonnable. Dans notre vie quotidienne, nous avons tendance à être submergé au travail si nous devons composer avec neuf ou dix choses importantes dans le même temps. Mais pour les choses simples, il semble que notre cerveau n'a pas été conçu pour faire face à multitâche. Les plus de tâches que nous entendons faire en parallèle (par exemple, répondre à un e-mail tout en prenant un appel téléphonique), le plus probable que nous provoquons une erreur due à une attention insuffisante. Voilà la raison pour laquelle l'écriture optimisée et le code parallèle évolutive qui vise des dispositifs tels que les GPU est un processus long et fastidieux. L’écriture de code pour ces architectures est généralement sujette aux erreurs et difficile à déboguer. Il n’est pas rare de passer mois à écrire du code parallèle efficace pour une opération de noyau particulier dont la version sérialisée pourrait facilement être programmé et testé dans quelques jours.

Dans cette nouvelle ère de l'informatique parallèle, si une entreprise veut libérer un produit logiciel qui exploite pleinement les capacités des derniers matériels parallèles disponibles sur le marché, elle a certainement investit plus d'argent et de ressources qu'ils ont été tenus dans le passé. Nous à Herta Security avons commencé à adopter la parallélisation depuis le début dans nos produits, et nous avons vite rendu compte que les algorithmes biométriques peuvent grandement bénéficier de parallélisation grain fin et des calculs vectoriels des données parallèles. Les étages multiples du pipeline traditionnel biométrique tel que le processus d'extraction de caractéristiques est intrinsèquement parallèle. Cependant, la complexité des schémas de certaines fonctions d'accès au mémoire font stratégies telles que la réutilisation des données, la mise en cache et le rechargement difficile. Avec l'avènement de calcul par le GPU, le programmeur doit maintenant faire face à des millions de faits simultanés, les synchroniser et exploiter efficacement l'architecture de cache hétérogène de ces dispositifs afin de réduire la latence autant que possible. Même si ces tâches sont de temps à partir d'une perspective de recherche et de développement, ils nous permettent d'offrir des produits de qualité qui évoluent bien avec les dernières avancées dans le matériel tout en offrant une expérience d’utilisateur imbattable.