go-hep / hep

hep is the mono repository holding all of go-hep.org/x/hep packages and tools
https://go-hep.org
BSD 3-Clause "New" or "Revised" License
230 stars 35 forks source link

distributed use cases? #1010

Closed vsoch closed 5 months ago

vsoch commented 5 months ago

Hi! I'm looking for a go framework to run experiments on an HPC cluster, and I'm wondering if any of your simulations are amenable to that? Basically I can have a set of connected nodes and (if the library supports something like distributed) I'm hoping to use them. Thanks!

sbinet commented 5 months ago

hi there,

(apologies for the belated answer, I was out of commission for a week)

what's your use-case, really ? (is it running a Delphes-like simulation (i.e.: fads), or something completely "new", from first principles ? is ROOT output involved ? is it pure MonteCarlo ? reco+simulation ?)

Go-HEP didn't really look at the distributed use-case, unfortunately. For the ALICE experiment, I played a bit with implementing a distributed-friendly framework in Go, compatible with their C++-based one:

long story short, I guess for HPC, MPI is an obvious answer. On the gonum mailing list somebody had posted a pure-Go implementation of MPI:

perhaps you might have more luck on the Gonum mailing list ?

hth, -s

(also, Go-HEP does have a mailing list: https://lists.sr.ht/~sbinet/go-hep)

vsoch commented 5 months ago

These are fantastic! It may seem like a tiny thing, but I will definitely try them out. It's unfortunate there isn't more work of this type with Go. Understandably most folks like MPI for HPC, but I think Go has a lot of interesting scientific use cases (and especially for distributed). Anyway, I really appreciate your insights.

vsoch commented 5 months ago

hey @sbinet I'm trying to bring life back to the project, and (if nothing but a learning exercise) it's been really fun so far! I was able to implement the sampler-to-sink example, here and I was wondering if I could ask for help with the request reply? I'm following (what I perceive to be) the logic in the FairMQ example, but my message is never received by the server. If you might be able to take a look and give me some hints, I'm hoping to get this one working, then try the router/dealer pattern, and my ultimate goal is to have something that can send pair to pair messages between nodes (if that is possible). And apologies for my naivete - I'm new to developing with these. Thank you!