tsp-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE : [Tsp-devel] reverse blackboard


From: TSP
Subject: RE : [Tsp-devel] reverse blackboard
Date: Wed, 5 Oct 2005 15:46:47 +0200

Salut Éric.


Je te fait un petit reflet de ma con-préhension pour que tu me corriges au
cas échéant.
============================================================================
===========
Si je comprends bien avec ton reverse BB je peux faire un cas simple du
genre :
- Avoir un programme à moi (genre simulateur) qui déclare/alloue ses
variables comme il le veut ( static int
gros_tableau_a_la_windaube[0x10000000]:=) .
- Ensuite pour distribuer il n'a qu'à appeler à l'init de son process
bb_reverse_publish de toutes ses variables (il se fout de l'adresse de
retour)
- Enfin à chaque step, il appelle bb_reverse_update avant bb_synchro.


Si maintenant j'ai beaucoup de variables et je veux optimiser la recopie du
bb_reverse_update je dois faire pareil pour l'init mais changer mon step
- J'appel bb_reverse_return_update au cas ou il y ait eu un bb_write
- Ensuite j'appelle bb_reverse_foward_update avant bb_synchro.
Et c'est la touille du champ asked qui ne fait la recopie de la variable que
si quelqu'un la demandée.
============================================================================
===========

Cela m'a l'air super efficace comme architecture.
Le seul truc que je ne comprends pas, c'est pourquoi tu a besoin d'une
message queue pour mettre à jour les flags asked depuis le bb_tsp_provider ?
Il peut pas taper directement dans la structure ? Ou alors j'ai rien compris
avant, et tu veux la message queue pour indiquer les variables qui ont été
modifiées, et non pas demandées.

Y++



-----Original Message-----
From: Eric NOULARD [mailto:address@hidden
Sent: Tuesday, October 04, 2005 10:19 AM
To: Devel TSP
Subject: [Tsp-devel] reverse blackboard


Je joins ci-après un mail sur une idée
discutée en privée mais que j'aimerais laissée sur
la liste pour la référencer dans une tâche projet.
>>>>

Créer un "reverse Blackboard" avec un reverse BB je peux faire

int localvar;
int* bbvar;

bbvar = bb_reverse_publish(&myreversebb, &localvar, BB_INT, "localvar")

cette publication inversée va publier une variable
du blackboard appelée "localvar" qui sera 'attachée' au sein du
reverse BB à l'adresse (locale au process qui publie)
de la variable localvar.
(ces publications sont éventuellement générées par un parseur de .h)

ensuite avant le bb_synchro et à chaque cycle on fera
[dans le process qui a fait le publish]

bb_reverse_update(&myreversebb)

ce qui provoquera la copie *bbvar = localvar (ou memcpy(bbvar,&localvar)
ce qu'on peut faire facilement car on a mémorisé l'@ de localvar.

Jusque là ca va mais ça coutera cher si on doit recopier
TOUTE les variables publiées car on peut pas faire de memcpy bourrin.

Donc on rajoute une message queue au blackboard
(non bloquante des 2 côtés) qui sera utilisée dans le sens
bb_provider ---> process [de simu] qui aura fait les bb_reverse_publish

avant d'envoyer ce message le provider aura indiqué via un flag
à rajouter au tableau de description du BB les variables EFFECTIVEMENT
demandées par l'ensemble de ses consumer.

Ceci permettra à chaque début de bb_reverse_update,
de vérifier si la liste des variables demandées à changé et
de ne copier que celle qui ont été demandées.

il faut coder:

bb_reverse_publish
bb_reverse_forward_update

modifier la structure de donnée actuellement
utilisée pour descrire une entrée blackboard pour
rajouter

asked     = cette entrée BB est-elle demandée?

il faut aussi modifier le bb_provider afin qu'il sache gérer
la notification pour un bb_reverse

En l'état tu perds l'utilisabilité de bbtools::bb_write car
tu peux pas écraser la mémoire local du process sauf si celui ci
appelle
bb_reverse_return_update

AVANT le forward update.

Bon c'est probablement pas clair et ça semble compliqué
mais je suis presque sûr que ça marcherait en peut de temps
>>>>



_______________________________________________
Tsp-devel mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/tsp-devel

---------------------------------------------------------

CE COURRIER ELECTRONIQUE EST A USAGE STRICTEMENT INFORMATIF ET NE SAURAIT 
ENGAGER DE QUELQUE MANIERE QUE CE SOIT EADS ASTRIUM SAS, NI SES FILIALES.

SI UNE ERREUR DE TRANSMISSION OU UNE ADRESSE ERRONEE A MAL DIRIGE CE COURRIER, 
MERCI D'EN INFORMER L'EXPEDITEUR EN LUI FAISANT UNE REPONSE PAR COURRIER 
ELECTRONIQUE DES RECEPTION. SI VOUS N'ETES PAS LE DESTINATAIRE DE CE COURRIER, 
VOUS NE DEVEZ PAS L'UTILISER, LE CONSERVER, EN FAIRE ETAT, LE DISTRIBUER, LE 
COPIER, L'IMPRIMER OU EN REVELER LE CONTENU A UNE TIERCE PARTIE.



This email is for information only and will not bind EADS Astrium SAS in any 
contract or obligation, nor its subsidiaries.

If you have received it in error, please notify the sender by return email. If 
you are not the addressee of this email, you must not use, keep, disseminate, 
copy, print or otherwise deal with it.

---------------------------------------------------------




reply via email to

[Prev in Thread] Current Thread [Next in Thread]