In this guide, we’ll go over how to process video on the Livepeer Network using your GPU while simultaneously mining cryptocurrencies such as Filecoin or Bitcoin using the same GPU.
Dual ethash mining and transcoding has been tested on the GPUs in this list and with the following miners:
If you successfully test with other miners, contributions to this document are welcome.
If you are using a post-Volta GPU, the recommendation is to use ethminer because it exposes flags for more granular adjustments to the GPU workload which will be needed when using CUDA MPS (see the next section) to prevent the miner from fully staturating the GPU. Other miners that support similar flags can be substituted for ethminer as well.
If you are using a pre-Volta GPU, the recommendation is to use t-rex because it
is, at the time of writing, the most popular and efficient ethash miner that has
been tested with livepeer
. Other miners that have been tested successfully
with livepeer
can be substituted for t-rex as well.
Note that regardless of the miner used, the VRAM available on your GPU will affect the number of concurrent streams that can be transcoded while mining.
If you are using ethminer, this script can be used to start both processes.
If you want to setup a dual mining manually perhaps because the script does not serve your needs, continue to the next sections.
CUDA MPS can be used to try to improve parallelization of the ethash mining and transcoding workloads on the GPU. If you are not using CUDA MPS you can move on to the next section.
Requirements:
Start the MPS server by following these instructions
Take note of the following points that are mentioned in the docs:
CUDA_VISIBLE_DEVICES
environment variable should be set with device IDs
of the GPUS you will be using before the MPS daemon is started, but it should
NOT be set before starting the miner and livepeer
The following instructions will assume you are using either t-rex or ethminer. If you are using a different miner, the miner commands should be updated to reflect the requirements of the miner being used.
If you are using ethminer, run ethminer with flags to adjust the GPU workload (other flags to connect to a mining pool omitted):
The --cuda-streams
, --cuda-block-size
and --cuda-grid-size
flags are used
to adjust the GPU workload. The best values to use for these flags will depend
on your GPU and whether you want lower hashrate and faster transcoding speed or
higher hashrate and lower transcoding speed.
If you are using t-rex, run t-rex with a flag to adjust mining intensity (other flags to connect to a mining pool omitted):
The -i
flag is used to adjust the mining intensity. Note that in testing, this
flag did not seem to provide very granual control over the GPU workload so
adjusting it to a level at which CUDA MPS could work led to a larger hashrate
drop which is why ethminer is recommended if you plan on using CUDA MPS.
If you are using CUDA MPS, wait until the miner completes DAG generation
Run livepeer
on the same machine as the miner and using the same GPU device
IDs as the miner with the -nvidia
flag
If you are using CUDA MPS, livepeer
will need to be stopped when the miner
re-generates the DAG to avoid transcoding issues and can be re-started when
DAG generation completes
Instead of always concurrently ethash mining and transcoding, it could also be possible to switch between the two to maximize mining efficiency when there is low transcoding demand and maximize transcoding capacity when there is high transcoding demand.
In this guide, we’ll go over how to process video on the Livepeer Network using your GPU while simultaneously mining cryptocurrencies such as Filecoin or Bitcoin using the same GPU.
Dual ethash mining and transcoding has been tested on the GPUs in this list and with the following miners:
If you successfully test with other miners, contributions to this document are welcome.
If you are using a post-Volta GPU, the recommendation is to use ethminer because it exposes flags for more granular adjustments to the GPU workload which will be needed when using CUDA MPS (see the next section) to prevent the miner from fully staturating the GPU. Other miners that support similar flags can be substituted for ethminer as well.
If you are using a pre-Volta GPU, the recommendation is to use t-rex because it
is, at the time of writing, the most popular and efficient ethash miner that has
been tested with livepeer
. Other miners that have been tested successfully
with livepeer
can be substituted for t-rex as well.
Note that regardless of the miner used, the VRAM available on your GPU will affect the number of concurrent streams that can be transcoded while mining.
If you are using ethminer, this script can be used to start both processes.
If you want to setup a dual mining manually perhaps because the script does not serve your needs, continue to the next sections.
CUDA MPS can be used to try to improve parallelization of the ethash mining and transcoding workloads on the GPU. If you are not using CUDA MPS you can move on to the next section.
Requirements:
Start the MPS server by following these instructions
Take note of the following points that are mentioned in the docs:
CUDA_VISIBLE_DEVICES
environment variable should be set with device IDs
of the GPUS you will be using before the MPS daemon is started, but it should
NOT be set before starting the miner and livepeer
The following instructions will assume you are using either t-rex or ethminer. If you are using a different miner, the miner commands should be updated to reflect the requirements of the miner being used.
If you are using ethminer, run ethminer with flags to adjust the GPU workload (other flags to connect to a mining pool omitted):
The --cuda-streams
, --cuda-block-size
and --cuda-grid-size
flags are used
to adjust the GPU workload. The best values to use for these flags will depend
on your GPU and whether you want lower hashrate and faster transcoding speed or
higher hashrate and lower transcoding speed.
If you are using t-rex, run t-rex with a flag to adjust mining intensity (other flags to connect to a mining pool omitted):
The -i
flag is used to adjust the mining intensity. Note that in testing, this
flag did not seem to provide very granual control over the GPU workload so
adjusting it to a level at which CUDA MPS could work led to a larger hashrate
drop which is why ethminer is recommended if you plan on using CUDA MPS.
If you are using CUDA MPS, wait until the miner completes DAG generation
Run livepeer
on the same machine as the miner and using the same GPU device
IDs as the miner with the -nvidia
flag
If you are using CUDA MPS, livepeer
will need to be stopped when the miner
re-generates the DAG to avoid transcoding issues and can be re-started when
DAG generation completes
Instead of always concurrently ethash mining and transcoding, it could also be possible to switch between the two to maximize mining efficiency when there is low transcoding demand and maximize transcoding capacity when there is high transcoding demand.