-
-
Notifications
You must be signed in to change notification settings - Fork 8.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Rabit] One dmlc-core. #4360
Comments
Uploaded in https://github.com/trivialfis/xgbissues |
We need to come up with a solution for the upgraded rabit. |
Ok...then we should think about how to resolve the issue @RAMitchell raised Two potential ways as initial thoughts:
|
For 1. Indeed painful. CMake has a feature called |
Rabit is a bit of everything but mostly flexible interface (sync/checkpoint/restore) Take an example, I can totally see running GPU direct implementation behind Rabit as possibility. I think easiest thing we can do is to split dmlc-core headers used in rabit and rename (to avoid confusion in xgboost we had seen before) this will cut dependency between dmlc-core with rabit at cost of rabit needs to sync with dmlc-core from time to time to avoid xgboost rabit upgrade issue. It leaves rabit a bit more work and makes entire flow smooth. The downside is clearly if dmlc-core headers changed like io.h rabit can only find out when it upgrade.(I think i can do a dummy script and auto sync with dmlc-core master with a bit naming hacking. |
@trivialfis I am actually proposing accept more and more diversity of cloned rabit and the original rabit, if people wants to fix there, fine..and we can do whatever beneficial to xgboost in, as an example, src/communication/ |
@CodingCat I think @chenqin is doing a lots of work on rabit that I cannot do myself, and it seems jvm package always has tons of work to occupy your hand, so merging rabit into XGBoost won't advance it. My suggestion is add an option to rabit's build system for using existing |
per comments in pr, by default built with xgboost dmlc-core, if use rabit without xgboost or mxnet it can choose to build with dmlc-core as subproject with make RABIT_BUID_DMLC=1 IMO, this can address duplicated code base while keep rabit always in sync with dmlc-core. |
Closed by dmlc/rabit#91 . |
@chenqin @RAMitchell @hcho3
It was suggested that we can duplicate dmlc-core in #4352 but I disagree with the choice. The problem is in c++'s hairy linkage specification. If we have out-of-sync
dmlc-core
in two places, the behaviour is undefined. Specifically with two functions having the same signature linker will choose one of them and discard the other. I made a demonstration program for others to verify. Will upload soon.The text was updated successfully, but these errors were encountered: