Le 24/08/2012 11:46, Jeff Squyres a écrit :
> On Aug 24, 2012, at 4:26 AM, Brice Goglin wrote:
>
>> The question that remains is about the naming. Right now, it's
>> "valarray" but it don't like it. What it really means is "custom array
>> of float values". Maybe just "values", or "floats", or "custom floats",
>> or ... ?
>
> Random question: why floats and not doubles?
Likely because we have floats in the distance matrices but it didn't
matter for this use.
> Another name suggestion: cached_floats (cached_doubles)
It's not really about caching, it's more about annotating the topology
by merging multiple inputs together (XML topology + benchmark outputs +
application info) inside the same XML file.
> If the goal is to be able to store some data that will also show up in the
> XML (and text/gui output?)
I don't plan to display any of this to lstopo.
> , why not make the mechanism more general? E.g., the values array should be
> a union, with an enum indicating its type, and support a small number of
> intrinsic types: float (or double), string, int (and/or long?).
>
I thought about that but I wasn't sure it was worth doing it. When you
say type, are you talking about the type that appears in the array of
values, or about the global annotation type?
I though about doing this
struct values {
char *name;
type /* FLOATS or something else in the future */
union {
floats {
unsigned nr;
unsigned *indexes;
floats *values;
};
};
};
This is vague enough to support other kinds of annotations (even if I
don't expect many additions). Ideally, we would merge the "info"
attribute into this, but it would break the ABI (because of the
get_info_by_name() inline function).
You're talking about this instead?
struct values {
char *name;
type /* DOUBLE or ULLONG */
unsigned nr;
unsigned * indexes;
void * values; /* sizeof(type) * nr */
};
This one is easy to implement. Not sure if we would want
float/double/int/long/ulong/llong/... or only double/ullong. I just need
something clear enough for importing/exporting as string in the XML output.
String is really needed since we have info attributes. It's not an
array, but I don't think it matters much.
Brice