GPUs - guydavis/machinaris GitHub Wiki

At the beginning of 2023, the Chia blockchain took a turn that meant more hardware was needed to plot and farm efficiently. Where before just a mid-range computer with an average CPU and an SSD could plot and farm, with the advent of Gigahorse and the subsequent attempts by Bladebit to keep up, a GPU became a helpful add-on for plotting and farming.

As of 2023-08-20, here is the current support:

Platform Plotting Support Farming Supported
Chia/Bladebit Yes (Nvidia - alpha) Yes (Nvidia)
Chia/Gigahorse Yes (Nvidia & AMD) Yes (Nvidia & AMD)
MMX/Madmax Yes Yes (Nvidia, AMD, Intel)

Nvidia

You'll need the Nvidia Driver Runtime. On Unraid, just install the Nvidia Driver plugin.

Then please add the following to your docker-compose.yml. Extend the existing environment section

        environment:
            - OPENCL_GPU=nvidia
            - NVIDIA_VISIBLE_DEVICES=all
            - NVIDIA_DRIVER_CAPABILITIES=compute,utility

Then add a new runtime line, (at same level as environment):

        runtime: nvidia

OR for Unraid, using the Docker admin tab, edit the container config (machinaris, machinaris-mmx, or machinaris-Gigahorse), create 3 new Variables (shown) and add --runtime=nvidia to the "Extra Parameters" field.

Alternatively, you can target the device by either position/index or GUID using these ONE of these TWO Variables values:

  • NVIDIA_VISIBLE_DEVICES=0
  • NVIDIA_VISIBLE_DEVICES=GPU-a8b96998-xxxx-xxxx

Further explained here.

You should then be able to execute nvidia-smi and see your GPU details from inside the container.

Nvidia

AMD

For AMD GPUs, as per this tutorial (AMD section part-way down), please add the following to your docker-compose.yml. Extend the existing environment section

        environment:
            - OPENCL_GPU=amd
            - ROC_ENABLE_PRE_VEGA=1

and add the following devices section at the same level as environment:

        devices:
            - "/dev/kfd:/dev/kfd"
            - "/dev/dri/:/dev/dri/"

Intel iGPU

Extend the existing environment section

        environment:
            - OPENCL_GPU=intel

and add the following devices section at the same level as environment:

        devices:
            - "/dev/dri/:/dev/dri/"

On the host machine, add the user that runs the container to the "video" and "render" groups.

sudo adduser $USER video
sudo adduser $USER render

To see if it worked, after the container starts, connect to it and type "clinfo"

docker exec -it machinaris-mmx bash
clinfo

You should see something like:

root@localhost:/chia-blockchain# clinfo 
Number of platforms                               1
  Platform Name                                   Intel(R) OpenCL HD Graphics
  Platform Vendor                                 Intel(R) Corporation
  Platform Version                                OpenCL 3.0 
  Platform Profile                                FULL_PROFILE