GPU-accelerated micromagnetism.
Paper on the design and verification of MuMax3: http://scitation.aip.org/content/aip/journal/adva/4/10/10.1063/1.4899186
👉 Pre-compiled binaries, examples, and documentation are available on the mumax³ homepage.
Documentation of several tools, like mumax3-convert, is available here.
Contributions are gratefully accepted. To contribute code, fork our GitHub repo and send a pull request.
Consider downloading a pre-compiled mumax³ binary.
If you want to compile nevertheless, 4 essential components will be required to build mumax³: an NVIDIA driver, Go, CUDA and C.
- If they are not yet present on your system: install them as detailed below.
- If they are already installed: check if they work correctly by running the check for each component written below.
Click on the arrows below to expand the installation instructions:
These instructions were made for Windows 10 and Ubuntu 22.04 (but should be applicable to all Debian systems). Your mileage may vary.
Install an NVIDIA driver
- 
Windows: Find a suitable driver here. 
- 
Linux: Install the NVIDIA proprietary driver. Troubleshooting Linux →click here←If the following error occurs, proceed as follows:nvidia-smi has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running - 
Check for existing NVIDIA drivers. - Run dpkg -l | grep nvidiato see if any NVIDIA drivers are installed.
- If it shows some drivers, you might want to uninstall them before proceeding with the clean installation: sudo apt-get --purge remove '*nvidia*'
 
- Run 
- 
Update system packages. Make sure your system is up to date with sudo apt updateandsudo apt upgrade.
- 
(Optional but recommended:) Add the official NVIDIA PPA to ensure you have access to the latest NVIDIA drivers with sudo add-apt-repository ppa:graphics-drivers/ppaandsudo apt update.
- 
Install the recommended driver. Ubuntu can automatically detect and recommend the right NVIDIA driver for your system with the command ubuntu-drivers devices. This will list the available drivers for your GPU and mark the recommended one.
 To install the recommended NVIDIA driver, usesudo apt install nvidia-driver-<version>(replace<version>with the number of the recommended driver e.g., nvidia-driver-535)
- 
Reboot your system with sudo rebootto apply the changes.
- 
Verify the installation with nvidia-smi. This returns something like this, which shows you the driver version in the top center:
 +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 552.22 Driver Version: 552.22 CUDA Version: 12.4 | |-----------------------------------------+------------------------+----------------------+ | GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 NVIDIA GeForce RTX 3080 ... WDDM | 00000000:01:00.0 Off | N/A | | N/A 53C P8 9W / 115W | 257MiB / 8192MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | 0 N/A N/A 28420 C+G ...Programs\Microsoft VS Code\Code.exe N/A | | 0 N/A N/A 31888 C+G ...les\Microsoft OneDrive\OneDrive.exe N/A | +-----------------------------------------------------------------------------------------+
- 
- 
WSL: Follow the instructions and troubleshooting for Linux above. If you encounter issues/errors during that process, see the troubleshooting section below: Troubleshooting WSL →click here←When using Windows Subsystem for Linux, your graphics card might not be recognized. If an error occurs after running the command:- 
If ubuntu-drivers devicesthrows the error- Command 'ubuntu-drivers' not found: run the command- sudo apt install ubuntu-drivers-common.
- ERROR:root:aplay command not found: run the command- sudo apt install alsa-utils.
 
- 
If sudo apt install nvidia-driver-<version>throws the errorE: Unable to locate package nvidia-driver-<version>: run the commandssudo apt install software-properties-gtk sudo add-apt-repository universe sudo add-apt-repository multiverse sudo apt update sudo apt install nvidia-driver-<version> 
- 
If nvidia-smithrows the errornvidia: command not found: the controller is probably not using the correct interface (sudo lshw -c displayshould show NVIDIA). To solve this, follow these steps. If adocker: permission deniederror occurs: close and re-open WSL.
 
- 
👉 Check NVIDIA driver installation with: nvidia-smi
Install CUDA - ⚠️ Install in a directory without spaces⚠️ 
- Windows: Download an installer from the CUDA website.
- ⚠️ To avoid common issues, the installation directory should not contain spaces. If possible, install in- C:\cuda. Spaces should not cause issues when running- deploy_windows.ps1, but this is not guaranteed.
 
- Linux: Use sudo apt-get install nvidia-cuda-toolkit, or download an installer.- 
Pick the default installation path. If this is not usr/local/cuda/, create a symlink to that path.
- 
Match the version shown in your driver (see top right in nvidia-smioutput).
- 
When prompted what to install: do not install the driver again, only the CUDA toolkit. 
- 
Add the CUDA binandlib64paths to yourPATHandLD_LIBRARY_PATHby adding the following lines at the end of your shell profile file (usually.bashrcfor Bash):export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH Apply the changes with source ~/.bashrc.
 
