Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
Peter Sebastian Nordholt
@GuutBoy
Probably not. Comparison is rather expensive in arithmetic MPC.
Fable95
@Fable95
Alright, thanks for the quick response. :)
Peter Sebastian Nordholt
@GuutBoy
You’re welcome 😊. I mean, it’s possible that it could be optimized, but in general comparison is more expensive than say multiplication in all arithmetic MPC
n1v0lg
@n1v0lg
One thing that comes to mind is reducing the modulus bit length and max bit length to 128 and 64 respectively. That should noticeably speed up your overall application. It may or may not give you enough precision (depending on your concrete computation). If you start seeing incorrect outputs as a result it means that your modulus does have to be bigger. The modulus bit length and max bit length are set on the SpdzResourcePool class.
Fable95
@Fable95
Ah thanks for the input, I am actually already setting those values over command line trying to figure out what the best configurations are!
Another question then came up: Does decreasing the mod bit length impact the overall security of the protocol or is it just some internal setting?
n1v0lg
@n1v0lg
Yep, it does also affect security. If you are using comparisons (or other computations based on bit decomposition), you get 64 for the computational security parameter and 60 (need to double-check that) for the stat. security parameter when you set mod bit length to 128. These are accepted as sufficiently large in the current MPC literature. If you go lower with the mod. bit length however your computational and statistical security params also decrease (because their sum is >= mod. bit length), so things get controversial.
Fable95
@Fable95
Ok so that's something to be kept in consideration!
Peter Sebastian Nordholt
@GuutBoy
Guys, isn’t it about time to do a new release?
Peter F. Frandsen
@pffrandsen
:)
I totally support that point
n1v0lg
@n1v0lg
Yep, there will be a new release before Oct 1st for sure
Peter Sebastian Nordholt
@GuutBoy
Yay!
Walch Roman
@rw0x0
Hey, I am currently using your framework (great framework btw.) to benchmark an SPDZ/Mascot application and wanted to ask, if there is a simple way to separately measure the offline and online runtime of the applications? thx in advance ;)
n1v0lg
@n1v0lg
@rw0x0 hey! sorry for the late reply. there isn't an "out-of-the-box" way to measure offline and online times separately, however there are two things you could do: 1) run the application you want to benchmark with mascot pre-processing and then with dummy pre-processing. the difference in runtime will roughly correspond to the overhead introduced by mascot. 2) you could figure out how much pre-processing material (e.g., multiplication triples) your application needs and measure the time it takes to generate the required amount with Mascot by using the Mascot class (https://github.com/aicis/fresco/blob/master/tools/mascot/src/main/java/dk/alexandra/fresco/tools/mascot/Mascot.java#L27) directly. hope this helps!
Walch Roman
@rw0x0

hi, thank you for your reply. I thought that I would need some kind of workaround, what i did in the end was, that i added some functions to the spdzmascotdatasupplier, which allowed me to produce a number of triples (and randomelements, etc.) beforehand.
Something like:
public void produceTriples(int el) {
ensureInitialized();
triples.addAll(mascot.getTriples(el));
}

Calling this function before the actual computation had the result, that during the online phase no triples had to be produced. Maybe something like this could be added to the main project? :)

