Hi all,

> I talked a bit with Janus about possible transformations which a VIFF
> compiler should do -- this is just off the top of my head:
>
> * The if-statement desugaring, but done correctly, not with the bugs
>   of my little prototype as pointed out by Tomas :-)

While the basic desugaring works, I think we also need optimizations if
things should be really usable for large(r) scale applications... Or
rather: We should try *very* hard to avoid introducing overhead. While the
if-statement is quite basic in ordinary programming, it's rather far from
what's actually going on here, so doing this might prove difficult.

Also, as if-statements are quite far from what's really going on,
(mis)using them will cause some overhead. I'm just worried about the
efficiency loss if programmers think of them as ordinary if-statements.
I'm not trying to get you down, it's just that MPC is resource-intensive
enough as it is, we don't need to introduce additional overhead :-)



One a sidenote: How about adding a conditional selection, "b ? x : y"?
Basically it's a simple if-statement, but it's slightly more involved if
you really want to shoot yourself in the foot.


> * Rebalacing of associative operations. A program like this
>
>     x = a * b * c * d * e * f * g * h
>
>   is executed using 8 rounds, but it can be executed with 3 rounds if
>   the compiler evaluates things as
>
>     x = ((a * b) * (c * d)) * ((e * f) * (g * h))
>
>   that is, as a tree. This should work for any associative operator.

How about the constant-round solution of [BB89]? This could be desirable
at times, however, as it only works for invertible inputs it might get
difficult. There is of course also an overhead involved, so it might not
always be desired -- perhaps a compiler flag is in order...

/Tomas

_______________________________________________
viff-devel mailing list (http://viff.dk/)
[email protected]
http://lists.viff.dk/listinfo.cgi/viff-devel-viff.dk

Reply via email to