- 
👉 Check CUDA installation with: nvcc --version
Install Go
- Download and install from the Go website.
- The GOPATHenvironment variable should have been set automatically (note: the folder it points to probably doesn't exist yet).
 Check withgo env GOPATH.Click here to setGOPATHmanually if it does not exist.- 
On Windows: %USERPROFILE%/gois often used, e.g.C:/Users/<name>/go. See this guide if you are unfamiliar with environment variables.
- 
On Linux: ~/gois often used. Open or create the~/.bashrcfile and add the following lines.export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin After editing the file, apply the changes by running source ~/.bashrc.
 
- 
👉 Check Go installation with: go version
Install a C compiler
- Linux: sudo apt-get install gcc- ⚠️ each CUDA version has a maximum supported- gccversion. This StackOverflow answer lists the maximum supported- gccversion for each CUDA version. If necessary, use- sudo apt-get install gcc-<min_version>instead, with the appropriate- <min_version>.
 
- Windows:
- CUDA does not support the gcccompiler on Windows, so download and install Visual Studio with the "Desktop development with C++" workload. After installing, check if the path tocl.exewas added to yourPATHenvironment variable (i.e., check whetherwhere cl.exereturns an appropriate path likeC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64). If not, add it manually.
- To compile Go, on the other hand, gccis needed. Usually this is included in the Go installation, but if not it can be downloaded and installed from w64devkit.
 
- CUDA does not support the 
👉 Check C installation with: gcc --version on Linux and where.exe cl.exe on Windows.
(Optional: install git to contribute to mumax³)
If you don't have a GitHub profile yet, make one here.
- Windows: Download and install.
- Linux: sudo apt install git
- Set up your username in Git and setup an SSH key for your GitHub account.
👉 Check Git installation with: git –-version
(Optional: install gnuplot for pretty graphs)
- Windows: Download and install.
- Linux: sudo apt-get install gnuplot
👉 Check gnuplot installation with: gnuplot -V
With these tools installed, you can build mumax³ yourself.
- 
Within your GOPATHfolder, create the subfolderssrc/github.com/mumax.
- 
Clone the GitHub repository by running git clone https://github.com/mumax/3.gitin that newly createdmumaxfolder.- If you don't have git, you can manually fetch the source here and unzip it into $GOPATH/src/github.com/mumax/3.
 
- If you don't have git, you can manually fetch the source here and unzip it into 
- 
Initialize a Go module by moving to the newly created folder with cd 3/and runninggo mod init github.com/mumax/3, followed bygo mod tidy.
- 
Query the compute capability of your GPU using the command nvidia-smi --query-gpu=compute_cap --format=csv. Based on this, set the environment variableCUDA_CC: if your compute capability is e.g., 8.9, then set the valueCUDA_CC=89.
- 
You can now compile mumax³ ... - 
... on Linux: make realclean make Your binary is now at $GOPATH/bin/mumax3.Note: each CUDA version has a maximum supported GCC version. If your default GCC compiler is too recent, you can use a different GCC compiler by instead running make NVCC_CCBIN=<path_to_gcc>where<path_to_gcc>is a less recent GCC. Check the version compatibility here. Alternatively, setting theNVCC_CCBINenvironment variable achieves the same thing, allowing you to runmakeas usual.
- 
... on Windows: The Makefiles may experience issues with whitespaces. Instead, we recommend to use thedeploy/deploy_windows.ps1script: this generates the Windows executables for the mumax³ download page, but can also be used to build a single mumax³ executable for yourself by making the following adjustments:- Change the $VS2022variable to point to your Visual Studio executable. If you wish to compile for CUDA versions below v11.6, also set$VS2017. Example: ifwhere.exe cl.exereturnsfoo\bar\cl.exe, then set$VS2022 = "foo\bar".
- (Not strictly necessary, but check this anyway) Throughout the file there are several switch ( $CUDA_VERSION )blocks. If these do not address your installed CUDA version, add your version. Consult nearby comments when in doubt.
 Now you can compile mumax³ by opening Powershell in the /deploydirectory and running./deploy_windows.ps1 -CUDA_VERSIONS <your_cuda_version> -CUDA_CC <your_compute_capability> where e.g. <your_cuda_version>is12.6and<your_compute_capability>is86, if you have installed CUDA v12.6 and your GPU's compute capability is 8.6.Your executable will be created in the deploy/builddirectory.
- Change the 
 
- 
- 
Check installation with: which mumax3on Linux orwhere.exe mumax3.exeon Windows, followed bymumax3 -test.Troubleshooting:This usually means that thecuda.horcurand.hnot found: →click here←CGO_CFLAGSandCGO_LDFLAGSenvironment variables are not found or point to the wrong path. To fix this, either define them in the script you are using to build mumax³, or define them in the terminal before running the script.- 
On Windows: say your CUDA is installed in %CUDA_PATH%(e.g.C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1), then run these two lines in Powershell before runningdeploy_windows.ps1:$env:CGO_CFLAGS = '-I "%CUDA_PATH%\include"' $env:CGO_LDFLAGS = '-L "%CUDA_PATH%\lib\x64"' 
 Troubleshooting: `mumax3.exe` is not generated: →click here←If, during the build process of mumax³, everything runs smoothly until you get the error that the mumax3.exeexecutable can not be found, try setting theCGO_ENABLEDenvironment variable to1in your build script.Troubleshooting: `vcvars64.bat` not found or could not initialise VC environment: →click here←CUDA requires Visual Studio to compile, which tries to set various environment variables. If Visual Studio fails to do so automatically, you can open a new shell, manually run the vcvars64.batfile there (the error message should contain the path to this Batch file), and then compile mumax using that shell.
-