n1v0lg
@n1v0lg
@rw0x0 nice, that's a good way of separating the two phases. could you make an issue to add this on github? we can work it in when there's some downtime; a PR is more than welcome too, of course ;)
Walch Roman
@rw0x0
Yes, I will open a issue. If i find time, I can open a PR as well ;)
Peter Sebastian Nordholt
@GuutBoy
🎉
Peter Sebastian Nordholt
@GuutBoy
Hi, just wanted to let you know: I was asked by Marcella from the MPC-SoK project to add the FRESCO sample programs I wrote last year to the MPC-SoK repo. Which I did in this PR MPC-SoK/frameworks#21
I hope that is fine with everyone. I didn't really do much to validate that the old code is working an so on, and it might be out of date with recent FRESCO versions (it uses 1.1.2). If she has problems with it I hope you can help her out.
Basit
@basitkhurram
Hello again
Is there built in functionality to help calculate the communication costs involved while executing a FRESCO app?
Fable95
@Fable95
Hi, you might want to take a look at the networkloggingdecorator class which can be found in core/logging.
Using this in addition to the socket network tracks all network traffic one party receives over the network is tracked. This can then be analyzed using the getLoggedValues function.
Marcel Keller
@mkskeller
Hi, is there an easy way to run the examples in https://github.com/aicis/fresco-samples with proper preprocessing?
Jonas Lindstrøm
@jonas-lj
Hi @mkskeller ! It is not supported in the current release but will be in the next. If you pull from the master branch it should be possible to set spdz.preprocessingStrategy=MASCOT
kc1212
@kc1212
hi, does fresco come with a bit-decomposition API for spdz2k?
Peter Sebastian Nordholt
@GuutBoy
Almost 3000 commits! 🥳
Jonas Lindstrøm
@jonas-lj
🍾
Peter Sebastian Nordholt
@GuutBoy
Oh no! The logo is no longer available at https://alexandra.dk/logo/fresco-logo-artwork.svg ... this messes up the README.md! Someone save the logo!
Jonas Lindstrøm
@jonas-lj
Oh no! We've just gotten a new corporate website and they must have deleted the logo. I'm on it!
Peter Sebastian Nordholt
@GuutBoy
Congratulations on release 1.3.0 🎉
Marcel Keller
@mkskeller
Bumping the version in https://github.com/aicis/fresco-samples gives loads of errors. Are there any plans to update the examples?
Jonas Lindstrøm
@jonas-lj
@GuutBoy Thanks!
@mkskeller Sure -- let me just check how much work it is.
Jonas Lindstrøm
@jonas-lj
@mkskeller It should work with the new version now.
Peter Sebastian Nordholt
@GuutBoy
The release mentions "a refactoring resulting in a major change in the API", could you give a quick summary of the changes?
Jonas Lindstrøm
@jonas-lj
sure. We have refactored the library in order to keep the core module as small as possible
because of this, you can no longer access library functions directly through the ProtocolBuilder, but need to create ComputationDirectories as you need them. This is done using the syntax "AdvancedNumeric.using(builder)"
Peter Sebastian Nordholt
@GuutBoy
I see, that sounds good.
Gugi264
@Gugi264
Hi!
I wanted to ask how active fresco is? The last couple of issues didn't get commented on (the last on is from me), and I wanted to know if the fresco community is still active?
Jonas Lindstrøm
@jonas-lj
@Gugi264 Hi! Yes, it's still active! We're a few people working on it from time to time :). But we've missed your issue - sorry about that - but we would love to see your PR. An extra dependency is in it self not a big issue imo. So do please submit it!
Gugi264
@Gugi264
@jonas-lj Thanks for the fast answer! Then I will make a PR in the next couple of days :)
Jonas Lindstrøm
@jonas-lj
@Gugi264 Great!
Gugi264
@Gugi264
@jonas-lj Is there a good way too profile a demo application? I am trying to get a good overview on the DistanceDemo in what methods how much time is used. I want to profile on a different machine without gui, so sadly I can't use any gui profilers. (Otherwise the Intellij Profiler worked quite well for me). Any ideas?
Peter F. Frandsen
@pffrandsen
@Gugi264 My suggestion would be to define the testscenario more detailed first. Working with MPC gives a whole new set of constraint that is not adequately captured by exsting profilers.
Gugi264
@Gugi264
@pffrandsen What do you mean with detailing the testscenario more? I understand that MPC is different then a normal application, nonetheless, I want to capture a complete run to compare it with a complete run after a certain commit. If I run all the nodes locally the network wait should be practically 0?
Peter F. Frandsen
@pffrandsen
The question is what do you want to learn/understand. Running all the nodes on a local network might be a constructed example. My go-to benchmark scenario is "Assume all nodes are in the same metro area, say Chicago, Frankfurt or Copenhagen". This is not unreasonable requirement - I have actually been presented to this by a customer. Now we can derive a set of constraints: 100MBit/s, small packages, drop rate of less than 1%, HW can be any machine -> 20 core 64 GB suffices.
If you measure where the bottlenecks are in a local networksetup -> be aware that this does not have any correlation to a real world application,
Gugi264
@Gugi264
I am aware that this will be a constructed example, and eventually I will also measure it with some network constraints, like you just described. But for the moment I want to focus on the computational side. The focus atm is OT. I guess I will either try to profile the Demo, or maybe the OT (base) tests and tweak them a bit to be more realistic.
Peter F. Frandsen
@pffrandsen
My point really is that you are pursuing the wrong improvements - but have fun nonetheless :)