4 ms·
I feel where they are trying to go with this, I wrote https://github.com/aunum/gold https://github.com/aunum/gold in Go because of all the nice parts of Go. Th
by yahyaheee 6y ago
I feel where they are trying to go with this, I wrote https://github.com/aunum/gold https://github.com/aunum/gold in Go because of all the nice parts of Go.
This solves some of the pain points but is still fatally flawed as any other Go ML tool in that it can’t accelerate due to the Go<->C FFI.
Until that issue is resolved Go simply won’t be broadly accepted in data science.
- mleonhard 6y agoWould you please explain?
- yahyaheee 6y agoSo due to how Go handles memory, it needs to do something called "trampoline", over to the C stack. This causes Go->C calls to have a substantial overhead 70-200ns/op. Most other languages that value is closer to 1ns. This means that every call to a GPU suffers from this latency. This isn't too much of a problem if your doing all supervised learning with batch operations because the speedup of a GPU over a bigger operation outweighs the FFI latency. However, it's a problem that doesn't appear to have a solution due to Go's memory management choices, and will hamper it ever being used for accelerated computing problems. This is one of the reasons Rust moved to using ownership rules. You can read a bit more at https://dave.cheney.net/2016/01/18/cgo-is-not-go https://dave.cheney.net/2016/01/18/cgo-is-not-go