2016-02-24 6 views
0

Je suis nouveau dans OpenCl. Je me demandais si vous pouviez répondre à ma question suivante.Traitement de données asynchrone

J'ai une file d'attente de paquets de données qui agit comme des files d'attente de routeur. Les paquets arrivent, stockent dans la file d'attente, puis traités par le routeur. Enfin, ils sont insérés dans la file d'attente sortante. J'essaie d'utiliser OpenCl pour traiter les paquets simultanément. Je sais que nous pouvons utiliser les tampons, par exemple, pour transférer des données entre l'hôte et les dispositifs OpenCl. Nous chargeons les tampons avec des données d'entrée/sortie. Ensuite, nous définissons les paramètres du noyau en utilisant ces tampons d'entrée/sortie. Lorsque les noyaux sont exécutés, nous lisons les données des périphériques OpenCl.

Ma question est, comment puis-je écrire/lire un tampon pour chaque paquet de données indépendamment des autres paquets? En d'autres termes, supposons qu'un paquet de données arrive, le routeur doit le traiter sur un dispositif informatique (par exemple le noyau # 1 sur GPU). Puis un autre paquet arrive. Le routeur doit traiter le second paquet sur un dispositif informatique différent (par exemple le noyau n ° 2 sur le GPU). Le traitement de ces deux paquets a lieu simultanément mais de manière asynchrone. Comment cela pourrait-il être implémenté dans OpenCl?

Merci pour votre réponse à l'avance. Cordialement, Alireza.

Répondre

0

Je recommande un tampon en anneau de tampons OpenCL pour contenir vos données entrantes, et lorsque vous les remplissez, les noyaux de mise en file d'attente fonctionnent. Vous n'obtiendrez de bonnes performances que si les noyaux ont des données parallèles sur lesquelles travailler. Même les GPU qui peuvent travailler sur plusieurs noyaux en même temps que ce nombre sont petits (comme peut-être 2). La puissance réelle est le calcul parallèle dans un noyau, sinon votre matériel sera inactif. Pour que les noyaux s'exécutent en parallèle, vous devez utiliser des files d'attente de commandes séparées, car l'utilisation d'une seule file de commande implique une exécution en série (sauf s'il s'agit d'une file d'attente de commandes en désordre).

+0

Merci Dithermaster. –