[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Tsp-devel] Multitype comment?
From: |
Erk |
Subject: |
[Tsp-devel] Multitype comment? |
Date: |
Tue, 18 Apr 2006 01:01:40 +0200 |
Bon comme je vois que Stéphane
a vraiment envie d'afficher plus d'info
sur les provider et les symboles voici un peu d'info...
Lors d'un dialogue request_info/answer_sample
ou request_sample/answer_sample
l'Answer sample contient désormais les infos
suivante (structure SSI):
struct TSP_sample_symbol_info_t {
char *name;
int provider_global_index;
int provider_group_index;
int provider_group_rank;
TSP_datatype_t type;
u_int dimension;
u_int offset;
u_int nelem;
int period;
int phase;
};
Où TSP_datatype_t est un enum:
enum TSP_datatype_t {
TSP_TYPE_UNKNOWN = 0,
TSP_TYPE_DOUBLE = 1,
TSP_TYPE_FLOAT = 1 + 1,
TSP_TYPE_INT8 = 1 + 2,
TSP_TYPE_INT16 = 1 + 3,
TSP_TYPE_INT32 = 1 + 4,
TSP_TYPE_INT64 = 1 + 5,
TSP_TYPE_UINT8 = 1 + 6,
TSP_TYPE_UINT16 = 1 + 7,
TSP_TYPE_UINT32 = 1 + 8,
TSP_TYPE_UINT64 = 1 + 9,
TSP_TYPE_CHAR = 1 + 10,
TSP_TYPE_UCHAR = 1 + 11,
TSP_TYPE_RAW = 1 + 12,
TSP_TYPE_LAST = 1 + 13,
};
La dimension vaut > 1 si la chose est un tableau.
L'offset et nelem valent par defaut 0 et dimension
mais peuvent être différent si dans la request_sample
on a demande à sampler une partie du tableau
genre pour un tableau 'tab' de dimension 1000
si on demande offset = 100, nelem = 10
alors on aura tab[100], tab[101], ... tab[109]
et l'answer sample contiendra:
dimension 1000
offset = 100
nelem = 10
!!! ATTENTION DESORMAIS !!!
TSP_consumer_read_sample renseigne
une structure TSP_sample_t suivante:
struct TSP_sample_t
{
int time;
int provider_global_index;
int32_t array_index;
TSP_datatype_t type;
union {
double double_value;
float float_value;
int8_t int8_value;
int16_t int16_value;
int32_t int32_value;
int64_t int64_value;
uint8_t uint8_value;
uint16_t uint16_value;
uint32_t uint32_value;
uint64_t uint64_value;
char char_value;
unsigned char uchar_value;
int8_t raw_value;
} uvalue;
};
A vous de lire la bonne valeur de l'union
en fonction de type;.
A noter que pour un tableau on reçoit les éléments
1 par 1 (d'où le array_index) ce qui est très sous-optimal
mais on ne sait pas faire mieux sans soit:
1) faire des malloc à la toc
2) demander un buffer user
A noter que sur la socket on lit tout d'un coup donc
si on avait un buffer user on pourrait lire le (la tranche) de tableau
d'un bloc...
Pour ceux qui se demanderait comment au niveau de l'API
consumer on demande ces listes de sample:
Après un TSP_consumer_request_sample
on peut récupérer la liste via TSP_consumer_get_requested_sample
Après un TSP_consumer_request_info / filtered_info
on peut récupérer la liste via TSP_consumer_get_information.
Je fais un mail de plus sur les infos étendues....
--
Erk
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Tsp-devel] Multitype comment?,
Erk <=