This is probably a long shot… But has anybody succeeded in running Julia directly on VMWare ESXi (i.e. as against to running Julia on a VM that runs on ESXi)?
I tried the Linux version of Julia on ESXi 6.5 and it crashed with the error message:
julia: src/unix/core.c:535: uv__close_nocheckstdio: Assertion `fd > -1' failed.
Then in the following post I read that while the older ESX contains RedHat Linux, ESXi has no Linux kernel at all; it only has the proprietary VMkernel.
So I guess there is no chance Julia for Linux can run on ESXi. But I just want to confirm that.
I’m going to go out on a limb here and say NO. Julia is not meant to directly run directly on the hardware (virtual or bare metal). It’s designed to run on an OS (Linux/Windows/FreeBSD). ESXi give’s you virtual hardware that you can install an OS on that will then run your programs. ESXi does not provide a “default” OS if you don’t install one.
At a high level an OS is designed to allow many programs to share the hardware. You word processor and music player both use the CPU and the OS makes sure they share it, and neither can monopolize the CPU. The OS provides this via standard libraries that you call to access the disk or access the video card, the CPU is kind of special but there are libraries calls to control scheduling and what not. VMWare ESXi provides virtual hardware that you can install an OS on. VMWare then ensures that all the OSes share the hardware, so it really provides 1 more level of sharing, but it’s sharing by providing virtual hardware not nice libraries to call.
All hardware is not the same. How you access the hardware depends on the manufacturer. Some do follow standards, but usually they have extensions to those standards to unlock whatever special features that hardware provides. Accessing a NVIDIA card directly is very different from accessing an AMD card. You need drivers that “normalize” access to the hardware. But each OS has different standards to normalize to. Windows drivers have a different API than Linux drivers.
So if Julia ran directly on the hardware without an OS we would need “Julia” drivers for the video card/disk controller/keyboard/mouse/etc. I suppose someone could create a OS that is designed to run just 1 program, no sharing, no slowdown because of task switching…but that would be recreating DOS (and other’s but I only know that one off the top of my head) from the 80s.
Thank you for the detailed answer!