Best practice: Julia development under Windows?

I need to buy a Laptop with a discrete graphic card for Cuda kernel development in Julia. Unfortunately, the situation with current-gen notebooks with discrete GPUs and Linux seems to be as bad as it was 10 years ago :frowning: [1]

I haven’t used Windows for a long time. How’s the development situation there? I heard in the past that package operations are much slower than on Linux/Mac; has this changed yet?

Can this be circumvented by doing everything under WSL, or is this more of a hack with lots of possibly broken edge cases? I’d definitely need multiple Julia versions with CUDA.jl, working GLMakie, DiffEq, file system interactions, Plots, IDE, …

[1] Apparently, a lot of newer Laptops have problems ranging from energy management, enabling/disabling discrete GPU, over sleep/wake states to wifi and audio issues.

If you want to develop larger Julia projects, stick to Linux…

For example multi-threaded system image creation only works on Linux. But if you are not doing that often, you can also use Windows, but you loose about 20% performance. Yes, the performance using WSL is better, but I am not sure if you can use graphical interfaces when using the WSL.

If you install Git for Windows (which provides a bash shell) and VSCode and Windows Terminal, Windows feels nearly as good as Linux…

And if you buy a laptop with an “AMD Ryzen™ 7 7840U” CPU or similar you get very fast graphics without the need of a discrete GPU…

3 Likes

Thanks for the answer!

It would be interesting to know if WSL2 is “enough” Linux for this to work, though.

Unfortunately, the Ryzen CPU won’t help me since my goal is to test and develop cuda code locally before pushing it to an HPC cluster. For that, I need a dedicated NVIDIA graphics card.

I am very surprised at any statement to not use Windows… that would be very unsubstantiated.

I am the lead developer of SciML and I almost exclusively use Windows. I have been doing that since I started in Julia in 2016 and that’s why you see the whole ecosystem works with Windows. I am a contributor to everything from Julia LinearAlgebra to Plots.jl and MATLAB.jl because for many years I was “the Windows guy” that made sure the open source ecosystem played nicely with Windows.

Now that we have a lot more industrial applications and commercial usage of Julia for engineering, Windows isn’t even uncommon and I haven’t been the only person looking out for Windows in the package ecosystem for a long time (since about 2020 or so many others have been helping out in this respect). And with the Yggdrasil artifacts system most of the Windows issues of pre-v1.0 Julia were largely eliminated.

So with what you’re saying

No, you don’t need to go to Linux. In fact, much of what you’ve described there was built and tested on Windows first, especially if you’re doing DiffEq + VS Code! And I develop all of SciML directly in Windows, no WSL. I would much rather run into every possible issue and fix it directly than use WSL, though I don’t think I can list a single Windows-specific issue that I’ve had to fix since… 2021?

At this point in time, I do not know of any Windows-specific issues related to SciML or its greater ecosystem other than the aforementioned Julia base issue with multithreaded image building. Also, the Windows file system is just naturally slower, but that’s just known. If you run into any issues with Windows just open an issue.

[Caveat: I did get a Mac laptop sometime last year, but I still mostly code on my desktop so… this at least means that I don’t use a Linux machine except with SSH. But this also means that SciML has similar Mac M-series support, which is why it uses AppleAccelerate linear algebra out of the box and will out benchmark other things which don’t. But I digress]

13 Likes

I run Ubuntu on my personal computer, but have been using Julia on various Windows machines at work for more than half a decade. I don’t notice any significant difference day to day. Juliaup, VSCode, Git, plotting, etc. all work great on both systems.

In the past I have run into some issues with compiled binary artifacts not working on Windows, but it’s been a few years at least since the last one I can remember. Things are pretty smooth all round these days so I wouldn’t worry about it!

3 Likes

It’s also fair to say I think that lots of people have run into an issue that can break any package which relies on any artifacts which has been around since 1.10 pre-release versions and still isn’t fixed on 1.10.2:

I could also dig up the old XGBoost issue where that was broken on Windows for multiple Julia versions, or the fact that Pluto cell interruptions never worked (I think until very recently?) - these things don’t tend to happen on Linux and Mac, partly because Linux and Mac are nicer development environments I guess, but also because it’s just a fact of life that the Venn diagram intersection between “is a core-ish Julia developer” and “uses Windows” is pretty close to an empty set.

(Just to be clear: I’m using Windows myself at work, which is 90% of my Julia usage, and it’s absolutely fine, specifically the package operations thing isn’t really an issue anymore)

2 Likes

Have you checked out system76 laptops?

1 Like

Two thoughts:
Your HPC cluster should have some login nodes dedicated to development, or some nodes devoted to short run time development.

If you really want a local GPU consider using Thunderbolt and an external GPU cage

As an aside, if you choose a Windows laptop use Moba Xterm to access your HPC

2 Likes

In my experience, this has never been nearly as bad as people on the internet claim. Some distro devs may not have read the driver docs as carefully as they should when packaging the driver for their distro, leading to inelegant or missing solutions for hybrid functionality and power management, but even then the GPU is fully functional.

More importantly, some distros get it right, so if this is important to you, choose one of those. The ones I’m familiar with are Pop!_OS and EndeavourOS.

Windows is cool too, of course. Just questioning the premise that Cuda is a reason to stay away from Linux.

3 Likes

I just switched full time to Windows a couple of weeks ago after decades on mac. I did it because I found this gem of a tablet/laptop (ROG Flow Z13 (2022)) that just naturally replaced my mac + iPad combo (2023 model has even better specs). I’d recommend that you look at gaming laptops as these have powerful CPUs, discrete GPUs, and advanced cooling systems (at the cost of battery life though, compared to new macs).

My initial plan was to live inside WSL, but I soon found that it’s entirely unnecessary. WSL is great but uses a lot of RAM. Julia development works perfectly on Win 11. Also, WSL file access can be slow if you access files stored outside it.

Huge latency with Julia packages was definitely an issue (that I reported myself here a few years ago). Especially when dev-ing packages, Windows Defender would have a hard time scanning all the files, slowing the OS down considerably. I have not seen this issue anymore.

My setup is similar to what I have on the mac: Julia via juliaup, VSCode, and a terminal. Windows terminal is great, and I’ve added https://ohmyposh.dev/. I also recommend WinGetUI as the package manager (GitHub - marticliment/WingetUI: WingetUI: The Graphical Interface for your package managers).

6 Likes

Thank you all for the suggestions and replies, your input helped a lot! It seems like overall Windows support is better than the impression I got based on some off-handed comments I read on Slack and Discourse over the years, that’s great! I’ll see what devices my institution can provide and if I encounter problems with native Linux distros I am not afraid anymore to take on Windows, either with or without WSL.

5 Likes