Skip to content
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

Initial support for IPv6 #8225

Merged
merged 16 commits into from Sep 21, 2022
Merged

Initial support for IPv6 #8225

merged 16 commits into from Sep 21, 2022

Conversation

trivialfis
Copy link
Member

@trivialfis trivialfis commented Sep 5, 2022

  • Merge rabit socket into XGBoost.
  • Dask interface support.
  • Add test for socket.
  • Add more compatibility code with mysys32, including correct linking, and enable most of
    the system function calls.
  • Workaround windows includes in tests. dmlc filesystem includes windows.h, which
    conflicts with winsock2.h.

Current status:
This PR enables initial support for IPv6 with dask on Linux. Some effort is put into Windows support but we don't support distributed training on Windows in general. As for macos, RABIT allreduce returns error but I don't have a macos device for development or testing.

I ran some basic tasks using dask on GCP debian-based instance with dual stack and verified that IPv6 is indeed used.

#7725 .

@trivialfis
Copy link
Member Author

The use of collective is to be consistent with #8057

- Merge rabit socket into XGBoost.
- Dask interface support.
- Add test to socket.
- Add more compatibility code with mysys32, including correct linking and enable most of
  the system function calls.
- Workaround windows includes in tests. dmlc filesystem includes `windows.h`, which
  conflicts with winsock2.h.
@trivialfis trivialfis changed the title [WIP] Initial support for IPv6 Initial support for IPv6 Sep 20, 2022
@trivialfis
Copy link
Member Author

@rongou Would you like to take a look into this?

doc/tutorials/dask.rst Outdated Show resolved Hide resolved
Copy link
Member

@RAMitchell RAMitchell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can't really say much about the implementation as I don't have experience here.

It does seem a bit unusual to me that we are doing this ourselves and not using a library. Would using another framework for communication give us IPv6?

If you are confident with this PR you should go ahead with it.

@trivialfis
Copy link
Member Author

trivialfis commented Sep 21, 2022

@RAMitchell We used to treat rabit as a separate library. ;-) But as suggested by @rongou , we can switch to something well maintained for allreduce implementation.

@trivialfis trivialfis merged commit b791446 into dmlc:master Sep 21, 2022
@trivialfis trivialfis deleted the ipv6 branch September 21, 2022 10:06
@trivialfis trivialfis added this to In progress in 1.7 Roadmap via automation Sep 28, 2022
@trivialfis trivialfis moved this from In progress to Done in 1.7 Roadmap Sep 28, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
No open projects
Development

Successfully merging this pull request may close these issues.

None yet

3 participants