From b7adb47eafdd10dd67301f501be6d18b209f3eae Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 5 Nov 2024 18:34:47 +0000 Subject: [PATCH] deploy: 75e8e4081da9cf7503e96349dc7e481c6ea0b6ad --- 404.html | 2 +- ar/404.html | 2 +- ar/assets/js/7c819db0.5e71386a.js | 1 + ...~main.4375fc16.js => runtime~main.d04241f7.js} | 2 +- ar/category/farming/index.html | 2 +- ar/develop/auto-sdk/auto-id/index.html | 2 +- ar/develop/auto-sdk/consensus/index.html | 2 +- ar/develop/auto-sdk/drive/index.html | 2 +- ar/develop/auto-sdk/index.html | 2 +- ar/develop/auto-sdk/intro/index.html | 2 +- ar/develop/auto-sdk/utils/index.html | 2 +- ar/develop/auto-sdk/xdm/index.html | 2 +- ar/develop/intro/index.html | 2 +- ar/develop/nova/block-explorer/index.html | 2 +- ar/develop/nova/faucet/index.html | 2 +- ar/develop/nova/general/index.html | 2 +- ar/develop/nova/guides/foundry/index.html | 2 +- ar/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- ar/develop/nova/guides/remix/index.html | 2 +- ar/develop/nova/index.html | 2 +- ar/develop/nova/introduction/index.html | 2 +- ar/develop/nova/metamask/index.html | 2 +- ar/farming/advanced-cli/cluster/index.html | 2 +- ar/farming/advanced-cli/install/index.html | 2 +- ar/farming/advanced-cli/tips/index.html | 2 +- ar/farming/common-problems/index.html | 2 +- ar/farming/guides/gpu-plotter/index.html | 7 ++----- ar/farming/guides/grafana-dashboard/index.html | 2 +- ar/farming/guides/index.html | 2 +- ar/farming/guides/port-config/index.html | 2 +- ar/farming/guides/verified-farmer/index.html | 2 +- ar/farming/intro/index.html | 2 +- ar/farming/space-acres/install/index.html | 2 +- ar/farming/space-acres/translate/index.html | 2 +- ar/farming/timekeeper/index.html | 2 +- ar/index.html | 2 +- ar/learn/academy/index.html | 2 +- ar/learn/intro/index.html | 2 +- ar/learn/security/index.html | 2 +- ar/markdown-page/index.html | 2 +- ar/participate/community/resources/index.html | 2 +- ar/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- ar/participate/contribute/intro/index.html | 2 +- ar/participate/contribute/translate/index.html | 2 +- ar/staking/intro/index.html | 2 +- ar/staking/operator/deregister/index.html | 2 +- ar/staking/operator/register/index.html | 2 +- ar/staking/operator/tips/index.html | 2 +- ar/staking/stake/index.html | 2 +- ar/wallets/polkadot/index.html | 2 +- ar/wallets/subwallet/index.html | 2 +- assets/js/11bc8d76.4f52c8e5.js | 1 - .../js/11bc8d76.b3f4e2a2.js | 2 +- ...~main.ee27da08.js => runtime~main.97f18d22.js} | 2 +- category/farming/index.html | 2 +- de/404.html | 2 +- de/assets/js/7576aedf.cc856e4b.js | 1 - de/assets/js/7576aedf.fd4de950.js | 1 + ...~main.fc8c97d3.js => runtime~main.d24efeb2.js} | 2 +- de/category/farming/index.html | 2 +- de/develop/auto-sdk/auto-id/index.html | 2 +- de/develop/auto-sdk/consensus/index.html | 2 +- de/develop/auto-sdk/drive/index.html | 2 +- de/develop/auto-sdk/index.html | 2 +- de/develop/auto-sdk/intro/index.html | 2 +- de/develop/auto-sdk/utils/index.html | 2 +- de/develop/auto-sdk/xdm/index.html | 2 +- de/develop/intro/index.html | 2 +- de/develop/nova/block-explorer/index.html | 2 +- de/develop/nova/faucet/index.html | 2 +- de/develop/nova/general/index.html | 2 +- de/develop/nova/guides/foundry/index.html | 2 +- de/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- de/develop/nova/guides/remix/index.html | 2 +- de/develop/nova/index.html | 2 +- de/develop/nova/introduction/index.html | 2 +- de/develop/nova/metamask/index.html | 2 +- de/farming/advanced-cli/cluster/index.html | 2 +- de/farming/advanced-cli/install/index.html | 2 +- de/farming/advanced-cli/tips/index.html | 2 +- de/farming/common-problems/index.html | 2 +- de/farming/guides/gpu-plotter/index.html | 7 ++----- de/farming/guides/grafana-dashboard/index.html | 2 +- de/farming/guides/index.html | 2 +- de/farming/guides/port-config/index.html | 2 +- de/farming/guides/verified-farmer/index.html | 2 +- de/farming/intro/index.html | 2 +- de/farming/space-acres/install/index.html | 2 +- de/farming/space-acres/translate/index.html | 2 +- de/farming/timekeeper/index.html | 2 +- de/index.html | 2 +- de/learn/academy/index.html | 2 +- de/learn/intro/index.html | 2 +- de/learn/security/index.html | 2 +- de/markdown-page/index.html | 2 +- de/participate/community/resources/index.html | 2 +- de/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- de/participate/contribute/intro/index.html | 2 +- de/participate/contribute/translate/index.html | 2 +- de/staking/intro/index.html | 2 +- de/staking/operator/deregister/index.html | 2 +- de/staking/operator/register/index.html | 2 +- de/staking/operator/tips/index.html | 2 +- de/staking/stake/index.html | 2 +- de/wallets/polkadot/index.html | 2 +- de/wallets/subwallet/index.html | 2 +- develop/auto-sdk/auto-id/index.html | 2 +- develop/auto-sdk/consensus/index.html | 2 +- develop/auto-sdk/drive/index.html | 2 +- develop/auto-sdk/index.html | 2 +- develop/auto-sdk/intro/index.html | 2 +- develop/auto-sdk/utils/index.html | 2 +- develop/auto-sdk/xdm/index.html | 2 +- develop/intro/index.html | 2 +- develop/nova/block-explorer/index.html | 2 +- develop/nova/faucet/index.html | 2 +- develop/nova/general/index.html | 2 +- develop/nova/guides/foundry/index.html | 2 +- develop/nova/guides/hardhat/index.html | 2 +- develop/nova/guides/local-development/index.html | 2 +- develop/nova/guides/remix/index.html | 2 +- develop/nova/index.html | 2 +- develop/nova/introduction/index.html | 2 +- develop/nova/metamask/index.html | 2 +- es/404.html | 2 +- es/assets/js/c462c969.85567de6.js | 1 - es/assets/js/c462c969.a2893557.js | 1 + ...~main.ba0d8e5e.js => runtime~main.61ec363c.js} | 2 +- es/category/farming/index.html | 2 +- es/develop/auto-sdk/auto-id/index.html | 2 +- es/develop/auto-sdk/consensus/index.html | 2 +- es/develop/auto-sdk/drive/index.html | 2 +- es/develop/auto-sdk/index.html | 2 +- es/develop/auto-sdk/intro/index.html | 2 +- es/develop/auto-sdk/utils/index.html | 2 +- es/develop/auto-sdk/xdm/index.html | 2 +- es/develop/intro/index.html | 2 +- es/develop/nova/block-explorer/index.html | 2 +- es/develop/nova/faucet/index.html | 2 +- es/develop/nova/general/index.html | 2 +- es/develop/nova/guides/foundry/index.html | 2 +- es/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- es/develop/nova/guides/remix/index.html | 2 +- es/develop/nova/index.html | 2 +- es/develop/nova/introduction/index.html | 2 +- es/develop/nova/metamask/index.html | 2 +- es/farming/advanced-cli/cluster/index.html | 2 +- es/farming/advanced-cli/install/index.html | 2 +- es/farming/advanced-cli/tips/index.html | 2 +- es/farming/common-problems/index.html | 2 +- es/farming/guides/gpu-plotter/index.html | 7 ++----- es/farming/guides/grafana-dashboard/index.html | 2 +- es/farming/guides/index.html | 2 +- es/farming/guides/port-config/index.html | 2 +- es/farming/guides/verified-farmer/index.html | 2 +- es/farming/intro/index.html | 2 +- es/farming/space-acres/install/index.html | 2 +- es/farming/space-acres/translate/index.html | 2 +- es/farming/timekeeper/index.html | 2 +- es/index.html | 2 +- es/learn/academy/index.html | 2 +- es/learn/intro/index.html | 2 +- es/learn/security/index.html | 2 +- es/markdown-page/index.html | 2 +- es/participate/community/resources/index.html | 2 +- es/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- es/participate/contribute/intro/index.html | 2 +- es/participate/contribute/translate/index.html | 2 +- es/staking/intro/index.html | 2 +- es/staking/operator/deregister/index.html | 2 +- es/staking/operator/register/index.html | 2 +- es/staking/operator/tips/index.html | 2 +- es/staking/stake/index.html | 2 +- es/wallets/polkadot/index.html | 2 +- es/wallets/subwallet/index.html | 2 +- farming/advanced-cli/cluster/index.html | 2 +- farming/advanced-cli/install/index.html | 2 +- farming/advanced-cli/tips/index.html | 2 +- farming/common-problems/index.html | 2 +- farming/guides/gpu-plotter/index.html | 7 ++----- farming/guides/grafana-dashboard/index.html | 2 +- farming/guides/index.html | 2 +- farming/guides/port-config/index.html | 2 +- farming/guides/verified-farmer/index.html | 2 +- farming/intro/index.html | 2 +- farming/space-acres/install/index.html | 2 +- farming/space-acres/translate/index.html | 2 +- farming/timekeeper/index.html | 2 +- fr/404.html | 2 +- fr/assets/js/c8a8cac7.18846e41.js | 1 - fr/assets/js/c8a8cac7.8f8f8feb.js | 1 + ...~main.1b536fd6.js => runtime~main.8eec1dee.js} | 2 +- fr/category/farming/index.html | 2 +- fr/develop/auto-sdk/auto-id/index.html | 2 +- fr/develop/auto-sdk/consensus/index.html | 2 +- fr/develop/auto-sdk/drive/index.html | 2 +- fr/develop/auto-sdk/index.html | 2 +- fr/develop/auto-sdk/intro/index.html | 2 +- fr/develop/auto-sdk/utils/index.html | 2 +- fr/develop/auto-sdk/xdm/index.html | 2 +- fr/develop/intro/index.html | 2 +- fr/develop/nova/block-explorer/index.html | 2 +- fr/develop/nova/faucet/index.html | 2 +- fr/develop/nova/general/index.html | 2 +- fr/develop/nova/guides/foundry/index.html | 2 +- fr/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- fr/develop/nova/guides/remix/index.html | 2 +- fr/develop/nova/index.html | 2 +- fr/develop/nova/introduction/index.html | 2 +- fr/develop/nova/metamask/index.html | 2 +- fr/farming/advanced-cli/cluster/index.html | 2 +- fr/farming/advanced-cli/install/index.html | 2 +- fr/farming/advanced-cli/tips/index.html | 2 +- fr/farming/common-problems/index.html | 2 +- fr/farming/guides/gpu-plotter/index.html | 7 ++----- fr/farming/guides/grafana-dashboard/index.html | 2 +- fr/farming/guides/index.html | 2 +- fr/farming/guides/port-config/index.html | 2 +- fr/farming/guides/verified-farmer/index.html | 2 +- fr/farming/intro/index.html | 2 +- fr/farming/space-acres/install/index.html | 2 +- fr/farming/space-acres/translate/index.html | 2 +- fr/farming/timekeeper/index.html | 2 +- fr/index.html | 2 +- fr/learn/academy/index.html | 2 +- fr/learn/intro/index.html | 2 +- fr/learn/security/index.html | 2 +- fr/markdown-page/index.html | 2 +- fr/participate/community/resources/index.html | 2 +- fr/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- fr/participate/contribute/intro/index.html | 2 +- fr/participate/contribute/translate/index.html | 2 +- fr/staking/intro/index.html | 2 +- fr/staking/operator/deregister/index.html | 2 +- fr/staking/operator/register/index.html | 2 +- fr/staking/operator/tips/index.html | 2 +- fr/staking/stake/index.html | 2 +- fr/wallets/polkadot/index.html | 2 +- fr/wallets/subwallet/index.html | 2 +- id/404.html | 2 +- id/assets/js/fdc3d773.cd34f383.js | 1 - id/assets/js/fdc3d773.d7659eab.js | 1 + ...~main.3f1d1be8.js => runtime~main.ee8d92cd.js} | 2 +- id/category/farming/index.html | 2 +- id/develop/auto-sdk/auto-id/index.html | 2 +- id/develop/auto-sdk/consensus/index.html | 2 +- id/develop/auto-sdk/drive/index.html | 2 +- id/develop/auto-sdk/index.html | 2 +- id/develop/auto-sdk/intro/index.html | 2 +- id/develop/auto-sdk/utils/index.html | 2 +- id/develop/auto-sdk/xdm/index.html | 2 +- id/develop/intro/index.html | 2 +- id/develop/nova/block-explorer/index.html | 2 +- id/develop/nova/faucet/index.html | 2 +- id/develop/nova/general/index.html | 2 +- id/develop/nova/guides/foundry/index.html | 2 +- id/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- id/develop/nova/guides/remix/index.html | 2 +- id/develop/nova/index.html | 2 +- id/develop/nova/introduction/index.html | 2 +- id/develop/nova/metamask/index.html | 2 +- id/farming/advanced-cli/cluster/index.html | 2 +- id/farming/advanced-cli/install/index.html | 2 +- id/farming/advanced-cli/tips/index.html | 2 +- id/farming/common-problems/index.html | 2 +- id/farming/guides/gpu-plotter/index.html | 7 ++----- id/farming/guides/grafana-dashboard/index.html | 2 +- id/farming/guides/index.html | 2 +- id/farming/guides/port-config/index.html | 2 +- id/farming/guides/verified-farmer/index.html | 2 +- id/farming/intro/index.html | 2 +- id/farming/space-acres/install/index.html | 2 +- id/farming/space-acres/translate/index.html | 2 +- id/farming/timekeeper/index.html | 2 +- id/index.html | 2 +- id/learn/academy/index.html | 2 +- id/learn/intro/index.html | 2 +- id/learn/security/index.html | 2 +- id/markdown-page/index.html | 2 +- id/participate/community/resources/index.html | 2 +- id/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- id/participate/contribute/intro/index.html | 2 +- id/participate/contribute/translate/index.html | 2 +- id/staking/intro/index.html | 2 +- id/staking/operator/deregister/index.html | 2 +- id/staking/operator/register/index.html | 2 +- id/staking/operator/tips/index.html | 2 +- id/staking/stake/index.html | 2 +- id/wallets/polkadot/index.html | 2 +- id/wallets/subwallet/index.html | 2 +- index.html | 2 +- it/404.html | 2 +- it/assets/js/234d3c19.1c1d08ab.js | 1 - it/assets/js/234d3c19.7a231a96.js | 1 + ...~main.7afd7cd5.js => runtime~main.243e21ba.js} | 2 +- it/category/farming/index.html | 2 +- it/develop/auto-sdk/auto-id/index.html | 2 +- it/develop/auto-sdk/consensus/index.html | 2 +- it/develop/auto-sdk/drive/index.html | 2 +- it/develop/auto-sdk/index.html | 2 +- it/develop/auto-sdk/intro/index.html | 2 +- it/develop/auto-sdk/utils/index.html | 2 +- it/develop/auto-sdk/xdm/index.html | 2 +- it/develop/intro/index.html | 2 +- it/develop/nova/block-explorer/index.html | 2 +- it/develop/nova/faucet/index.html | 2 +- it/develop/nova/general/index.html | 2 +- it/develop/nova/guides/foundry/index.html | 2 +- it/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- it/develop/nova/guides/remix/index.html | 2 +- it/develop/nova/index.html | 2 +- it/develop/nova/introduction/index.html | 2 +- it/develop/nova/metamask/index.html | 2 +- it/farming/advanced-cli/cluster/index.html | 2 +- it/farming/advanced-cli/install/index.html | 2 +- it/farming/advanced-cli/tips/index.html | 2 +- it/farming/common-problems/index.html | 2 +- it/farming/guides/gpu-plotter/index.html | 7 ++----- it/farming/guides/grafana-dashboard/index.html | 2 +- it/farming/guides/index.html | 2 +- it/farming/guides/port-config/index.html | 2 +- it/farming/guides/verified-farmer/index.html | 2 +- it/farming/intro/index.html | 2 +- it/farming/space-acres/install/index.html | 2 +- it/farming/space-acres/translate/index.html | 2 +- it/farming/timekeeper/index.html | 2 +- it/index.html | 2 +- it/learn/academy/index.html | 2 +- it/learn/intro/index.html | 2 +- it/learn/security/index.html | 2 +- it/markdown-page/index.html | 2 +- it/participate/community/resources/index.html | 2 +- it/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- it/participate/contribute/intro/index.html | 2 +- it/participate/contribute/translate/index.html | 2 +- it/staking/intro/index.html | 2 +- it/staking/operator/deregister/index.html | 2 +- it/staking/operator/register/index.html | 2 +- it/staking/operator/tips/index.html | 2 +- it/staking/stake/index.html | 2 +- it/wallets/polkadot/index.html | 2 +- it/wallets/subwallet/index.html | 2 +- ja/404.html | 2 +- ja/assets/js/1a2f47b7.4cc1498a.js | 1 - ja/assets/js/1a2f47b7.5c49da20.js | 1 + ...~main.4b20d67f.js => runtime~main.ac6017b2.js} | 2 +- ja/category/farming/index.html | 2 +- ja/develop/auto-sdk/auto-id/index.html | 2 +- ja/develop/auto-sdk/consensus/index.html | 2 +- ja/develop/auto-sdk/drive/index.html | 2 +- ja/develop/auto-sdk/index.html | 2 +- ja/develop/auto-sdk/intro/index.html | 2 +- ja/develop/auto-sdk/utils/index.html | 2 +- ja/develop/auto-sdk/xdm/index.html | 2 +- ja/develop/intro/index.html | 2 +- ja/develop/nova/block-explorer/index.html | 2 +- ja/develop/nova/faucet/index.html | 2 +- ja/develop/nova/general/index.html | 2 +- ja/develop/nova/guides/foundry/index.html | 2 +- ja/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- ja/develop/nova/guides/remix/index.html | 2 +- ja/develop/nova/index.html | 2 +- ja/develop/nova/introduction/index.html | 2 +- ja/develop/nova/metamask/index.html | 2 +- ja/farming/advanced-cli/cluster/index.html | 2 +- ja/farming/advanced-cli/install/index.html | 2 +- ja/farming/advanced-cli/tips/index.html | 2 +- ja/farming/common-problems/index.html | 2 +- ja/farming/guides/gpu-plotter/index.html | 7 ++----- ja/farming/guides/grafana-dashboard/index.html | 2 +- ja/farming/guides/index.html | 2 +- ja/farming/guides/port-config/index.html | 2 +- ja/farming/guides/verified-farmer/index.html | 2 +- ja/farming/intro/index.html | 2 +- ja/farming/space-acres/install/index.html | 2 +- ja/farming/space-acres/translate/index.html | 2 +- ja/farming/timekeeper/index.html | 2 +- ja/index.html | 2 +- ja/learn/academy/index.html | 2 +- ja/learn/intro/index.html | 2 +- ja/learn/security/index.html | 2 +- ja/markdown-page/index.html | 2 +- ja/participate/community/resources/index.html | 2 +- ja/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- ja/participate/contribute/intro/index.html | 2 +- ja/participate/contribute/translate/index.html | 2 +- ja/staking/intro/index.html | 2 +- ja/staking/operator/deregister/index.html | 2 +- ja/staking/operator/register/index.html | 2 +- ja/staking/operator/tips/index.html | 2 +- ja/staking/stake/index.html | 2 +- ja/wallets/polkadot/index.html | 2 +- ja/wallets/subwallet/index.html | 2 +- learn/academy/index.html | 2 +- learn/intro/index.html | 2 +- learn/security/index.html | 2 +- markdown-page/index.html | 2 +- participate/community/resources/index.html | 2 +- participate/community/tools/index.html | 2 +- participate/contribute/code-of-conduct/index.html | 2 +- participate/contribute/intro/index.html | 2 +- participate/contribute/translate/index.html | 2 +- pl/404.html | 2 +- pl/assets/js/380c5315.111813e1.js | 1 - pl/assets/js/380c5315.f54ab75d.js | 1 + ...~main.cebe1d9f.js => runtime~main.b8bdda6d.js} | 2 +- pl/category/farming/index.html | 2 +- pl/develop/auto-sdk/auto-id/index.html | 2 +- pl/develop/auto-sdk/consensus/index.html | 2 +- pl/develop/auto-sdk/drive/index.html | 2 +- pl/develop/auto-sdk/index.html | 2 +- pl/develop/auto-sdk/intro/index.html | 2 +- pl/develop/auto-sdk/utils/index.html | 2 +- pl/develop/auto-sdk/xdm/index.html | 2 +- pl/develop/intro/index.html | 2 +- pl/develop/nova/block-explorer/index.html | 2 +- pl/develop/nova/faucet/index.html | 2 +- pl/develop/nova/general/index.html | 2 +- pl/develop/nova/guides/foundry/index.html | 2 +- pl/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- pl/develop/nova/guides/remix/index.html | 2 +- pl/develop/nova/index.html | 2 +- pl/develop/nova/introduction/index.html | 2 +- pl/develop/nova/metamask/index.html | 2 +- pl/farming/advanced-cli/cluster/index.html | 2 +- pl/farming/advanced-cli/install/index.html | 2 +- pl/farming/advanced-cli/tips/index.html | 2 +- pl/farming/common-problems/index.html | 2 +- pl/farming/guides/gpu-plotter/index.html | 7 ++----- pl/farming/guides/grafana-dashboard/index.html | 2 +- pl/farming/guides/index.html | 2 +- pl/farming/guides/port-config/index.html | 2 +- pl/farming/guides/verified-farmer/index.html | 2 +- pl/farming/intro/index.html | 2 +- pl/farming/space-acres/install/index.html | 2 +- pl/farming/space-acres/translate/index.html | 2 +- pl/farming/timekeeper/index.html | 2 +- pl/index.html | 2 +- pl/learn/academy/index.html | 2 +- pl/learn/intro/index.html | 2 +- pl/learn/security/index.html | 2 +- pl/markdown-page/index.html | 2 +- pl/participate/community/resources/index.html | 2 +- pl/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- pl/participate/contribute/intro/index.html | 2 +- pl/participate/contribute/translate/index.html | 2 +- pl/staking/intro/index.html | 2 +- pl/staking/operator/deregister/index.html | 2 +- pl/staking/operator/register/index.html | 2 +- pl/staking/operator/tips/index.html | 2 +- pl/staking/stake/index.html | 2 +- pl/wallets/polkadot/index.html | 2 +- pl/wallets/subwallet/index.html | 2 +- pt/404.html | 2 +- pt/assets/js/d1a2a840.06531b51.js | 1 + pt/assets/js/d1a2a840.40a6e7d0.js | 1 - ...~main.eeba5dec.js => runtime~main.38009c0d.js} | 2 +- pt/category/farming/index.html | 2 +- pt/develop/auto-sdk/auto-id/index.html | 2 +- pt/develop/auto-sdk/consensus/index.html | 2 +- pt/develop/auto-sdk/drive/index.html | 2 +- pt/develop/auto-sdk/index.html | 2 +- pt/develop/auto-sdk/intro/index.html | 2 +- pt/develop/auto-sdk/utils/index.html | 2 +- pt/develop/auto-sdk/xdm/index.html | 2 +- pt/develop/intro/index.html | 2 +- pt/develop/nova/block-explorer/index.html | 2 +- pt/develop/nova/faucet/index.html | 2 +- pt/develop/nova/general/index.html | 2 +- pt/develop/nova/guides/foundry/index.html | 2 +- pt/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- pt/develop/nova/guides/remix/index.html | 2 +- pt/develop/nova/index.html | 2 +- pt/develop/nova/introduction/index.html | 2 +- pt/develop/nova/metamask/index.html | 2 +- pt/farming/advanced-cli/cluster/index.html | 2 +- pt/farming/advanced-cli/install/index.html | 2 +- pt/farming/advanced-cli/tips/index.html | 2 +- pt/farming/common-problems/index.html | 2 +- pt/farming/guides/gpu-plotter/index.html | 7 ++----- pt/farming/guides/grafana-dashboard/index.html | 2 +- pt/farming/guides/index.html | 2 +- pt/farming/guides/port-config/index.html | 2 +- pt/farming/guides/verified-farmer/index.html | 2 +- pt/farming/intro/index.html | 2 +- pt/farming/space-acres/install/index.html | 2 +- pt/farming/space-acres/translate/index.html | 2 +- pt/farming/timekeeper/index.html | 2 +- pt/index.html | 2 +- pt/learn/academy/index.html | 2 +- pt/learn/intro/index.html | 2 +- pt/learn/security/index.html | 2 +- pt/markdown-page/index.html | 2 +- pt/participate/community/resources/index.html | 2 +- pt/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- pt/participate/contribute/intro/index.html | 2 +- pt/participate/contribute/translate/index.html | 2 +- pt/staking/intro/index.html | 2 +- pt/staking/operator/deregister/index.html | 2 +- pt/staking/operator/register/index.html | 2 +- pt/staking/operator/tips/index.html | 2 +- pt/staking/stake/index.html | 2 +- pt/wallets/polkadot/index.html | 2 +- pt/wallets/subwallet/index.html | 2 +- ru/404.html | 2 +- ru/assets/js/61081e08.543d4971.js | 1 - ru/assets/js/61081e08.cf2300c0.js | 1 + ...~main.412fd006.js => runtime~main.aa673264.js} | 2 +- ru/category/farming/index.html | 2 +- ru/develop/auto-sdk/auto-id/index.html | 2 +- ru/develop/auto-sdk/consensus/index.html | 2 +- ru/develop/auto-sdk/drive/index.html | 2 +- ru/develop/auto-sdk/index.html | 2 +- ru/develop/auto-sdk/intro/index.html | 2 +- ru/develop/auto-sdk/utils/index.html | 2 +- ru/develop/auto-sdk/xdm/index.html | 2 +- ru/develop/intro/index.html | 2 +- ru/develop/nova/block-explorer/index.html | 2 +- ru/develop/nova/faucet/index.html | 2 +- ru/develop/nova/general/index.html | 2 +- ru/develop/nova/guides/foundry/index.html | 2 +- ru/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- ru/develop/nova/guides/remix/index.html | 2 +- ru/develop/nova/index.html | 2 +- ru/develop/nova/introduction/index.html | 2 +- ru/develop/nova/metamask/index.html | 2 +- ru/farming/advanced-cli/cluster/index.html | 2 +- ru/farming/advanced-cli/install/index.html | 2 +- ru/farming/advanced-cli/tips/index.html | 2 +- ru/farming/common-problems/index.html | 2 +- ru/farming/guides/gpu-plotter/index.html | 7 ++----- ru/farming/guides/grafana-dashboard/index.html | 2 +- ru/farming/guides/index.html | 2 +- ru/farming/guides/port-config/index.html | 2 +- ru/farming/guides/verified-farmer/index.html | 2 +- ru/farming/intro/index.html | 2 +- ru/farming/space-acres/install/index.html | 2 +- ru/farming/space-acres/translate/index.html | 2 +- ru/farming/timekeeper/index.html | 2 +- ru/index.html | 2 +- ru/learn/academy/index.html | 2 +- ru/learn/intro/index.html | 2 +- ru/learn/security/index.html | 2 +- ru/markdown-page/index.html | 2 +- ru/participate/community/resources/index.html | 2 +- ru/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- ru/participate/contribute/intro/index.html | 2 +- ru/participate/contribute/translate/index.html | 2 +- ru/staking/intro/index.html | 2 +- ru/staking/operator/deregister/index.html | 2 +- ru/staking/operator/register/index.html | 2 +- ru/staking/operator/tips/index.html | 2 +- ru/staking/stake/index.html | 2 +- ru/wallets/polkadot/index.html | 2 +- ru/wallets/subwallet/index.html | 2 +- staking/intro/index.html | 2 +- staking/operator/deregister/index.html | 2 +- staking/operator/register/index.html | 2 +- staking/operator/tips/index.html | 2 +- staking/stake/index.html | 2 +- tr/404.html | 2 +- tr/assets/js/ec89d9cb.31185c31.js | 1 - tr/assets/js/ec89d9cb.dfac7ef6.js | 1 + ...~main.8ba90f51.js => runtime~main.953e62a6.js} | 2 +- tr/category/farming/index.html | 2 +- tr/develop/auto-sdk/auto-id/index.html | 2 +- tr/develop/auto-sdk/consensus/index.html | 2 +- tr/develop/auto-sdk/drive/index.html | 2 +- tr/develop/auto-sdk/index.html | 2 +- tr/develop/auto-sdk/intro/index.html | 2 +- tr/develop/auto-sdk/utils/index.html | 2 +- tr/develop/auto-sdk/xdm/index.html | 2 +- tr/develop/intro/index.html | 2 +- tr/develop/nova/block-explorer/index.html | 2 +- tr/develop/nova/faucet/index.html | 2 +- tr/develop/nova/general/index.html | 2 +- tr/develop/nova/guides/foundry/index.html | 2 +- tr/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- tr/develop/nova/guides/remix/index.html | 2 +- tr/develop/nova/index.html | 2 +- tr/develop/nova/introduction/index.html | 2 +- tr/develop/nova/metamask/index.html | 2 +- tr/farming/advanced-cli/cluster/index.html | 2 +- tr/farming/advanced-cli/install/index.html | 2 +- tr/farming/advanced-cli/tips/index.html | 2 +- tr/farming/common-problems/index.html | 2 +- tr/farming/guides/gpu-plotter/index.html | 7 ++----- tr/farming/guides/grafana-dashboard/index.html | 2 +- tr/farming/guides/index.html | 2 +- tr/farming/guides/port-config/index.html | 2 +- tr/farming/guides/verified-farmer/index.html | 2 +- tr/farming/intro/index.html | 2 +- tr/farming/space-acres/install/index.html | 2 +- tr/farming/space-acres/translate/index.html | 2 +- tr/farming/timekeeper/index.html | 2 +- tr/index.html | 2 +- tr/learn/academy/index.html | 2 +- tr/learn/intro/index.html | 2 +- tr/learn/security/index.html | 2 +- tr/markdown-page/index.html | 2 +- tr/participate/community/resources/index.html | 2 +- tr/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- tr/participate/contribute/intro/index.html | 2 +- tr/participate/contribute/translate/index.html | 2 +- tr/staking/intro/index.html | 2 +- tr/staking/operator/deregister/index.html | 2 +- tr/staking/operator/register/index.html | 2 +- tr/staking/operator/tips/index.html | 2 +- tr/staking/stake/index.html | 2 +- tr/wallets/polkadot/index.html | 2 +- tr/wallets/subwallet/index.html | 2 +- uk/404.html | 2 +- uk/assets/js/958fbda6.a0fc2f4e.js | 1 + uk/assets/js/958fbda6.a2d86a20.js | 1 - ...~main.02e3173c.js => runtime~main.3705489b.js} | 2 +- uk/category/farming/index.html | 2 +- uk/develop/auto-sdk/auto-id/index.html | 2 +- uk/develop/auto-sdk/consensus/index.html | 2 +- uk/develop/auto-sdk/drive/index.html | 2 +- uk/develop/auto-sdk/index.html | 2 +- uk/develop/auto-sdk/intro/index.html | 2 +- uk/develop/auto-sdk/utils/index.html | 2 +- uk/develop/auto-sdk/xdm/index.html | 2 +- uk/develop/intro/index.html | 2 +- uk/develop/nova/block-explorer/index.html | 2 +- uk/develop/nova/faucet/index.html | 2 +- uk/develop/nova/general/index.html | 2 +- uk/develop/nova/guides/foundry/index.html | 2 +- uk/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- uk/develop/nova/guides/remix/index.html | 2 +- uk/develop/nova/index.html | 2 +- uk/develop/nova/introduction/index.html | 2 +- uk/develop/nova/metamask/index.html | 2 +- uk/farming/advanced-cli/cluster/index.html | 2 +- uk/farming/advanced-cli/install/index.html | 2 +- uk/farming/advanced-cli/tips/index.html | 2 +- uk/farming/common-problems/index.html | 2 +- uk/farming/guides/gpu-plotter/index.html | 7 ++----- uk/farming/guides/grafana-dashboard/index.html | 2 +- uk/farming/guides/index.html | 2 +- uk/farming/guides/port-config/index.html | 2 +- uk/farming/guides/verified-farmer/index.html | 2 +- uk/farming/intro/index.html | 2 +- uk/farming/space-acres/install/index.html | 2 +- uk/farming/space-acres/translate/index.html | 2 +- uk/farming/timekeeper/index.html | 2 +- uk/index.html | 2 +- uk/learn/academy/index.html | 2 +- uk/learn/intro/index.html | 2 +- uk/learn/security/index.html | 2 +- uk/markdown-page/index.html | 2 +- uk/participate/community/resources/index.html | 2 +- uk/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- uk/participate/contribute/intro/index.html | 2 +- uk/participate/contribute/translate/index.html | 2 +- uk/staking/intro/index.html | 2 +- uk/staking/operator/deregister/index.html | 2 +- uk/staking/operator/register/index.html | 2 +- uk/staking/operator/tips/index.html | 2 +- uk/staking/stake/index.html | 2 +- uk/wallets/polkadot/index.html | 2 +- uk/wallets/subwallet/index.html | 2 +- vi/404.html | 2 +- vi/assets/js/74bde01b.0c1fefbd.js | 1 + vi/assets/js/74bde01b.94e4250a.js | 1 - ...~main.cb7e0cae.js => runtime~main.f633f223.js} | 2 +- vi/category/farming/index.html | 2 +- vi/develop/auto-sdk/auto-id/index.html | 2 +- vi/develop/auto-sdk/consensus/index.html | 2 +- vi/develop/auto-sdk/drive/index.html | 2 +- vi/develop/auto-sdk/index.html | 2 +- vi/develop/auto-sdk/intro/index.html | 2 +- vi/develop/auto-sdk/utils/index.html | 2 +- vi/develop/auto-sdk/xdm/index.html | 2 +- vi/develop/intro/index.html | 2 +- vi/develop/nova/block-explorer/index.html | 2 +- vi/develop/nova/faucet/index.html | 2 +- vi/develop/nova/general/index.html | 2 +- vi/develop/nova/guides/foundry/index.html | 2 +- vi/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- vi/develop/nova/guides/remix/index.html | 2 +- vi/develop/nova/index.html | 2 +- vi/develop/nova/introduction/index.html | 2 +- vi/develop/nova/metamask/index.html | 2 +- vi/farming/advanced-cli/cluster/index.html | 2 +- vi/farming/advanced-cli/install/index.html | 2 +- vi/farming/advanced-cli/tips/index.html | 2 +- vi/farming/common-problems/index.html | 2 +- vi/farming/guides/gpu-plotter/index.html | 7 ++----- vi/farming/guides/grafana-dashboard/index.html | 2 +- vi/farming/guides/index.html | 2 +- vi/farming/guides/port-config/index.html | 2 +- vi/farming/guides/verified-farmer/index.html | 2 +- vi/farming/intro/index.html | 2 +- vi/farming/space-acres/install/index.html | 2 +- vi/farming/space-acres/translate/index.html | 2 +- vi/farming/timekeeper/index.html | 2 +- vi/index.html | 2 +- vi/learn/academy/index.html | 2 +- vi/learn/intro/index.html | 2 +- vi/learn/security/index.html | 2 +- vi/markdown-page/index.html | 2 +- vi/participate/community/resources/index.html | 2 +- vi/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- vi/participate/contribute/intro/index.html | 2 +- vi/participate/contribute/translate/index.html | 2 +- vi/staking/intro/index.html | 2 +- vi/staking/operator/deregister/index.html | 2 +- vi/staking/operator/register/index.html | 2 +- vi/staking/operator/tips/index.html | 2 +- vi/staking/stake/index.html | 2 +- vi/wallets/polkadot/index.html | 2 +- vi/wallets/subwallet/index.html | 2 +- wallets/polkadot/index.html | 2 +- wallets/subwallet/index.html | 2 +- zh/404.html | 2 +- zh/assets/js/a9920f74.53c598e4.js | 1 - zh/assets/js/a9920f74.b5ceffd2.js | 1 + ...~main.3be9ac9c.js => runtime~main.9366ed20.js} | 2 +- zh/category/farming/index.html | 2 +- zh/develop/auto-sdk/auto-id/index.html | 2 +- zh/develop/auto-sdk/consensus/index.html | 2 +- zh/develop/auto-sdk/drive/index.html | 2 +- zh/develop/auto-sdk/index.html | 2 +- zh/develop/auto-sdk/intro/index.html | 2 +- zh/develop/auto-sdk/utils/index.html | 2 +- zh/develop/auto-sdk/xdm/index.html | 2 +- zh/develop/intro/index.html | 2 +- zh/develop/nova/block-explorer/index.html | 2 +- zh/develop/nova/faucet/index.html | 2 +- zh/develop/nova/general/index.html | 2 +- zh/develop/nova/guides/foundry/index.html | 2 +- zh/develop/nova/guides/hardhat/index.html | 2 +- .../nova/guides/local-development/index.html | 2 +- zh/develop/nova/guides/remix/index.html | 2 +- zh/develop/nova/index.html | 2 +- zh/develop/nova/introduction/index.html | 2 +- zh/develop/nova/metamask/index.html | 2 +- zh/farming/advanced-cli/cluster/index.html | 2 +- zh/farming/advanced-cli/install/index.html | 2 +- zh/farming/advanced-cli/tips/index.html | 2 +- zh/farming/common-problems/index.html | 2 +- zh/farming/guides/gpu-plotter/index.html | 15 ++++++--------- zh/farming/guides/grafana-dashboard/index.html | 2 +- zh/farming/guides/index.html | 2 +- zh/farming/guides/port-config/index.html | 2 +- zh/farming/guides/verified-farmer/index.html | 2 +- zh/farming/intro/index.html | 2 +- zh/farming/space-acres/install/index.html | 2 +- zh/farming/space-acres/translate/index.html | 2 +- zh/farming/timekeeper/index.html | 2 +- zh/index.html | 2 +- zh/learn/academy/index.html | 2 +- zh/learn/intro/index.html | 2 +- zh/learn/security/index.html | 2 +- zh/markdown-page/index.html | 2 +- zh/participate/community/resources/index.html | 2 +- zh/participate/community/tools/index.html | 2 +- .../contribute/code-of-conduct/index.html | 2 +- zh/participate/contribute/intro/index.html | 2 +- zh/participate/contribute/translate/index.html | 2 +- zh/staking/intro/index.html | 2 +- zh/staking/operator/deregister/index.html | 2 +- zh/staking/operator/register/index.html | 2 +- zh/staking/operator/tips/index.html | 2 +- zh/staking/stake/index.html | 2 +- zh/wallets/polkadot/index.html | 2 +- zh/wallets/subwallet/index.html | 2 +- 794 files changed, 799 insertions(+), 844 deletions(-) create mode 100644 ar/assets/js/7c819db0.5e71386a.js rename ar/assets/js/{runtime~main.4375fc16.js => runtime~main.d04241f7.js} (97%) delete mode 100644 assets/js/11bc8d76.4f52c8e5.js rename ar/assets/js/7c819db0.2601bfbe.js => assets/js/11bc8d76.b3f4e2a2.js (57%) rename assets/js/{runtime~main.ee27da08.js => runtime~main.97f18d22.js} (60%) delete mode 100644 de/assets/js/7576aedf.cc856e4b.js create mode 100644 de/assets/js/7576aedf.fd4de950.js rename de/assets/js/{runtime~main.fc8c97d3.js => runtime~main.d24efeb2.js} (98%) delete mode 100644 es/assets/js/c462c969.85567de6.js create mode 100644 es/assets/js/c462c969.a2893557.js rename es/assets/js/{runtime~main.ba0d8e5e.js => runtime~main.61ec363c.js} (98%) delete mode 100644 fr/assets/js/c8a8cac7.18846e41.js create mode 100644 fr/assets/js/c8a8cac7.8f8f8feb.js rename fr/assets/js/{runtime~main.1b536fd6.js => runtime~main.8eec1dee.js} (98%) delete mode 100644 id/assets/js/fdc3d773.cd34f383.js create mode 100644 id/assets/js/fdc3d773.d7659eab.js rename id/assets/js/{runtime~main.3f1d1be8.js => runtime~main.ee8d92cd.js} (69%) delete mode 100644 it/assets/js/234d3c19.1c1d08ab.js create mode 100644 it/assets/js/234d3c19.7a231a96.js rename it/assets/js/{runtime~main.7afd7cd5.js => runtime~main.243e21ba.js} (98%) delete mode 100644 ja/assets/js/1a2f47b7.4cc1498a.js create mode 100644 ja/assets/js/1a2f47b7.5c49da20.js rename ja/assets/js/{runtime~main.4b20d67f.js => runtime~main.ac6017b2.js} (98%) delete mode 100644 pl/assets/js/380c5315.111813e1.js create mode 100644 pl/assets/js/380c5315.f54ab75d.js rename pl/assets/js/{runtime~main.cebe1d9f.js => runtime~main.b8bdda6d.js} (68%) create mode 100644 pt/assets/js/d1a2a840.06531b51.js delete mode 100644 pt/assets/js/d1a2a840.40a6e7d0.js rename pt/assets/js/{runtime~main.eeba5dec.js => runtime~main.38009c0d.js} (98%) delete mode 100644 ru/assets/js/61081e08.543d4971.js create mode 100644 ru/assets/js/61081e08.cf2300c0.js rename ru/assets/js/{runtime~main.412fd006.js => runtime~main.aa673264.js} (98%) delete mode 100644 tr/assets/js/ec89d9cb.31185c31.js create mode 100644 tr/assets/js/ec89d9cb.dfac7ef6.js rename tr/assets/js/{runtime~main.8ba90f51.js => runtime~main.953e62a6.js} (61%) create mode 100644 uk/assets/js/958fbda6.a0fc2f4e.js delete mode 100644 uk/assets/js/958fbda6.a2d86a20.js rename uk/assets/js/{runtime~main.02e3173c.js => runtime~main.3705489b.js} (98%) create mode 100644 vi/assets/js/74bde01b.0c1fefbd.js delete mode 100644 vi/assets/js/74bde01b.94e4250a.js rename vi/assets/js/{runtime~main.cb7e0cae.js => runtime~main.f633f223.js} (98%) delete mode 100644 zh/assets/js/a9920f74.53c598e4.js create mode 100644 zh/assets/js/a9920f74.b5ceffd2.js rename zh/assets/js/{runtime~main.3be9ac9c.js => runtime~main.9366ed20.js} (97%) diff --git a/404.html b/404.html index 221f47cd501..ec7a8d7c48c 100644 --- a/404.html +++ b/404.html @@ -12,7 +12,7 @@ - + diff --git a/ar/404.html b/ar/404.html index 8380bd9c82e..c688cad2a78 100644 --- a/ar/404.html +++ b/ar/404.html @@ -12,7 +12,7 @@ - + diff --git a/ar/assets/js/7c819db0.5e71386a.js b/ar/assets/js/7c819db0.5e71386a.js new file mode 100644 index 00000000000..4e49b17958f --- /dev/null +++ b/ar/assets/js/7c819db0.5e71386a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[9073],{9295:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const a={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","\u0627\u0644\u0645\u0632\u0631\u0639\u0629","GPU"]},o=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/ar/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/ar/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","\u0627\u0644\u0645\u0632\u0631\u0639\u0629","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/ar/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/ar/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2}];function h(e){const t={a:"a",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>A});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),a=n(205),o=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,o.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,o]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),j=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{j&&o(j)}),[j]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const j={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:a}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=o.indexOf(t),s=a[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=o.indexOf(e.currentTarget)+1;t=o[n]??o[0];break}case"ArrowLeft":{const n=o.indexOf(e.currentTarget)-1;t=o[n]??o[o.length-1];break}}t?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:a.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>o.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",j.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,f.jsxs)("div",{className:(0,s.A)("tabs-container",j.tabList),children:[(0,f.jsx)(y,{...t,...e}),(0,f.jsx)(b,{...t,...e})]})}function A(e){const t=(0,g.A)();return(0,f.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>a});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/ar/assets/js/runtime~main.4375fc16.js b/ar/assets/js/runtime~main.d04241f7.js similarity index 97% rename from ar/assets/js/runtime~main.4375fc16.js rename to ar/assets/js/runtime~main.d04241f7.js index 98a357ff7f0..cb9c1af3f16 100644 --- a/ar/assets/js/runtime~main.4375fc16.js +++ b/ar/assets/js/runtime~main.d04241f7.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,d,t,r,c={},f={};function b(e){var a=f[e];if(void 0!==a)return a.exports;var d=f[e]={exports:{}};return c[e].call(d.exports,d,d.exports,b),d.exports}b.m=c,e=[],b.O=(a,d,t,r)=>{if(!d){var c=1/0;for(i=0;i=r)&&Object.keys(b.O).every((e=>b.O[e](d[o])))?d.splice(o--,1):(f=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[d,t,r]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);b.r(r);var c={};a=a||[null,d({}),d([]),d(d)];for(var f=2&t&&e;"object"==typeof f&&!~a.indexOf(f);f=d(f))Object.getOwnPropertyNames(f).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,b.d(r,c),r},b.d=(e,a)=>{for(var d in a)b.o(a,d)&&!b.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,d)=>(b.f[d](e,a),a)),[])),b.u=e=>"assets/js/"+({143:"4436588d",279:"17d9b19a",941:"82d21c3c",1012:"5e290e07",1235:"a7456010",1386:"7775cfd0",1432:"c89a23c0",1444:"1774e838",1582:"62d0db3f",1837:"00948bd3",2145:"c0d5e683",2569:"bf5612e1",2803:"913dfbcb",3038:"df20ed19",3082:"6e6bb85c",3123:"b39d28ca",3225:"9a118183",3496:"1a9801f5",3610:"5ae9e0a5",3676:"38c2282a",3759:"6cb84887",4134:"393be207",4215:"f70e4295",4427:"35845b30",4583:"1df93b7f",4626:"313239e1",4872:"14407e84",4884:"bc512657",4904:"33d8be73",5184:"ef8f1d8d",5303:"1e1adddd",5420:"c36e072c",5742:"aba21aa0",6006:"68eaaf71",6061:"1f391b9e",6062:"a1cc76ae",6738:"af27fe5e",6969:"14eb3368",7098:"a7bd4aaa",7874:"8319886f",8006:"5d9dce4a",8353:"7e234807",8401:"17896441",8710:"1c785638",8909:"1d867a6a",9031:"e0e0d68b",9048:"a94703ab",9073:"7c819db0",9200:"7e20936c",9218:"df9c989c",9289:"5277a143",9297:"bdc4553b",9329:"88a6d0a0",9510:"14ba5576",9647:"5e95c892",9668:"5ceb1184",9745:"af84bfa0",9762:"e1f2eb1e"}[e]||e)+"."+{143:"369df06a",279:"d1052ce4",941:"1e3d5326",1012:"bc4da5b6",1235:"deb810c9",1386:"7a669d42",1432:"1aed06ea",1444:"fa726154",1582:"b09f0374",1688:"af0e6f17",1837:"01960f27",2145:"51ae8346",2237:"c851d8b1",2440:"ecd0621f",2569:"17648872",2803:"5e50bc2c",3038:"7f98a23e",3082:"40ae41a4",3123:"5888e151",3225:"591ddee4",3496:"8cdac2a7",3610:"d8d181fd",3676:"f91a1772",3759:"9bc9f711",4134:"d6ce847f",4215:"d00053b0",4324:"fec3e18f",4427:"a07142ff",4583:"c0d080f8",4626:"04fdfc56",4872:"5356785d",4884:"4abbd701",4904:"99c76cda",5049:"7f13b97c",5184:"252d52ce",5303:"ca5029f1",5394:"83d77ce3",5420:"1df726a6",5742:"08d6695f",6006:"d7b49216",6061:"fc18f174",6062:"da9183c3",6688:"86f0bb7d",6738:"939ab19a",6969:"4f11b87f",7098:"c4e87eeb",7874:"12cda8b9",8006:"1724aa24",8353:"8d881393",8401:"3769c7ca",8710:"b029a952",8909:"d2a90691",8913:"0680f2c1",9031:"ee26499c",9048:"3a629456",9073:"2601bfbe",9200:"2843dc4a",9218:"d7871fd7",9289:"9bedf431",9297:"3bf54687",9329:"a5a9e743",9462:"be2eb63e",9510:"1362812c",9647:"e4c313e0",9668:"7bbdf7cf",9745:"868fe9d6",9762:"8baaa4f4"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="portal:",b.l=(e,a,d,c)=>{if(t[e])t[e].push(a);else{var f,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{f.onerror=f.onload=null,clearTimeout(s);var r=t[e];if(delete t[e],f.parentNode&&f.parentNode.removeChild(f),r&&r.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=l.bind(null,f.onerror),f.onload=l.bind(null,f.onload),o&&document.head.appendChild(f)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/ar/",b.gca=function(e){return e={17896441:"8401","4436588d":"143","17d9b19a":"279","82d21c3c":"941","5e290e07":"1012",a7456010:"1235","7775cfd0":"1386",c89a23c0:"1432","1774e838":"1444","62d0db3f":"1582","00948bd3":"1837",c0d5e683:"2145",bf5612e1:"2569","913dfbcb":"2803",df20ed19:"3038","6e6bb85c":"3082",b39d28ca:"3123","9a118183":"3225","1a9801f5":"3496","5ae9e0a5":"3610","38c2282a":"3676","6cb84887":"3759","393be207":"4134",f70e4295:"4215","35845b30":"4427","1df93b7f":"4583","313239e1":"4626","14407e84":"4872",bc512657:"4884","33d8be73":"4904",ef8f1d8d:"5184","1e1adddd":"5303",c36e072c:"5420",aba21aa0:"5742","68eaaf71":"6006","1f391b9e":"6061",a1cc76ae:"6062",af27fe5e:"6738","14eb3368":"6969",a7bd4aaa:"7098","8319886f":"7874","5d9dce4a":"8006","7e234807":"8353","1c785638":"8710","1d867a6a":"8909",e0e0d68b:"9031",a94703ab:"9048","7c819db0":"9073","7e20936c":"9200",df9c989c:"9218","5277a143":"9289",bdc4553b:"9297","88a6d0a0":"9329","14ba5576":"9510","5e95c892":"9647","5ceb1184":"9668",af84bfa0:"9745",e1f2eb1e:"9762"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,d)=>{var t=b.o(e,a)?e[a]:void 0;if(0!==t)if(t)d.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var r=new Promise(((d,r)=>t=e[a]=[d,r]));d.push(t[2]=r);var c=b.p+b.u(a),f=new Error;b.l(c,(d=>{if(b.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=d&&("load"===d.type?"missing":d.type),c=d&&d.target&&d.target.src;f.message="Loading chunk "+a+" failed.\n("+r+": "+c+")",f.name="ChunkLoadError",f.type=r,f.request=c,t[1](f)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,d)=>{var t,r,c=d[0],f=d[1],o=d[2],n=0;if(c.some((a=>0!==e[a]))){for(t in f)b.o(f,t)&&(b.m[t]=f[t]);if(o)var i=o(b)}for(a&&a(d);n{"use strict";var e,a,d,t,r,c={},f={};function b(e){var a=f[e];if(void 0!==a)return a.exports;var d=f[e]={exports:{}};return c[e].call(d.exports,d,d.exports,b),d.exports}b.m=c,e=[],b.O=(a,d,t,r)=>{if(!d){var c=1/0;for(i=0;i=r)&&Object.keys(b.O).every((e=>b.O[e](d[o])))?d.splice(o--,1):(f=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[d,t,r]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);b.r(r);var c={};a=a||[null,d({}),d([]),d(d)];for(var f=2&t&&e;"object"==typeof f&&!~a.indexOf(f);f=d(f))Object.getOwnPropertyNames(f).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,b.d(r,c),r},b.d=(e,a)=>{for(var d in a)b.o(a,d)&&!b.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,d)=>(b.f[d](e,a),a)),[])),b.u=e=>"assets/js/"+({143:"4436588d",279:"17d9b19a",941:"82d21c3c",1012:"5e290e07",1235:"a7456010",1386:"7775cfd0",1432:"c89a23c0",1444:"1774e838",1582:"62d0db3f",1837:"00948bd3",2145:"c0d5e683",2569:"bf5612e1",2803:"913dfbcb",3038:"df20ed19",3082:"6e6bb85c",3123:"b39d28ca",3225:"9a118183",3496:"1a9801f5",3610:"5ae9e0a5",3676:"38c2282a",3759:"6cb84887",4134:"393be207",4215:"f70e4295",4427:"35845b30",4583:"1df93b7f",4626:"313239e1",4872:"14407e84",4884:"bc512657",4904:"33d8be73",5184:"ef8f1d8d",5303:"1e1adddd",5420:"c36e072c",5742:"aba21aa0",6006:"68eaaf71",6061:"1f391b9e",6062:"a1cc76ae",6738:"af27fe5e",6969:"14eb3368",7098:"a7bd4aaa",7874:"8319886f",8006:"5d9dce4a",8353:"7e234807",8401:"17896441",8710:"1c785638",8909:"1d867a6a",9031:"e0e0d68b",9048:"a94703ab",9073:"7c819db0",9200:"7e20936c",9218:"df9c989c",9289:"5277a143",9297:"bdc4553b",9329:"88a6d0a0",9510:"14ba5576",9647:"5e95c892",9668:"5ceb1184",9745:"af84bfa0",9762:"e1f2eb1e"}[e]||e)+"."+{143:"369df06a",279:"d1052ce4",941:"1e3d5326",1012:"bc4da5b6",1235:"deb810c9",1386:"7a669d42",1432:"1aed06ea",1444:"fa726154",1582:"b09f0374",1688:"af0e6f17",1837:"01960f27",2145:"51ae8346",2237:"c851d8b1",2440:"ecd0621f",2569:"17648872",2803:"5e50bc2c",3038:"7f98a23e",3082:"40ae41a4",3123:"5888e151",3225:"591ddee4",3496:"8cdac2a7",3610:"d8d181fd",3676:"f91a1772",3759:"9bc9f711",4134:"d6ce847f",4215:"d00053b0",4324:"fec3e18f",4427:"a07142ff",4583:"c0d080f8",4626:"04fdfc56",4872:"5356785d",4884:"4abbd701",4904:"99c76cda",5049:"7f13b97c",5184:"252d52ce",5303:"ca5029f1",5394:"83d77ce3",5420:"1df726a6",5742:"08d6695f",6006:"d7b49216",6061:"fc18f174",6062:"da9183c3",6688:"86f0bb7d",6738:"939ab19a",6969:"4f11b87f",7098:"c4e87eeb",7874:"12cda8b9",8006:"1724aa24",8353:"8d881393",8401:"3769c7ca",8710:"b029a952",8909:"d2a90691",8913:"0680f2c1",9031:"ee26499c",9048:"3a629456",9073:"5e71386a",9200:"2843dc4a",9218:"d7871fd7",9289:"9bedf431",9297:"3bf54687",9329:"a5a9e743",9462:"be2eb63e",9510:"1362812c",9647:"e4c313e0",9668:"7bbdf7cf",9745:"868fe9d6",9762:"8baaa4f4"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="portal:",b.l=(e,a,d,c)=>{if(t[e])t[e].push(a);else{var f,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{f.onerror=f.onload=null,clearTimeout(s);var r=t[e];if(delete t[e],f.parentNode&&f.parentNode.removeChild(f),r&&r.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=l.bind(null,f.onerror),f.onload=l.bind(null,f.onload),o&&document.head.appendChild(f)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/ar/",b.gca=function(e){return e={17896441:"8401","4436588d":"143","17d9b19a":"279","82d21c3c":"941","5e290e07":"1012",a7456010:"1235","7775cfd0":"1386",c89a23c0:"1432","1774e838":"1444","62d0db3f":"1582","00948bd3":"1837",c0d5e683:"2145",bf5612e1:"2569","913dfbcb":"2803",df20ed19:"3038","6e6bb85c":"3082",b39d28ca:"3123","9a118183":"3225","1a9801f5":"3496","5ae9e0a5":"3610","38c2282a":"3676","6cb84887":"3759","393be207":"4134",f70e4295:"4215","35845b30":"4427","1df93b7f":"4583","313239e1":"4626","14407e84":"4872",bc512657:"4884","33d8be73":"4904",ef8f1d8d:"5184","1e1adddd":"5303",c36e072c:"5420",aba21aa0:"5742","68eaaf71":"6006","1f391b9e":"6061",a1cc76ae:"6062",af27fe5e:"6738","14eb3368":"6969",a7bd4aaa:"7098","8319886f":"7874","5d9dce4a":"8006","7e234807":"8353","1c785638":"8710","1d867a6a":"8909",e0e0d68b:"9031",a94703ab:"9048","7c819db0":"9073","7e20936c":"9200",df9c989c:"9218","5277a143":"9289",bdc4553b:"9297","88a6d0a0":"9329","14ba5576":"9510","5e95c892":"9647","5ceb1184":"9668",af84bfa0:"9745",e1f2eb1e:"9762"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,d)=>{var t=b.o(e,a)?e[a]:void 0;if(0!==t)if(t)d.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var r=new Promise(((d,r)=>t=e[a]=[d,r]));d.push(t[2]=r);var c=b.p+b.u(a),f=new Error;b.l(c,(d=>{if(b.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=d&&("load"===d.type?"missing":d.type),c=d&&d.target&&d.target.src;f.message="Loading chunk "+a+" failed.\n("+r+": "+c+")",f.name="ChunkLoadError",f.type=r,f.request=c,t[1](f)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,d)=>{var t,r,c=d[0],f=d[1],o=d[2],n=0;if(c.some((a=>0!==e[a]))){for(t in f)b.o(f,t)&&(b.m[t]=f[t]);if(o)var i=o(b)}for(a&&a(d);n - + diff --git a/ar/develop/auto-sdk/auto-id/index.html b/ar/develop/auto-sdk/auto-id/index.html index f8a2da52ea1..b842f974db3 100644 --- a/ar/develop/auto-sdk/auto-id/index.html +++ b/ar/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/auto-sdk/consensus/index.html b/ar/develop/auto-sdk/consensus/index.html index 8d926376084..7b62be16318 100644 --- a/ar/develop/auto-sdk/consensus/index.html +++ b/ar/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/auto-sdk/drive/index.html b/ar/develop/auto-sdk/drive/index.html index 82219c8ef94..4209377a2f5 100644 --- a/ar/develop/auto-sdk/drive/index.html +++ b/ar/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/auto-sdk/index.html b/ar/develop/auto-sdk/index.html index b76e168e93e..6191718b062 100644 --- a/ar/develop/auto-sdk/index.html +++ b/ar/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/auto-sdk/intro/index.html b/ar/develop/auto-sdk/intro/index.html index 047d545fa01..fc1b62bb575 100644 --- a/ar/develop/auto-sdk/intro/index.html +++ b/ar/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/auto-sdk/utils/index.html b/ar/develop/auto-sdk/utils/index.html index a3227e29796..a14e3a089a0 100644 --- a/ar/develop/auto-sdk/utils/index.html +++ b/ar/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/auto-sdk/xdm/index.html b/ar/develop/auto-sdk/xdm/index.html index 3087468be99..d0ebf5f0cf1 100644 --- a/ar/develop/auto-sdk/xdm/index.html +++ b/ar/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/intro/index.html b/ar/develop/intro/index.html index f61b475410c..ac39769723f 100644 --- a/ar/develop/intro/index.html +++ b/ar/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/nova/block-explorer/index.html b/ar/develop/nova/block-explorer/index.html index 7fd6f29905e..d6c0af435cb 100644 --- a/ar/develop/nova/block-explorer/index.html +++ b/ar/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/nova/faucet/index.html b/ar/develop/nova/faucet/index.html index b9cf0a64999..bbfa88befa9 100644 --- a/ar/develop/nova/faucet/index.html +++ b/ar/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/nova/general/index.html b/ar/develop/nova/general/index.html index 4ce2529c027..a08760bc84e 100644 --- a/ar/develop/nova/general/index.html +++ b/ar/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/nova/guides/foundry/index.html b/ar/develop/nova/guides/foundry/index.html index c42d2bdb051..89b4f0e1336 100644 --- a/ar/develop/nova/guides/foundry/index.html +++ b/ar/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/nova/guides/hardhat/index.html b/ar/develop/nova/guides/hardhat/index.html index 7cde3b3acf7..19c37b0a6da 100644 --- a/ar/develop/nova/guides/hardhat/index.html +++ b/ar/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/nova/guides/local-development/index.html b/ar/develop/nova/guides/local-development/index.html index 8decc80e84f..2639d46cbd1 100644 --- a/ar/develop/nova/guides/local-development/index.html +++ b/ar/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/nova/guides/remix/index.html b/ar/develop/nova/guides/remix/index.html index 48773d7d101..7e6cac5b7cb 100644 --- a/ar/develop/nova/guides/remix/index.html +++ b/ar/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/nova/index.html b/ar/develop/nova/index.html index 52c5af97a3c..04819266dba 100644 --- a/ar/develop/nova/index.html +++ b/ar/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/nova/introduction/index.html b/ar/develop/nova/introduction/index.html index a496dd070bc..565a5a99d20 100644 --- a/ar/develop/nova/introduction/index.html +++ b/ar/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/develop/nova/metamask/index.html b/ar/develop/nova/metamask/index.html index fff14b45c88..fc3df92cd78 100644 --- a/ar/develop/nova/metamask/index.html +++ b/ar/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/advanced-cli/cluster/index.html b/ar/farming/advanced-cli/cluster/index.html index 6ce831ec73f..38bc2ff09e2 100644 --- a/ar/farming/advanced-cli/cluster/index.html +++ b/ar/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/advanced-cli/install/index.html b/ar/farming/advanced-cli/install/index.html index fac1cc5a1d7..61609b3b6ae 100644 --- a/ar/farming/advanced-cli/install/index.html +++ b/ar/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/advanced-cli/tips/index.html b/ar/farming/advanced-cli/tips/index.html index 11ec9e9e082..3259b7ef055 100644 --- a/ar/farming/advanced-cli/tips/index.html +++ b/ar/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/common-problems/index.html b/ar/farming/common-problems/index.html index 4cc6a3d5180..fb4dc744a1a 100644 --- a/ar/farming/common-problems/index.html +++ b/ar/farming/common-problems/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/guides/gpu-plotter/index.html b/ar/farming/guides/gpu-plotter/index.html index 1515f161172..238a00a1ee3 100644 --- a/ar/farming/guides/gpu-plotter/index.html +++ b/ar/farming/guides/gpu-plotter/index.html @@ -12,14 +12,13 @@ - +

GPU Plotter

Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck.

Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed.

Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU.

-
Plot Format Compatibility

GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting.

Platform Compatibility

Platform🐧 Linux🪟 WindowsNvidiaAMDIntel
Advanced CLI🛠️🔮
Space Acres🔜🔮

🛠️ Limited AMD Support for Linux only is available in recent test builds. The most recent test builds are linked on the forum

See Discord farmer-chat channel for limited support.

@@ -59,8 +58,6 @@

C

Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): --cuda-gpus <gpu_ids>

--cuda-gpus 0,1,3

Farming Cluster

-

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

-

Known Issues

-

Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine.

+

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

\ No newline at end of file diff --git a/ar/farming/guides/grafana-dashboard/index.html b/ar/farming/guides/grafana-dashboard/index.html index 5d5cb4201ce..b6f46e9ee4d 100644 --- a/ar/farming/guides/grafana-dashboard/index.html +++ b/ar/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/guides/index.html b/ar/farming/guides/index.html index cbe24b90026..d90ddba6158 100644 --- a/ar/farming/guides/index.html +++ b/ar/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/guides/port-config/index.html b/ar/farming/guides/port-config/index.html index c5c5602617f..3e544922683 100644 --- a/ar/farming/guides/port-config/index.html +++ b/ar/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/guides/verified-farmer/index.html b/ar/farming/guides/verified-farmer/index.html index d0f55632868..668b6aa2250 100644 --- a/ar/farming/guides/verified-farmer/index.html +++ b/ar/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/intro/index.html b/ar/farming/intro/index.html index 36d5c89238b..1ed853b2cd0 100644 --- a/ar/farming/intro/index.html +++ b/ar/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/space-acres/install/index.html b/ar/farming/space-acres/install/index.html index 3c06594a6b2..9852f4a79d6 100644 --- a/ar/farming/space-acres/install/index.html +++ b/ar/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/space-acres/translate/index.html b/ar/farming/space-acres/translate/index.html index e9590ba47db..e11dff63ec6 100644 --- a/ar/farming/space-acres/translate/index.html +++ b/ar/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/farming/timekeeper/index.html b/ar/farming/timekeeper/index.html index 6024317cb63..ab06492c1a5 100644 --- a/ar/farming/timekeeper/index.html +++ b/ar/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/index.html b/ar/index.html index 96a17a93b79..b17606dc18d 100644 --- a/ar/index.html +++ b/ar/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/learn/academy/index.html b/ar/learn/academy/index.html index 68d768a60ab..52039547582 100644 --- a/ar/learn/academy/index.html +++ b/ar/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/learn/intro/index.html b/ar/learn/intro/index.html index 13ba524f305..8f32b8a1b7d 100644 --- a/ar/learn/intro/index.html +++ b/ar/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/learn/security/index.html b/ar/learn/security/index.html index 00dd373237c..9b746bc4555 100644 --- a/ar/learn/security/index.html +++ b/ar/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/markdown-page/index.html b/ar/markdown-page/index.html index a9ec495d0d3..89026ac6125 100644 --- a/ar/markdown-page/index.html +++ b/ar/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/participate/community/resources/index.html b/ar/participate/community/resources/index.html index 4343e116404..24702b23d26 100644 --- a/ar/participate/community/resources/index.html +++ b/ar/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/participate/community/tools/index.html b/ar/participate/community/tools/index.html index 1c6561d9fdb..62c9d586e73 100644 --- a/ar/participate/community/tools/index.html +++ b/ar/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/participate/contribute/code-of-conduct/index.html b/ar/participate/contribute/code-of-conduct/index.html index af22a4e1de2..4657816c281 100644 --- a/ar/participate/contribute/code-of-conduct/index.html +++ b/ar/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/participate/contribute/intro/index.html b/ar/participate/contribute/intro/index.html index ea6bad19474..1048a64caf4 100644 --- a/ar/participate/contribute/intro/index.html +++ b/ar/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/participate/contribute/translate/index.html b/ar/participate/contribute/translate/index.html index 94ac71e403b..a48d45d04c2 100644 --- a/ar/participate/contribute/translate/index.html +++ b/ar/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/staking/intro/index.html b/ar/staking/intro/index.html index 487795225e0..c53496cb014 100644 --- a/ar/staking/intro/index.html +++ b/ar/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/staking/operator/deregister/index.html b/ar/staking/operator/deregister/index.html index c69f8ba7d86..8f16d9c757a 100644 --- a/ar/staking/operator/deregister/index.html +++ b/ar/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/staking/operator/register/index.html b/ar/staking/operator/register/index.html index 9b3ccd582e0..a6407123d7b 100644 --- a/ar/staking/operator/register/index.html +++ b/ar/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/staking/operator/tips/index.html b/ar/staking/operator/tips/index.html index 741e6d14719..19ed54bc5e8 100644 --- a/ar/staking/operator/tips/index.html +++ b/ar/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/staking/stake/index.html b/ar/staking/stake/index.html index f2c7dd6291f..76002885106 100644 --- a/ar/staking/stake/index.html +++ b/ar/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/wallets/polkadot/index.html b/ar/wallets/polkadot/index.html index a99a2b709fd..412104c3bc4 100644 --- a/ar/wallets/polkadot/index.html +++ b/ar/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/ar/wallets/subwallet/index.html b/ar/wallets/subwallet/index.html index 1b7374026e7..5db1a103332 100644 --- a/ar/wallets/subwallet/index.html +++ b/ar/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/assets/js/11bc8d76.4f52c8e5.js b/assets/js/11bc8d76.4f52c8e5.js deleted file mode 100644 index 37e4114075b..00000000000 --- a/assets/js/11bc8d76.4f52c8e5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[3547],{7807:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const o={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},a=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2},{value:"Known Issues",id:"known-issues",level:2}];function h(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.admonition,{title:"Plot Format Compatibility",type:"info",children:(0,r.jsx)(t.p,{children:"GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting."})}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."}),"\n",(0,r.jsx)(t.h2,{id:"known-issues",children:"Known Issues"}),"\n",(0,r.jsx)(t.p,{children:"Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),o=n(205),a=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,a.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,a]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),f=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{f&&a(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);a(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:o}=e;const a=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=a.indexOf(t),s=o[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=a.indexOf(e.currentTarget)+1;t=a[n]??a[0];break}case"ArrowLeft":{const n=a.indexOf(e.currentTarget)-1;t=a[n]??a[a.length-1];break}}t?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:o.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>a.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(y,{...t,...e}),(0,j.jsx)(b,{...t,...e})]})}function w(e){const t=(0,g.A)();return(0,j.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>o});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/ar/assets/js/7c819db0.2601bfbe.js b/assets/js/11bc8d76.b3f4e2a2.js similarity index 57% rename from ar/assets/js/7c819db0.2601bfbe.js rename to assets/js/11bc8d76.b3f4e2a2.js index 1faba3eb6db..30bac8c29cd 100644 --- a/ar/assets/js/7c819db0.2601bfbe.js +++ b/assets/js/11bc8d76.b3f4e2a2.js @@ -1 +1 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[9073],{9295:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const o={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","\u0627\u0644\u0645\u0632\u0631\u0639\u0629","GPU"]},a=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/ar/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/ar/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","\u0627\u0644\u0645\u0632\u0631\u0639\u0629","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/ar/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/ar/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2},{value:"Known Issues",id:"known-issues",level:2}];function h(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.admonition,{title:"Plot Format Compatibility",type:"info",children:(0,r.jsx)(t.p,{children:"GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting."})}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."}),"\n",(0,r.jsx)(t.h2,{id:"known-issues",children:"Known Issues"}),"\n",(0,r.jsx)(t.p,{children:"Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),o=n(205),a=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,a.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,a]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),f=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{f&&a(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);a(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:o}=e;const a=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=a.indexOf(t),s=o[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=a.indexOf(e.currentTarget)+1;t=a[n]??a[0];break}case"ArrowLeft":{const n=a.indexOf(e.currentTarget)-1;t=a[n]??a[a.length-1];break}}t?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:o.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>a.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(y,{...t,...e}),(0,j.jsx)(b,{...t,...e})]})}function w(e){const t=(0,g.A)();return(0,j.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>o});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[3547],{7807:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const a={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},o=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2}];function h(e){const t={a:"a",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>A});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),a=n(205),o=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,o.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,o]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),j=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{j&&o(j)}),[j]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const j={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:a}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=o.indexOf(t),s=a[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=o.indexOf(e.currentTarget)+1;t=o[n]??o[0];break}case"ArrowLeft":{const n=o.indexOf(e.currentTarget)-1;t=o[n]??o[o.length-1];break}}t?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:a.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>o.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",j.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,f.jsxs)("div",{className:(0,s.A)("tabs-container",j.tabList),children:[(0,f.jsx)(y,{...t,...e}),(0,f.jsx)(b,{...t,...e})]})}function A(e){const t=(0,g.A)();return(0,f.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>a});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.ee27da08.js b/assets/js/runtime~main.97f18d22.js similarity index 60% rename from assets/js/runtime~main.ee27da08.js rename to assets/js/runtime~main.97f18d22.js index 946223180c0..4ef7c1f2f65 100644 --- a/assets/js/runtime~main.ee27da08.js +++ b/assets/js/runtime~main.97f18d22.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,f,t,r,b={},d={};function c(e){var a=d[e];if(void 0!==a)return a.exports;var f=d[e]={exports:{}};return b[e].call(f.exports,f,f.exports,c),f.exports}c.m=b,e=[],c.O=(a,f,t,r)=>{if(!f){var b=1/0;for(i=0;i=r)&&Object.keys(c.O).every((e=>c.O[e](f[o])))?f.splice(o--,1):(d=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[f,t,r]},c.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return c.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,c.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);c.r(r);var b={};a=a||[null,f({}),f([]),f(f)];for(var d=2&t&&e;"object"==typeof d&&!~a.indexOf(d);d=f(d))Object.getOwnPropertyNames(d).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,c.d(r,b),r},c.d=(e,a)=>{for(var f in a)c.o(a,f)&&!c.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},c.f={},c.e=e=>Promise.all(Object.keys(c.f).reduce(((a,f)=>(c.f[f](e,a),a)),[])),c.u=e=>"assets/js/"+({112:"a41ae2b1",999:"4905fc56",1235:"a7456010",1400:"a5f8ae67",1488:"def50d34",1567:"22dd74f7",1608:"db294877",1868:"1a50bb86",1915:"9dac239a",1936:"c46ff8fb",1995:"413a666c",2379:"4c042ec9",2408:"05f00ca8",2750:"86d9053f",2788:"e14761ab",3184:"453504d6",3368:"3451640b",3372:"b23e3acb",3376:"5c49f32e",3547:"11bc8d76",3586:"ea18547f",3968:"ff483d82",4134:"393be207",4143:"4d126344",4155:"44bf5292",4474:"4a131490",4476:"4ff06830",4491:"66a8244a",4583:"1df93b7f",4799:"65c8fd9c",4849:"0e5f0558",4862:"060c9da0",4865:"737d42be",5742:"aba21aa0",6061:"1f391b9e",6285:"b8c29134",6308:"2f909f67",6765:"fa362710",6783:"ec9608a6",6832:"219356da",6969:"14eb3368",7098:"a7bd4aaa",7282:"33b25d2b",7286:"662ffd2e",7755:"45e84c8a",8215:"c0701f9f",8245:"118c0595",8401:"17896441",8515:"a9921181",8578:"ee76913c",8649:"c435babb",9033:"aa9e0a32",9048:"a94703ab",9396:"5419918d",9456:"06683f66",9493:"c15330b1",9647:"5e95c892",9942:"22ce8ab6"}[e]||e)+"."+{112:"234156ab",999:"286086aa",1235:"deb810c9",1400:"d8ad20a3",1488:"16cc3b22",1567:"df561e2b",1608:"1ce4001f",1688:"af0e6f17",1868:"7b602c38",1915:"fcb71125",1936:"4f4d80c5",1995:"ca2a84f2",2237:"c851d8b1",2379:"0d27245d",2408:"6d6976d7",2440:"ecd0621f",2750:"58588ea2",2788:"3ff52829",3184:"964adea9",3368:"0502dd87",3372:"244807e9",3376:"07513674",3547:"4f52c8e5",3586:"6bb931c1",3968:"11058cbb",4134:"d69ba1ec",4143:"9ab3caa5",4155:"05f9c13a",4324:"fec3e18f",4474:"72ce9d3f",4476:"f13c886a",4491:"48fff18f",4583:"c0d080f8",4799:"8e9df94b",4849:"5edd1506",4862:"483c43d3",4865:"d8165f47",5049:"7f13b97c",5394:"83d77ce3",5742:"08d6695f",6061:"fc18f174",6285:"3d60d540",6308:"efeb4e23",6688:"86f0bb7d",6765:"714e2f6c",6783:"4689f4b2",6832:"6ddc863c",6969:"4f11b87f",7098:"c4e87eeb",7282:"93a8c477",7286:"1813a93e",7755:"0d7cc987",8215:"a1ba2681",8245:"dbfa1591",8401:"3769c7ca",8515:"7a908484",8578:"77253edb",8649:"48aec8d1",8913:"0680f2c1",9033:"1ff78e03",9048:"3a629456",9396:"1a97553e",9456:"55370d44",9462:"be2eb63e",9493:"f2531400",9647:"e4c313e0",9942:"e3821cc9"}[e]+".js",c.miniCssF=e=>{},c.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),c.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="portal:",c.l=(e,a,f,b)=>{if(t[e])t[e].push(a);else{var d,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{d.onerror=d.onload=null,clearTimeout(s);var r=t[e];if(delete t[e],d.parentNode&&d.parentNode.removeChild(d),r&&r.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=l.bind(null,d.onerror),d.onload=l.bind(null,d.onload),o&&document.head.appendChild(d)}},c.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.p="/",c.gca=function(e){return e={17896441:"8401",a41ae2b1:"112","4905fc56":"999",a7456010:"1235",a5f8ae67:"1400",def50d34:"1488","22dd74f7":"1567",db294877:"1608","1a50bb86":"1868","9dac239a":"1915",c46ff8fb:"1936","413a666c":"1995","4c042ec9":"2379","05f00ca8":"2408","86d9053f":"2750",e14761ab:"2788","453504d6":"3184","3451640b":"3368",b23e3acb:"3372","5c49f32e":"3376","11bc8d76":"3547",ea18547f:"3586",ff483d82:"3968","393be207":"4134","4d126344":"4143","44bf5292":"4155","4a131490":"4474","4ff06830":"4476","66a8244a":"4491","1df93b7f":"4583","65c8fd9c":"4799","0e5f0558":"4849","060c9da0":"4862","737d42be":"4865",aba21aa0:"5742","1f391b9e":"6061",b8c29134:"6285","2f909f67":"6308",fa362710:"6765",ec9608a6:"6783","219356da":"6832","14eb3368":"6969",a7bd4aaa:"7098","33b25d2b":"7282","662ffd2e":"7286","45e84c8a":"7755",c0701f9f:"8215","118c0595":"8245",a9921181:"8515",ee76913c:"8578",c435babb:"8649",aa9e0a32:"9033",a94703ab:"9048","5419918d":"9396","06683f66":"9456",c15330b1:"9493","5e95c892":"9647","22ce8ab6":"9942"}[e]||e,c.p+c.u(e)},(()=>{var e={5354:0,1869:0};c.f.j=(a,f)=>{var t=c.o(e,a)?e[a]:void 0;if(0!==t)if(t)f.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var r=new Promise(((f,r)=>t=e[a]=[f,r]));f.push(t[2]=r);var b=c.p+c.u(a),d=new Error;c.l(b,(f=>{if(c.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=f&&("load"===f.type?"missing":f.type),b=f&&f.target&&f.target.src;d.message="Loading chunk "+a+" failed.\n("+r+": "+b+")",d.name="ChunkLoadError",d.type=r,d.request=b,t[1](d)}}),"chunk-"+a,a)}},c.O.j=a=>0===e[a];var a=(a,f)=>{var t,r,b=f[0],d=f[1],o=f[2],n=0;if(b.some((a=>0!==e[a]))){for(t in d)c.o(d,t)&&(c.m[t]=d[t]);if(o)var i=o(c)}for(a&&a(f);n{"use strict";var e,a,f,t,r,b={},c={};function d(e){var a=c[e];if(void 0!==a)return a.exports;var f=c[e]={exports:{}};return b[e].call(f.exports,f,f.exports,d),f.exports}d.m=b,e=[],d.O=(a,f,t,r)=>{if(!f){var b=1/0;for(i=0;i=r)&&Object.keys(d.O).every((e=>d.O[e](f[o])))?f.splice(o--,1):(c=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[f,t,r]},d.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return d.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,d.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);d.r(r);var b={};a=a||[null,f({}),f([]),f(f)];for(var c=2&t&&e;"object"==typeof c&&!~a.indexOf(c);c=f(c))Object.getOwnPropertyNames(c).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,d.d(r,b),r},d.d=(e,a)=>{for(var f in a)d.o(a,f)&&!d.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},d.f={},d.e=e=>Promise.all(Object.keys(d.f).reduce(((a,f)=>(d.f[f](e,a),a)),[])),d.u=e=>"assets/js/"+({112:"a41ae2b1",999:"4905fc56",1235:"a7456010",1400:"a5f8ae67",1488:"def50d34",1567:"22dd74f7",1608:"db294877",1868:"1a50bb86",1915:"9dac239a",1936:"c46ff8fb",1995:"413a666c",2379:"4c042ec9",2408:"05f00ca8",2750:"86d9053f",2788:"e14761ab",3184:"453504d6",3368:"3451640b",3372:"b23e3acb",3376:"5c49f32e",3547:"11bc8d76",3586:"ea18547f",3968:"ff483d82",4134:"393be207",4143:"4d126344",4155:"44bf5292",4474:"4a131490",4476:"4ff06830",4491:"66a8244a",4583:"1df93b7f",4799:"65c8fd9c",4849:"0e5f0558",4862:"060c9da0",4865:"737d42be",5742:"aba21aa0",6061:"1f391b9e",6285:"b8c29134",6308:"2f909f67",6765:"fa362710",6783:"ec9608a6",6832:"219356da",6969:"14eb3368",7098:"a7bd4aaa",7282:"33b25d2b",7286:"662ffd2e",7755:"45e84c8a",8215:"c0701f9f",8245:"118c0595",8401:"17896441",8515:"a9921181",8578:"ee76913c",8649:"c435babb",9033:"aa9e0a32",9048:"a94703ab",9396:"5419918d",9456:"06683f66",9493:"c15330b1",9647:"5e95c892",9942:"22ce8ab6"}[e]||e)+"."+{112:"234156ab",999:"286086aa",1235:"deb810c9",1400:"d8ad20a3",1488:"16cc3b22",1567:"df561e2b",1608:"1ce4001f",1688:"af0e6f17",1868:"7b602c38",1915:"fcb71125",1936:"4f4d80c5",1995:"ca2a84f2",2237:"c851d8b1",2379:"0d27245d",2408:"6d6976d7",2440:"ecd0621f",2750:"58588ea2",2788:"3ff52829",3184:"964adea9",3368:"0502dd87",3372:"244807e9",3376:"07513674",3547:"b3f4e2a2",3586:"6bb931c1",3968:"11058cbb",4134:"d69ba1ec",4143:"9ab3caa5",4155:"05f9c13a",4324:"fec3e18f",4474:"72ce9d3f",4476:"f13c886a",4491:"48fff18f",4583:"c0d080f8",4799:"8e9df94b",4849:"5edd1506",4862:"483c43d3",4865:"d8165f47",5049:"7f13b97c",5394:"83d77ce3",5742:"08d6695f",6061:"fc18f174",6285:"3d60d540",6308:"efeb4e23",6688:"86f0bb7d",6765:"714e2f6c",6783:"4689f4b2",6832:"6ddc863c",6969:"4f11b87f",7098:"c4e87eeb",7282:"93a8c477",7286:"1813a93e",7755:"0d7cc987",8215:"a1ba2681",8245:"dbfa1591",8401:"3769c7ca",8515:"7a908484",8578:"77253edb",8649:"48aec8d1",8913:"0680f2c1",9033:"1ff78e03",9048:"3a629456",9396:"1a97553e",9456:"55370d44",9462:"be2eb63e",9493:"f2531400",9647:"e4c313e0",9942:"e3821cc9"}[e]+".js",d.miniCssF=e=>{},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="portal:",d.l=(e,a,f,b)=>{if(t[e])t[e].push(a);else{var c,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var r=t[e];if(delete t[e],c.parentNode&&c.parentNode.removeChild(c),r&&r.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),o&&document.head.appendChild(c)}},d.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.p="/",d.gca=function(e){return e={17896441:"8401",a41ae2b1:"112","4905fc56":"999",a7456010:"1235",a5f8ae67:"1400",def50d34:"1488","22dd74f7":"1567",db294877:"1608","1a50bb86":"1868","9dac239a":"1915",c46ff8fb:"1936","413a666c":"1995","4c042ec9":"2379","05f00ca8":"2408","86d9053f":"2750",e14761ab:"2788","453504d6":"3184","3451640b":"3368",b23e3acb:"3372","5c49f32e":"3376","11bc8d76":"3547",ea18547f:"3586",ff483d82:"3968","393be207":"4134","4d126344":"4143","44bf5292":"4155","4a131490":"4474","4ff06830":"4476","66a8244a":"4491","1df93b7f":"4583","65c8fd9c":"4799","0e5f0558":"4849","060c9da0":"4862","737d42be":"4865",aba21aa0:"5742","1f391b9e":"6061",b8c29134:"6285","2f909f67":"6308",fa362710:"6765",ec9608a6:"6783","219356da":"6832","14eb3368":"6969",a7bd4aaa:"7098","33b25d2b":"7282","662ffd2e":"7286","45e84c8a":"7755",c0701f9f:"8215","118c0595":"8245",a9921181:"8515",ee76913c:"8578",c435babb:"8649",aa9e0a32:"9033",a94703ab:"9048","5419918d":"9396","06683f66":"9456",c15330b1:"9493","5e95c892":"9647","22ce8ab6":"9942"}[e]||e,d.p+d.u(e)},(()=>{var e={5354:0,1869:0};d.f.j=(a,f)=>{var t=d.o(e,a)?e[a]:void 0;if(0!==t)if(t)f.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var r=new Promise(((f,r)=>t=e[a]=[f,r]));f.push(t[2]=r);var b=d.p+d.u(a),c=new Error;d.l(b,(f=>{if(d.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=f&&("load"===f.type?"missing":f.type),b=f&&f.target&&f.target.src;c.message="Loading chunk "+a+" failed.\n("+r+": "+b+")",c.name="ChunkLoadError",c.type=r,c.request=b,t[1](c)}}),"chunk-"+a,a)}},d.O.j=a=>0===e[a];var a=(a,f)=>{var t,r,b=f[0],c=f[1],o=f[2],n=0;if(b.some((a=>0!==e[a]))){for(t in c)d.o(c,t)&&(d.m[t]=c[t]);if(o)var i=o(d)}for(a&&a(f);n - + diff --git a/de/404.html b/de/404.html index 1f83daae128..fbbd5a0ea4b 100644 --- a/de/404.html +++ b/de/404.html @@ -12,7 +12,7 @@ - + diff --git a/de/assets/js/7576aedf.cc856e4b.js b/de/assets/js/7576aedf.cc856e4b.js deleted file mode 100644 index 58df3176280..00000000000 --- a/de/assets/js/7576aedf.cc856e4b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[6792],{2343:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const o={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},a=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/de/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/de/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/de/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/de/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2},{value:"Known Issues",id:"known-issues",level:2}];function h(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.admonition,{title:"Plot Format Compatibility",type:"info",children:(0,r.jsx)(t.p,{children:"GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting."})}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."}),"\n",(0,r.jsx)(t.h2,{id:"known-issues",children:"Known Issues"}),"\n",(0,r.jsx)(t.p,{children:"Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),o=n(205),a=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,a.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,a]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),f=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{f&&a(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);a(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:o}=e;const a=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=a.indexOf(t),s=o[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=a.indexOf(e.currentTarget)+1;t=a[n]??a[0];break}case"ArrowLeft":{const n=a.indexOf(e.currentTarget)-1;t=a[n]??a[a.length-1];break}}t?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:o.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>a.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(y,{...t,...e}),(0,j.jsx)(b,{...t,...e})]})}function w(e){const t=(0,g.A)();return(0,j.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>o});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/de/assets/js/7576aedf.fd4de950.js b/de/assets/js/7576aedf.fd4de950.js new file mode 100644 index 00000000000..a02011b7ed1 --- /dev/null +++ b/de/assets/js/7576aedf.fd4de950.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[6792],{2343:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const a={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},o=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/de/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/de/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/de/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/de/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2}];function h(e){const t={a:"a",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>A});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),a=n(205),o=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,o.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,o]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),j=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{j&&o(j)}),[j]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const j={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:a}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=o.indexOf(t),s=a[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=o.indexOf(e.currentTarget)+1;t=o[n]??o[0];break}case"ArrowLeft":{const n=o.indexOf(e.currentTarget)-1;t=o[n]??o[o.length-1];break}}t?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:a.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>o.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",j.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,f.jsxs)("div",{className:(0,s.A)("tabs-container",j.tabList),children:[(0,f.jsx)(y,{...t,...e}),(0,f.jsx)(b,{...t,...e})]})}function A(e){const t=(0,g.A)();return(0,f.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>a});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/de/assets/js/runtime~main.fc8c97d3.js b/de/assets/js/runtime~main.d24efeb2.js similarity index 98% rename from de/assets/js/runtime~main.fc8c97d3.js rename to de/assets/js/runtime~main.d24efeb2.js index e9869637e64..506d0d3eb12 100644 --- a/de/assets/js/runtime~main.fc8c97d3.js +++ b/de/assets/js/runtime~main.d24efeb2.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,c,t,b,d={},r={};function f(e){var a=r[e];if(void 0!==a)return a.exports;var c=r[e]={exports:{}};return d[e].call(c.exports,c,c.exports,f),c.exports}f.m=d,e=[],f.O=(a,c,t,b)=>{if(!c){var d=1/0;for(i=0;i=b)&&Object.keys(f.O).every((e=>f.O[e](c[o])))?c.splice(o--,1):(r=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[c,t,b]},f.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return f.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,f.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var b=Object.create(null);f.r(b);var d={};a=a||[null,c({}),c([]),c(c)];for(var r=2&t&&e;"object"==typeof r&&!~a.indexOf(r);r=c(r))Object.getOwnPropertyNames(r).forEach((a=>d[a]=()=>e[a]));return d.default=()=>e,f.d(b,d),b},f.d=(e,a)=>{for(var c in a)f.o(a,c)&&!f.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},f.f={},f.e=e=>Promise.all(Object.keys(f.f).reduce(((a,c)=>(f.f[c](e,a),a)),[])),f.u=e=>"assets/js/"+({286:"eebb2b65",447:"1c5e0684",499:"aeef5f7c",594:"2d26a6b0",738:"1f85cb11",894:"59a881b3",1235:"a7456010",1578:"aa294da3",1591:"ced4c030",1690:"ebc5a296",1799:"e8008dc2",2002:"462ffdc4",2032:"bf515349",2168:"59ee589c",2688:"dbaa0366",3072:"1b64fd5e",3333:"66e0ab3e",3931:"09da07dc",3941:"18dee487",4134:"393be207",4163:"bab00122",4376:"311dce80",4457:"c53e7d1d",4583:"1df93b7f",4651:"81e03241",4677:"c45b01b5",4716:"9489c28f",5742:"aba21aa0",5808:"b6e141fb",6061:"1f391b9e",6375:"7317a953",6658:"65983413",6748:"c323b532",6792:"7576aedf",6801:"a6fd047d",6969:"14eb3368",7011:"0ea4b431",7098:"a7bd4aaa",7275:"09e160a2",7358:"59d7f396",7463:"45ef86ea",7612:"87b11606",7696:"92454f3d",7724:"bbfac917",8146:"4fd9623c",8343:"0a127904",8347:"74b76024",8378:"a24013bb",8401:"17896441",8572:"32d8311c",8666:"6b89ad76",8809:"110b8b84",8839:"3cc032ec",8855:"02157070",8883:"38fd9e5b",9048:"a94703ab",9494:"7908a40f",9647:"5e95c892"}[e]||e)+"."+{286:"7a939169",447:"a08b4883",499:"f8397da1",594:"ab3410d7",738:"e9cd9011",894:"2ec842bf",1235:"deb810c9",1578:"6561a7b4",1591:"819a1a4d",1688:"af0e6f17",1690:"b863a48e",1799:"4640507d",2002:"bedb2b9a",2032:"8970f2bb",2168:"b95eee2c",2237:"c851d8b1",2440:"ecd0621f",2688:"2a6d9ad4",3072:"61531fd4",3333:"aaddf7af",3931:"f215c1b6",3941:"8e4a0316",4134:"f1646571",4163:"a79f9309",4324:"fec3e18f",4376:"cd01a298",4457:"070f8342",4583:"c0d080f8",4651:"3f858b8e",4677:"fa6c3315",4716:"0fd39bd1",5049:"7f13b97c",5394:"83d77ce3",5742:"08d6695f",5808:"b0bdffcf",6061:"fc18f174",6375:"bd864067",6658:"0efce26f",6688:"86f0bb7d",6748:"6cb10ffd",6792:"cc856e4b",6801:"7b79d168",6969:"4f11b87f",7011:"71aeb0af",7098:"c4e87eeb",7275:"61264617",7358:"cc42ad29",7463:"68637370",7612:"d860c225",7696:"4b1eaa0a",7724:"38810cc9",8146:"b8a7e32c",8343:"9d5e3edc",8347:"9f2aeb30",8378:"586af2cd",8401:"3769c7ca",8572:"07ad3cf4",8666:"97caa1f2",8809:"71ecb02f",8839:"d179882a",8855:"ea46f913",8883:"0be3cea7",8913:"0680f2c1",9048:"3a629456",9462:"be2eb63e",9494:"81d7b936",9647:"e4c313e0"}[e]+".js",f.miniCssF=e=>{},f.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),f.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},b="portal:",f.l=(e,a,c,d)=>{if(t[e])t[e].push(a);else{var r,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{r.onerror=r.onload=null,clearTimeout(s);var b=t[e];if(delete t[e],r.parentNode&&r.parentNode.removeChild(r),b&&b.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=l.bind(null,r.onerror),r.onload=l.bind(null,r.onload),o&&document.head.appendChild(r)}},f.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.p="/de/",f.gca=function(e){return e={17896441:"8401",65983413:"6658",eebb2b65:"286","1c5e0684":"447",aeef5f7c:"499","2d26a6b0":"594","1f85cb11":"738","59a881b3":"894",a7456010:"1235",aa294da3:"1578",ced4c030:"1591",ebc5a296:"1690",e8008dc2:"1799","462ffdc4":"2002",bf515349:"2032","59ee589c":"2168",dbaa0366:"2688","1b64fd5e":"3072","66e0ab3e":"3333","09da07dc":"3931","18dee487":"3941","393be207":"4134",bab00122:"4163","311dce80":"4376",c53e7d1d:"4457","1df93b7f":"4583","81e03241":"4651",c45b01b5:"4677","9489c28f":"4716",aba21aa0:"5742",b6e141fb:"5808","1f391b9e":"6061","7317a953":"6375",c323b532:"6748","7576aedf":"6792",a6fd047d:"6801","14eb3368":"6969","0ea4b431":"7011",a7bd4aaa:"7098","09e160a2":"7275","59d7f396":"7358","45ef86ea":"7463","87b11606":"7612","92454f3d":"7696",bbfac917:"7724","4fd9623c":"8146","0a127904":"8343","74b76024":"8347",a24013bb:"8378","32d8311c":"8572","6b89ad76":"8666","110b8b84":"8809","3cc032ec":"8839","02157070":"8855","38fd9e5b":"8883",a94703ab:"9048","7908a40f":"9494","5e95c892":"9647"}[e]||e,f.p+f.u(e)},(()=>{var e={5354:0,1869:0};f.f.j=(a,c)=>{var t=f.o(e,a)?e[a]:void 0;if(0!==t)if(t)c.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var b=new Promise(((c,b)=>t=e[a]=[c,b]));c.push(t[2]=b);var d=f.p+f.u(a),r=new Error;f.l(d,(c=>{if(f.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var b=c&&("load"===c.type?"missing":c.type),d=c&&c.target&&c.target.src;r.message="Loading chunk "+a+" failed.\n("+b+": "+d+")",r.name="ChunkLoadError",r.type=b,r.request=d,t[1](r)}}),"chunk-"+a,a)}},f.O.j=a=>0===e[a];var a=(a,c)=>{var t,b,d=c[0],r=c[1],o=c[2],n=0;if(d.some((a=>0!==e[a]))){for(t in r)f.o(r,t)&&(f.m[t]=r[t]);if(o)var i=o(f)}for(a&&a(c);n{"use strict";var e,a,c,t,b,d={},r={};function f(e){var a=r[e];if(void 0!==a)return a.exports;var c=r[e]={exports:{}};return d[e].call(c.exports,c,c.exports,f),c.exports}f.m=d,e=[],f.O=(a,c,t,b)=>{if(!c){var d=1/0;for(i=0;i=b)&&Object.keys(f.O).every((e=>f.O[e](c[o])))?c.splice(o--,1):(r=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[c,t,b]},f.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return f.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,f.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var b=Object.create(null);f.r(b);var d={};a=a||[null,c({}),c([]),c(c)];for(var r=2&t&&e;"object"==typeof r&&!~a.indexOf(r);r=c(r))Object.getOwnPropertyNames(r).forEach((a=>d[a]=()=>e[a]));return d.default=()=>e,f.d(b,d),b},f.d=(e,a)=>{for(var c in a)f.o(a,c)&&!f.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},f.f={},f.e=e=>Promise.all(Object.keys(f.f).reduce(((a,c)=>(f.f[c](e,a),a)),[])),f.u=e=>"assets/js/"+({286:"eebb2b65",447:"1c5e0684",499:"aeef5f7c",594:"2d26a6b0",738:"1f85cb11",894:"59a881b3",1235:"a7456010",1578:"aa294da3",1591:"ced4c030",1690:"ebc5a296",1799:"e8008dc2",2002:"462ffdc4",2032:"bf515349",2168:"59ee589c",2688:"dbaa0366",3072:"1b64fd5e",3333:"66e0ab3e",3931:"09da07dc",3941:"18dee487",4134:"393be207",4163:"bab00122",4376:"311dce80",4457:"c53e7d1d",4583:"1df93b7f",4651:"81e03241",4677:"c45b01b5",4716:"9489c28f",5742:"aba21aa0",5808:"b6e141fb",6061:"1f391b9e",6375:"7317a953",6658:"65983413",6748:"c323b532",6792:"7576aedf",6801:"a6fd047d",6969:"14eb3368",7011:"0ea4b431",7098:"a7bd4aaa",7275:"09e160a2",7358:"59d7f396",7463:"45ef86ea",7612:"87b11606",7696:"92454f3d",7724:"bbfac917",8146:"4fd9623c",8343:"0a127904",8347:"74b76024",8378:"a24013bb",8401:"17896441",8572:"32d8311c",8666:"6b89ad76",8809:"110b8b84",8839:"3cc032ec",8855:"02157070",8883:"38fd9e5b",9048:"a94703ab",9494:"7908a40f",9647:"5e95c892"}[e]||e)+"."+{286:"7a939169",447:"a08b4883",499:"f8397da1",594:"ab3410d7",738:"e9cd9011",894:"2ec842bf",1235:"deb810c9",1578:"6561a7b4",1591:"819a1a4d",1688:"af0e6f17",1690:"b863a48e",1799:"4640507d",2002:"bedb2b9a",2032:"8970f2bb",2168:"b95eee2c",2237:"c851d8b1",2440:"ecd0621f",2688:"2a6d9ad4",3072:"61531fd4",3333:"aaddf7af",3931:"f215c1b6",3941:"8e4a0316",4134:"f1646571",4163:"a79f9309",4324:"fec3e18f",4376:"cd01a298",4457:"070f8342",4583:"c0d080f8",4651:"3f858b8e",4677:"fa6c3315",4716:"0fd39bd1",5049:"7f13b97c",5394:"83d77ce3",5742:"08d6695f",5808:"b0bdffcf",6061:"fc18f174",6375:"bd864067",6658:"0efce26f",6688:"86f0bb7d",6748:"6cb10ffd",6792:"fd4de950",6801:"7b79d168",6969:"4f11b87f",7011:"71aeb0af",7098:"c4e87eeb",7275:"61264617",7358:"cc42ad29",7463:"68637370",7612:"d860c225",7696:"4b1eaa0a",7724:"38810cc9",8146:"b8a7e32c",8343:"9d5e3edc",8347:"9f2aeb30",8378:"586af2cd",8401:"3769c7ca",8572:"07ad3cf4",8666:"97caa1f2",8809:"71ecb02f",8839:"d179882a",8855:"ea46f913",8883:"0be3cea7",8913:"0680f2c1",9048:"3a629456",9462:"be2eb63e",9494:"81d7b936",9647:"e4c313e0"}[e]+".js",f.miniCssF=e=>{},f.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),f.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},b="portal:",f.l=(e,a,c,d)=>{if(t[e])t[e].push(a);else{var r,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{r.onerror=r.onload=null,clearTimeout(s);var b=t[e];if(delete t[e],r.parentNode&&r.parentNode.removeChild(r),b&&b.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=l.bind(null,r.onerror),r.onload=l.bind(null,r.onload),o&&document.head.appendChild(r)}},f.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.p="/de/",f.gca=function(e){return e={17896441:"8401",65983413:"6658",eebb2b65:"286","1c5e0684":"447",aeef5f7c:"499","2d26a6b0":"594","1f85cb11":"738","59a881b3":"894",a7456010:"1235",aa294da3:"1578",ced4c030:"1591",ebc5a296:"1690",e8008dc2:"1799","462ffdc4":"2002",bf515349:"2032","59ee589c":"2168",dbaa0366:"2688","1b64fd5e":"3072","66e0ab3e":"3333","09da07dc":"3931","18dee487":"3941","393be207":"4134",bab00122:"4163","311dce80":"4376",c53e7d1d:"4457","1df93b7f":"4583","81e03241":"4651",c45b01b5:"4677","9489c28f":"4716",aba21aa0:"5742",b6e141fb:"5808","1f391b9e":"6061","7317a953":"6375",c323b532:"6748","7576aedf":"6792",a6fd047d:"6801","14eb3368":"6969","0ea4b431":"7011",a7bd4aaa:"7098","09e160a2":"7275","59d7f396":"7358","45ef86ea":"7463","87b11606":"7612","92454f3d":"7696",bbfac917:"7724","4fd9623c":"8146","0a127904":"8343","74b76024":"8347",a24013bb:"8378","32d8311c":"8572","6b89ad76":"8666","110b8b84":"8809","3cc032ec":"8839","02157070":"8855","38fd9e5b":"8883",a94703ab:"9048","7908a40f":"9494","5e95c892":"9647"}[e]||e,f.p+f.u(e)},(()=>{var e={5354:0,1869:0};f.f.j=(a,c)=>{var t=f.o(e,a)?e[a]:void 0;if(0!==t)if(t)c.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var b=new Promise(((c,b)=>t=e[a]=[c,b]));c.push(t[2]=b);var d=f.p+f.u(a),r=new Error;f.l(d,(c=>{if(f.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var b=c&&("load"===c.type?"missing":c.type),d=c&&c.target&&c.target.src;r.message="Loading chunk "+a+" failed.\n("+b+": "+d+")",r.name="ChunkLoadError",r.type=b,r.request=d,t[1](r)}}),"chunk-"+a,a)}},f.O.j=a=>0===e[a];var a=(a,c)=>{var t,b,d=c[0],r=c[1],o=c[2],n=0;if(d.some((a=>0!==e[a]))){for(t in r)f.o(r,t)&&(f.m[t]=r[t]);if(o)var i=o(f)}for(a&&a(c);n - + diff --git a/de/develop/auto-sdk/auto-id/index.html b/de/develop/auto-sdk/auto-id/index.html index d31d72acac5..0271eee3eeb 100644 --- a/de/develop/auto-sdk/auto-id/index.html +++ b/de/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/develop/auto-sdk/consensus/index.html b/de/develop/auto-sdk/consensus/index.html index c870cf76bd2..c0750040dad 100644 --- a/de/develop/auto-sdk/consensus/index.html +++ b/de/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/develop/auto-sdk/drive/index.html b/de/develop/auto-sdk/drive/index.html index a16f0ee7dbc..c849c01a7a0 100644 --- a/de/develop/auto-sdk/drive/index.html +++ b/de/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/develop/auto-sdk/index.html b/de/develop/auto-sdk/index.html index bbfd71aca5a..0d77ec3c9e5 100644 --- a/de/develop/auto-sdk/index.html +++ b/de/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/develop/auto-sdk/intro/index.html b/de/develop/auto-sdk/intro/index.html index e789c79671b..2564069e1e5 100644 --- a/de/develop/auto-sdk/intro/index.html +++ b/de/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/develop/auto-sdk/utils/index.html b/de/develop/auto-sdk/utils/index.html index df6905f7747..84f1da2099c 100644 --- a/de/develop/auto-sdk/utils/index.html +++ b/de/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/develop/auto-sdk/xdm/index.html b/de/develop/auto-sdk/xdm/index.html index adacb66079b..3292ffef6be 100644 --- a/de/develop/auto-sdk/xdm/index.html +++ b/de/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/develop/intro/index.html b/de/develop/intro/index.html index 569f15aff62..a1a7b296c0d 100644 --- a/de/develop/intro/index.html +++ b/de/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/develop/nova/block-explorer/index.html b/de/develop/nova/block-explorer/index.html index a93ce62b712..e4af7cd37f8 100644 --- a/de/develop/nova/block-explorer/index.html +++ b/de/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/develop/nova/faucet/index.html b/de/develop/nova/faucet/index.html index 37d0fec0e07..417e9ab5fc3 100644 --- a/de/develop/nova/faucet/index.html +++ b/de/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/develop/nova/general/index.html b/de/develop/nova/general/index.html index 1d996d85f3a..ec84cc43bad 100644 --- a/de/develop/nova/general/index.html +++ b/de/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/develop/nova/guides/foundry/index.html b/de/develop/nova/guides/foundry/index.html index a1d9ffdbadf..bf52f02253c 100644 --- a/de/develop/nova/guides/foundry/index.html +++ b/de/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/develop/nova/guides/hardhat/index.html b/de/develop/nova/guides/hardhat/index.html index 2d2275fc689..d84a7b84b55 100644 --- a/de/develop/nova/guides/hardhat/index.html +++ b/de/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/develop/nova/guides/local-development/index.html b/de/develop/nova/guides/local-development/index.html index 9fc37856a7d..e951ebd628a 100644 --- a/de/develop/nova/guides/local-development/index.html +++ b/de/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/develop/nova/guides/remix/index.html b/de/develop/nova/guides/remix/index.html index c7901648ca3..1e01cab0778 100644 --- a/de/develop/nova/guides/remix/index.html +++ b/de/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/develop/nova/index.html b/de/develop/nova/index.html index 160e7f28a39..1710b01e4a2 100644 --- a/de/develop/nova/index.html +++ b/de/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/develop/nova/introduction/index.html b/de/develop/nova/introduction/index.html index 2a1646c945c..6144aaed191 100644 --- a/de/develop/nova/introduction/index.html +++ b/de/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/develop/nova/metamask/index.html b/de/develop/nova/metamask/index.html index ac7f30ca45c..1f925e6186f 100644 --- a/de/develop/nova/metamask/index.html +++ b/de/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/farming/advanced-cli/cluster/index.html b/de/farming/advanced-cli/cluster/index.html index dd185deffc2..5e5a4409aa3 100644 --- a/de/farming/advanced-cli/cluster/index.html +++ b/de/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/farming/advanced-cli/install/index.html b/de/farming/advanced-cli/install/index.html index 0d06d5237eb..f3db47cefac 100644 --- a/de/farming/advanced-cli/install/index.html +++ b/de/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/farming/advanced-cli/tips/index.html b/de/farming/advanced-cli/tips/index.html index 28ccdb96f1c..3e3271e8615 100644 --- a/de/farming/advanced-cli/tips/index.html +++ b/de/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/farming/common-problems/index.html b/de/farming/common-problems/index.html index 09cd658e72a..260b695c126 100644 --- a/de/farming/common-problems/index.html +++ b/de/farming/common-problems/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/farming/guides/gpu-plotter/index.html b/de/farming/guides/gpu-plotter/index.html index edf09a63432..f59a5b4d795 100644 --- a/de/farming/guides/gpu-plotter/index.html +++ b/de/farming/guides/gpu-plotter/index.html @@ -12,14 +12,13 @@ - +

GPU Plotter

Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck.

Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed.

Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU.

-
Plot Format Compatibility

GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting.

Platform Compatibility

Platform🐧 Linux🪟 WindowsNvidiaAMDIntel
Advanced CLI🛠️🔮
Space Acres🔜🔮

🛠️ Limited AMD Support for Linux only is available in recent test builds. The most recent test builds are linked on the forum

See Discord farmer-chat channel for limited support.

@@ -59,8 +58,6 @@

C

Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): --cuda-gpus <gpu_ids>

--cuda-gpus 0,1,3

Farming Cluster

-

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

-

Known Issues

-

Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine.

+

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

\ No newline at end of file diff --git a/de/farming/guides/grafana-dashboard/index.html b/de/farming/guides/grafana-dashboard/index.html index 2cf054f16f9..eb599a2847e 100644 --- a/de/farming/guides/grafana-dashboard/index.html +++ b/de/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/farming/guides/index.html b/de/farming/guides/index.html index 0886eb497ef..edda5ddfdbe 100644 --- a/de/farming/guides/index.html +++ b/de/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/farming/guides/port-config/index.html b/de/farming/guides/port-config/index.html index 4e5608c4219..2b41f86aa0a 100644 --- a/de/farming/guides/port-config/index.html +++ b/de/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/farming/guides/verified-farmer/index.html b/de/farming/guides/verified-farmer/index.html index 56dce0e35b3..cd382f42ca3 100644 --- a/de/farming/guides/verified-farmer/index.html +++ b/de/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/farming/intro/index.html b/de/farming/intro/index.html index 2f525bc01b4..5986968b949 100644 --- a/de/farming/intro/index.html +++ b/de/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/farming/space-acres/install/index.html b/de/farming/space-acres/install/index.html index 48823a27488..52549878005 100644 --- a/de/farming/space-acres/install/index.html +++ b/de/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/farming/space-acres/translate/index.html b/de/farming/space-acres/translate/index.html index 4be3d14b41f..f763056c0a4 100644 --- a/de/farming/space-acres/translate/index.html +++ b/de/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/farming/timekeeper/index.html b/de/farming/timekeeper/index.html index 99471732efd..f3165905ae9 100644 --- a/de/farming/timekeeper/index.html +++ b/de/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/index.html b/de/index.html index 2049b1339d5..f7aebc2c068 100644 --- a/de/index.html +++ b/de/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/learn/academy/index.html b/de/learn/academy/index.html index 0adad90255f..50ecf930541 100644 --- a/de/learn/academy/index.html +++ b/de/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/learn/intro/index.html b/de/learn/intro/index.html index 94d23b5d283..65d340e726b 100644 --- a/de/learn/intro/index.html +++ b/de/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/learn/security/index.html b/de/learn/security/index.html index 764b86ca1fb..324e2b9b23a 100644 --- a/de/learn/security/index.html +++ b/de/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/markdown-page/index.html b/de/markdown-page/index.html index d2871d63758..c16090d27e6 100644 --- a/de/markdown-page/index.html +++ b/de/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/participate/community/resources/index.html b/de/participate/community/resources/index.html index dd32189b850..ade06925778 100644 --- a/de/participate/community/resources/index.html +++ b/de/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/participate/community/tools/index.html b/de/participate/community/tools/index.html index 555b288fd42..881af94e6a0 100644 --- a/de/participate/community/tools/index.html +++ b/de/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/participate/contribute/code-of-conduct/index.html b/de/participate/contribute/code-of-conduct/index.html index 6541dcd3d16..62a8cb8d137 100644 --- a/de/participate/contribute/code-of-conduct/index.html +++ b/de/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/participate/contribute/intro/index.html b/de/participate/contribute/intro/index.html index b000417ba02..a67bbef525f 100644 --- a/de/participate/contribute/intro/index.html +++ b/de/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/participate/contribute/translate/index.html b/de/participate/contribute/translate/index.html index 4164f53bc04..1a697314dab 100644 --- a/de/participate/contribute/translate/index.html +++ b/de/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/staking/intro/index.html b/de/staking/intro/index.html index a3f40d1507f..93d8dbde6b5 100644 --- a/de/staking/intro/index.html +++ b/de/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/staking/operator/deregister/index.html b/de/staking/operator/deregister/index.html index 6793be04145..0a0f8755a74 100644 --- a/de/staking/operator/deregister/index.html +++ b/de/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/staking/operator/register/index.html b/de/staking/operator/register/index.html index f94e2957e29..14bd4cb1d40 100644 --- a/de/staking/operator/register/index.html +++ b/de/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/staking/operator/tips/index.html b/de/staking/operator/tips/index.html index 790e9a4b8c5..b77f4aaafa6 100644 --- a/de/staking/operator/tips/index.html +++ b/de/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/staking/stake/index.html b/de/staking/stake/index.html index 56d43c00748..65c12444436 100644 --- a/de/staking/stake/index.html +++ b/de/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/wallets/polkadot/index.html b/de/wallets/polkadot/index.html index ae7dcc0ae2f..571ac37fcd4 100644 --- a/de/wallets/polkadot/index.html +++ b/de/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/de/wallets/subwallet/index.html b/de/wallets/subwallet/index.html index cf7f3a23b75..17824e3de7a 100644 --- a/de/wallets/subwallet/index.html +++ b/de/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/develop/auto-sdk/auto-id/index.html b/develop/auto-sdk/auto-id/index.html index a0792e4ca7f..ea6b613c10b 100644 --- a/develop/auto-sdk/auto-id/index.html +++ b/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/develop/auto-sdk/consensus/index.html b/develop/auto-sdk/consensus/index.html index 945e5e3cb25..9db32214a9b 100644 --- a/develop/auto-sdk/consensus/index.html +++ b/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/develop/auto-sdk/drive/index.html b/develop/auto-sdk/drive/index.html index 6222347fd7e..8182718db86 100644 --- a/develop/auto-sdk/drive/index.html +++ b/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/develop/auto-sdk/index.html b/develop/auto-sdk/index.html index 0f889009d73..a57ebc43062 100644 --- a/develop/auto-sdk/index.html +++ b/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/develop/auto-sdk/intro/index.html b/develop/auto-sdk/intro/index.html index e7f16f54ddb..0f5dbe745e7 100644 --- a/develop/auto-sdk/intro/index.html +++ b/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/develop/auto-sdk/utils/index.html b/develop/auto-sdk/utils/index.html index 60c12f10926..6d73cd215d4 100644 --- a/develop/auto-sdk/utils/index.html +++ b/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/develop/auto-sdk/xdm/index.html b/develop/auto-sdk/xdm/index.html index c236bab12df..f227b8b56a3 100644 --- a/develop/auto-sdk/xdm/index.html +++ b/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/develop/intro/index.html b/develop/intro/index.html index d95186b55e9..92920f96f76 100644 --- a/develop/intro/index.html +++ b/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/develop/nova/block-explorer/index.html b/develop/nova/block-explorer/index.html index 02c70c1727c..82adc8dc9a8 100644 --- a/develop/nova/block-explorer/index.html +++ b/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/develop/nova/faucet/index.html b/develop/nova/faucet/index.html index 9944950fcc9..30a3b075805 100644 --- a/develop/nova/faucet/index.html +++ b/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/develop/nova/general/index.html b/develop/nova/general/index.html index 90dc8ecf8cf..6ceeea4c506 100644 --- a/develop/nova/general/index.html +++ b/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/develop/nova/guides/foundry/index.html b/develop/nova/guides/foundry/index.html index 59d42a67049..66a9fb60d2a 100644 --- a/develop/nova/guides/foundry/index.html +++ b/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/develop/nova/guides/hardhat/index.html b/develop/nova/guides/hardhat/index.html index ff2e3052657..04f16bacebb 100644 --- a/develop/nova/guides/hardhat/index.html +++ b/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/develop/nova/guides/local-development/index.html b/develop/nova/guides/local-development/index.html index 25239379a12..dbf729b2e85 100644 --- a/develop/nova/guides/local-development/index.html +++ b/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/develop/nova/guides/remix/index.html b/develop/nova/guides/remix/index.html index 5953c2ca097..8a778ba0d5d 100644 --- a/develop/nova/guides/remix/index.html +++ b/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/develop/nova/index.html b/develop/nova/index.html index 5734ee35dc2..225ab70834b 100644 --- a/develop/nova/index.html +++ b/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/develop/nova/introduction/index.html b/develop/nova/introduction/index.html index 23468682177..c6cc3df6037 100644 --- a/develop/nova/introduction/index.html +++ b/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/develop/nova/metamask/index.html b/develop/nova/metamask/index.html index 1c7b0133e08..0990578ef9c 100644 --- a/develop/nova/metamask/index.html +++ b/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/404.html b/es/404.html index 0c15b4d73ef..ba4d988f6ef 100644 --- a/es/404.html +++ b/es/404.html @@ -12,7 +12,7 @@ - + diff --git a/es/assets/js/c462c969.85567de6.js b/es/assets/js/c462c969.85567de6.js deleted file mode 100644 index 722d01c4070..00000000000 --- a/es/assets/js/c462c969.85567de6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[705],{1448:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const o={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},a=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/es/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/es/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/es/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/es/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2},{value:"Known Issues",id:"known-issues",level:2}];function h(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.admonition,{title:"Plot Format Compatibility",type:"info",children:(0,r.jsx)(t.p,{children:"GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting."})}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."}),"\n",(0,r.jsx)(t.h2,{id:"known-issues",children:"Known Issues"}),"\n",(0,r.jsx)(t.p,{children:"Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),o=n(205),a=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,a.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,a]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),f=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{f&&a(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);a(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:o}=e;const a=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=a.indexOf(t),s=o[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=a.indexOf(e.currentTarget)+1;t=a[n]??a[0];break}case"ArrowLeft":{const n=a.indexOf(e.currentTarget)-1;t=a[n]??a[a.length-1];break}}t?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:o.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>a.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(y,{...t,...e}),(0,j.jsx)(b,{...t,...e})]})}function w(e){const t=(0,g.A)();return(0,j.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>o});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/es/assets/js/c462c969.a2893557.js b/es/assets/js/c462c969.a2893557.js new file mode 100644 index 00000000000..298898ba294 --- /dev/null +++ b/es/assets/js/c462c969.a2893557.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[705],{1448:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const a={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},o=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/es/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/es/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/es/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/es/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2}];function h(e){const t={a:"a",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>A});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),a=n(205),o=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,o.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,o]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),j=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{j&&o(j)}),[j]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const j={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:a}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=o.indexOf(t),s=a[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=o.indexOf(e.currentTarget)+1;t=o[n]??o[0];break}case"ArrowLeft":{const n=o.indexOf(e.currentTarget)-1;t=o[n]??o[o.length-1];break}}t?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:a.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>o.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",j.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,f.jsxs)("div",{className:(0,s.A)("tabs-container",j.tabList),children:[(0,f.jsx)(y,{...t,...e}),(0,f.jsx)(b,{...t,...e})]})}function A(e){const t=(0,g.A)();return(0,f.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>a});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/es/assets/js/runtime~main.ba0d8e5e.js b/es/assets/js/runtime~main.61ec363c.js similarity index 98% rename from es/assets/js/runtime~main.ba0d8e5e.js rename to es/assets/js/runtime~main.61ec363c.js index c659e36799a..2f1186de4cf 100644 --- a/es/assets/js/runtime~main.ba0d8e5e.js +++ b/es/assets/js/runtime~main.61ec363c.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,c,t,r,f={},d={};function b(e){var a=d[e];if(void 0!==a)return a.exports;var c=d[e]={exports:{}};return f[e].call(c.exports,c,c.exports,b),c.exports}b.m=f,e=[],b.O=(a,c,t,r)=>{if(!c){var f=1/0;for(i=0;i=r)&&Object.keys(b.O).every((e=>b.O[e](c[o])))?c.splice(o--,1):(d=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[c,t,r]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);b.r(r);var f={};a=a||[null,c({}),c([]),c(c)];for(var d=2&t&&e;"object"==typeof d&&!~a.indexOf(d);d=c(d))Object.getOwnPropertyNames(d).forEach((a=>f[a]=()=>e[a]));return f.default=()=>e,b.d(r,f),r},b.d=(e,a)=>{for(var c in a)b.o(a,c)&&!b.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,c)=>(b.f[c](e,a),a)),[])),b.u=e=>"assets/js/"+({151:"8673bc52",354:"00f359f0",453:"69d1cec5",705:"c462c969",1049:"2ad40984",1101:"9a0a479a",1235:"a7456010",1236:"2626b04e",1747:"90322a14",1834:"0cf4a869",1958:"c4815b57",1963:"55975728",2591:"287eca59",2623:"43fda204",2729:"1e19a9ce",3146:"4971eec7",3770:"b29a6e93",3784:"f61ba1c9",4134:"393be207",4137:"0973a9ba",4206:"858a1305",4583:"1df93b7f",4682:"8f5a5419",4719:"a743f7aa",4755:"eb999967",4789:"06da9c4e",4881:"051fd316",4962:"7c1b9360",5158:"cd6dc502",5193:"d3687662",5305:"bc17cc8a",5609:"ba05495b",5742:"aba21aa0",5994:"e1ce9707",6061:"1f391b9e",6644:"edc41ec2",6698:"b9670199",6910:"7af9d8bd",6969:"14eb3368",7098:"a7bd4aaa",7497:"464c79c6",7650:"ed0df58e",7821:"27ee2ba6",8294:"71b16b82",8372:"6fa92b38",8401:"17896441",8553:"928251f1",8652:"dc86c7ac",8721:"1b9d0a9f",8956:"96eb2e13",9004:"52552acb",9048:"a94703ab",9167:"22486033",9229:"b263f823",9468:"fc1d78ac",9647:"5e95c892",9898:"0e4d2c1f",9907:"96a64c65"}[e]||e)+"."+{151:"90ca5a99",354:"bb053369",453:"f95cc09d",705:"85567de6",1049:"9b627d47",1101:"c1868dbd",1235:"deb810c9",1236:"b9a930c2",1688:"af0e6f17",1747:"d7b413aa",1834:"2b4caf41",1958:"2361128b",1963:"8a4d1b03",2237:"c851d8b1",2440:"ecd0621f",2591:"ed0f24a8",2623:"f5f4bc28",2729:"f09c8c19",3146:"93ccdb29",3770:"4c285e4d",3784:"b14da7da",4134:"cf8a1b61",4137:"d8c3d12c",4206:"d2cff8bf",4324:"fec3e18f",4583:"c0d080f8",4682:"17f2500b",4719:"78fda0c7",4755:"8ecf99c7",4789:"a2decb43",4881:"0fef422a",4962:"1066adbc",5049:"7f13b97c",5158:"e76d7038",5193:"6564e4bf",5305:"ba91e199",5394:"83d77ce3",5609:"70cac65c",5742:"08d6695f",5994:"e92fbe8f",6061:"fc18f174",6644:"caaaf390",6688:"86f0bb7d",6698:"6ed0062f",6910:"47430490",6969:"fa836339",7098:"c4e87eeb",7497:"c8932db7",7650:"6c1e2407",7821:"b0fd6708",8294:"e9ad0173",8372:"90550b8b",8401:"d04d0920",8553:"e993bd6b",8652:"b044b2b0",8721:"db63918a",8913:"0680f2c1",8956:"84dbea70",9004:"5b293650",9048:"3a629456",9167:"da0cdded",9229:"80334313",9462:"be2eb63e",9468:"f3e786ab",9647:"e4c313e0",9898:"633fa04b",9907:"1e2aa7db"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="portal:",b.l=(e,a,c,f)=>{if(t[e])t[e].push(a);else{var d,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{d.onerror=d.onload=null,clearTimeout(s);var r=t[e];if(delete t[e],d.parentNode&&d.parentNode.removeChild(d),r&&r.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=l.bind(null,d.onerror),d.onload=l.bind(null,d.onload),o&&document.head.appendChild(d)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/es/",b.gca=function(e){return e={17896441:"8401",22486033:"9167",55975728:"1963","8673bc52":"151","00f359f0":"354","69d1cec5":"453",c462c969:"705","2ad40984":"1049","9a0a479a":"1101",a7456010:"1235","2626b04e":"1236","90322a14":"1747","0cf4a869":"1834",c4815b57:"1958","287eca59":"2591","43fda204":"2623","1e19a9ce":"2729","4971eec7":"3146",b29a6e93:"3770",f61ba1c9:"3784","393be207":"4134","0973a9ba":"4137","858a1305":"4206","1df93b7f":"4583","8f5a5419":"4682",a743f7aa:"4719",eb999967:"4755","06da9c4e":"4789","051fd316":"4881","7c1b9360":"4962",cd6dc502:"5158",d3687662:"5193",bc17cc8a:"5305",ba05495b:"5609",aba21aa0:"5742",e1ce9707:"5994","1f391b9e":"6061",edc41ec2:"6644",b9670199:"6698","7af9d8bd":"6910","14eb3368":"6969",a7bd4aaa:"7098","464c79c6":"7497",ed0df58e:"7650","27ee2ba6":"7821","71b16b82":"8294","6fa92b38":"8372","928251f1":"8553",dc86c7ac:"8652","1b9d0a9f":"8721","96eb2e13":"8956","52552acb":"9004",a94703ab:"9048",b263f823:"9229",fc1d78ac:"9468","5e95c892":"9647","0e4d2c1f":"9898","96a64c65":"9907"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,c)=>{var t=b.o(e,a)?e[a]:void 0;if(0!==t)if(t)c.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var r=new Promise(((c,r)=>t=e[a]=[c,r]));c.push(t[2]=r);var f=b.p+b.u(a),d=new Error;b.l(f,(c=>{if(b.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=c&&("load"===c.type?"missing":c.type),f=c&&c.target&&c.target.src;d.message="Loading chunk "+a+" failed.\n("+r+": "+f+")",d.name="ChunkLoadError",d.type=r,d.request=f,t[1](d)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,c)=>{var t,r,f=c[0],d=c[1],o=c[2],n=0;if(f.some((a=>0!==e[a]))){for(t in d)b.o(d,t)&&(b.m[t]=d[t]);if(o)var i=o(b)}for(a&&a(c);n{"use strict";var e,a,c,t,r,f={},d={};function b(e){var a=d[e];if(void 0!==a)return a.exports;var c=d[e]={exports:{}};return f[e].call(c.exports,c,c.exports,b),c.exports}b.m=f,e=[],b.O=(a,c,t,r)=>{if(!c){var f=1/0;for(i=0;i=r)&&Object.keys(b.O).every((e=>b.O[e](c[o])))?c.splice(o--,1):(d=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[c,t,r]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);b.r(r);var f={};a=a||[null,c({}),c([]),c(c)];for(var d=2&t&&e;"object"==typeof d&&!~a.indexOf(d);d=c(d))Object.getOwnPropertyNames(d).forEach((a=>f[a]=()=>e[a]));return f.default=()=>e,b.d(r,f),r},b.d=(e,a)=>{for(var c in a)b.o(a,c)&&!b.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,c)=>(b.f[c](e,a),a)),[])),b.u=e=>"assets/js/"+({151:"8673bc52",354:"00f359f0",453:"69d1cec5",705:"c462c969",1049:"2ad40984",1101:"9a0a479a",1235:"a7456010",1236:"2626b04e",1747:"90322a14",1834:"0cf4a869",1958:"c4815b57",1963:"55975728",2591:"287eca59",2623:"43fda204",2729:"1e19a9ce",3146:"4971eec7",3770:"b29a6e93",3784:"f61ba1c9",4134:"393be207",4137:"0973a9ba",4206:"858a1305",4583:"1df93b7f",4682:"8f5a5419",4719:"a743f7aa",4755:"eb999967",4789:"06da9c4e",4881:"051fd316",4962:"7c1b9360",5158:"cd6dc502",5193:"d3687662",5305:"bc17cc8a",5609:"ba05495b",5742:"aba21aa0",5994:"e1ce9707",6061:"1f391b9e",6644:"edc41ec2",6698:"b9670199",6910:"7af9d8bd",6969:"14eb3368",7098:"a7bd4aaa",7497:"464c79c6",7650:"ed0df58e",7821:"27ee2ba6",8294:"71b16b82",8372:"6fa92b38",8401:"17896441",8553:"928251f1",8652:"dc86c7ac",8721:"1b9d0a9f",8956:"96eb2e13",9004:"52552acb",9048:"a94703ab",9167:"22486033",9229:"b263f823",9468:"fc1d78ac",9647:"5e95c892",9898:"0e4d2c1f",9907:"96a64c65"}[e]||e)+"."+{151:"90ca5a99",354:"bb053369",453:"f95cc09d",705:"a2893557",1049:"9b627d47",1101:"c1868dbd",1235:"deb810c9",1236:"b9a930c2",1688:"af0e6f17",1747:"d7b413aa",1834:"2b4caf41",1958:"2361128b",1963:"8a4d1b03",2237:"c851d8b1",2440:"ecd0621f",2591:"ed0f24a8",2623:"f5f4bc28",2729:"f09c8c19",3146:"93ccdb29",3770:"4c285e4d",3784:"b14da7da",4134:"cf8a1b61",4137:"d8c3d12c",4206:"d2cff8bf",4324:"fec3e18f",4583:"c0d080f8",4682:"17f2500b",4719:"78fda0c7",4755:"8ecf99c7",4789:"a2decb43",4881:"0fef422a",4962:"1066adbc",5049:"7f13b97c",5158:"e76d7038",5193:"6564e4bf",5305:"ba91e199",5394:"83d77ce3",5609:"70cac65c",5742:"08d6695f",5994:"e92fbe8f",6061:"fc18f174",6644:"caaaf390",6688:"86f0bb7d",6698:"6ed0062f",6910:"47430490",6969:"fa836339",7098:"c4e87eeb",7497:"c8932db7",7650:"6c1e2407",7821:"b0fd6708",8294:"e9ad0173",8372:"90550b8b",8401:"d04d0920",8553:"e993bd6b",8652:"b044b2b0",8721:"db63918a",8913:"0680f2c1",8956:"84dbea70",9004:"5b293650",9048:"3a629456",9167:"da0cdded",9229:"80334313",9462:"be2eb63e",9468:"f3e786ab",9647:"e4c313e0",9898:"633fa04b",9907:"1e2aa7db"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="portal:",b.l=(e,a,c,f)=>{if(t[e])t[e].push(a);else{var d,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{d.onerror=d.onload=null,clearTimeout(s);var r=t[e];if(delete t[e],d.parentNode&&d.parentNode.removeChild(d),r&&r.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=l.bind(null,d.onerror),d.onload=l.bind(null,d.onload),o&&document.head.appendChild(d)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/es/",b.gca=function(e){return e={17896441:"8401",22486033:"9167",55975728:"1963","8673bc52":"151","00f359f0":"354","69d1cec5":"453",c462c969:"705","2ad40984":"1049","9a0a479a":"1101",a7456010:"1235","2626b04e":"1236","90322a14":"1747","0cf4a869":"1834",c4815b57:"1958","287eca59":"2591","43fda204":"2623","1e19a9ce":"2729","4971eec7":"3146",b29a6e93:"3770",f61ba1c9:"3784","393be207":"4134","0973a9ba":"4137","858a1305":"4206","1df93b7f":"4583","8f5a5419":"4682",a743f7aa:"4719",eb999967:"4755","06da9c4e":"4789","051fd316":"4881","7c1b9360":"4962",cd6dc502:"5158",d3687662:"5193",bc17cc8a:"5305",ba05495b:"5609",aba21aa0:"5742",e1ce9707:"5994","1f391b9e":"6061",edc41ec2:"6644",b9670199:"6698","7af9d8bd":"6910","14eb3368":"6969",a7bd4aaa:"7098","464c79c6":"7497",ed0df58e:"7650","27ee2ba6":"7821","71b16b82":"8294","6fa92b38":"8372","928251f1":"8553",dc86c7ac:"8652","1b9d0a9f":"8721","96eb2e13":"8956","52552acb":"9004",a94703ab:"9048",b263f823:"9229",fc1d78ac:"9468","5e95c892":"9647","0e4d2c1f":"9898","96a64c65":"9907"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,c)=>{var t=b.o(e,a)?e[a]:void 0;if(0!==t)if(t)c.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var r=new Promise(((c,r)=>t=e[a]=[c,r]));c.push(t[2]=r);var f=b.p+b.u(a),d=new Error;b.l(f,(c=>{if(b.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=c&&("load"===c.type?"missing":c.type),f=c&&c.target&&c.target.src;d.message="Loading chunk "+a+" failed.\n("+r+": "+f+")",d.name="ChunkLoadError",d.type=r,d.request=f,t[1](d)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,c)=>{var t,r,f=c[0],d=c[1],o=c[2],n=0;if(f.some((a=>0!==e[a]))){for(t in d)b.o(d,t)&&(b.m[t]=d[t]);if(o)var i=o(b)}for(a&&a(c);n - + diff --git a/es/develop/auto-sdk/auto-id/index.html b/es/develop/auto-sdk/auto-id/index.html index 7bd4fc73d73..d9eee8a4e27 100644 --- a/es/develop/auto-sdk/auto-id/index.html +++ b/es/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/auto-sdk/consensus/index.html b/es/develop/auto-sdk/consensus/index.html index 07665606217..9f8ae142627 100644 --- a/es/develop/auto-sdk/consensus/index.html +++ b/es/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/auto-sdk/drive/index.html b/es/develop/auto-sdk/drive/index.html index 4421897aa8f..33917599ef5 100644 --- a/es/develop/auto-sdk/drive/index.html +++ b/es/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/auto-sdk/index.html b/es/develop/auto-sdk/index.html index 9e49c05c6e6..acc7b3024fd 100644 --- a/es/develop/auto-sdk/index.html +++ b/es/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/auto-sdk/intro/index.html b/es/develop/auto-sdk/intro/index.html index f66a306b5fd..647bb48efa3 100644 --- a/es/develop/auto-sdk/intro/index.html +++ b/es/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/auto-sdk/utils/index.html b/es/develop/auto-sdk/utils/index.html index fe18c85f20f..17f4afb03b4 100644 --- a/es/develop/auto-sdk/utils/index.html +++ b/es/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/auto-sdk/xdm/index.html b/es/develop/auto-sdk/xdm/index.html index 1faca3c06ea..528a174561a 100644 --- a/es/develop/auto-sdk/xdm/index.html +++ b/es/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/intro/index.html b/es/develop/intro/index.html index bafb5ff26f5..cbb7dffa76d 100644 --- a/es/develop/intro/index.html +++ b/es/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/nova/block-explorer/index.html b/es/develop/nova/block-explorer/index.html index 6bb10904698..83f74a5ebb4 100644 --- a/es/develop/nova/block-explorer/index.html +++ b/es/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/nova/faucet/index.html b/es/develop/nova/faucet/index.html index a2a8fc7b19e..3346888cbf7 100644 --- a/es/develop/nova/faucet/index.html +++ b/es/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/nova/general/index.html b/es/develop/nova/general/index.html index f35c623d48b..0599f7c0af7 100644 --- a/es/develop/nova/general/index.html +++ b/es/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/nova/guides/foundry/index.html b/es/develop/nova/guides/foundry/index.html index 16a4832be6c..10f58c7a569 100644 --- a/es/develop/nova/guides/foundry/index.html +++ b/es/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/nova/guides/hardhat/index.html b/es/develop/nova/guides/hardhat/index.html index d5b5873a24b..da1f9f874b0 100644 --- a/es/develop/nova/guides/hardhat/index.html +++ b/es/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/nova/guides/local-development/index.html b/es/develop/nova/guides/local-development/index.html index 40a0a03e7db..ee08ba39a1c 100644 --- a/es/develop/nova/guides/local-development/index.html +++ b/es/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/nova/guides/remix/index.html b/es/develop/nova/guides/remix/index.html index 561a4287620..cf8898964a0 100644 --- a/es/develop/nova/guides/remix/index.html +++ b/es/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/nova/index.html b/es/develop/nova/index.html index bb7aecdcc4e..374cd2ecf6a 100644 --- a/es/develop/nova/index.html +++ b/es/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/nova/introduction/index.html b/es/develop/nova/introduction/index.html index 8175ac1ca59..d910b7b139a 100644 --- a/es/develop/nova/introduction/index.html +++ b/es/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/develop/nova/metamask/index.html b/es/develop/nova/metamask/index.html index 53afda0c99d..dd4b5cdbd07 100644 --- a/es/develop/nova/metamask/index.html +++ b/es/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/advanced-cli/cluster/index.html b/es/farming/advanced-cli/cluster/index.html index 6dd5900f733..0e9c47b620d 100644 --- a/es/farming/advanced-cli/cluster/index.html +++ b/es/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/advanced-cli/install/index.html b/es/farming/advanced-cli/install/index.html index 8c6c7fb8e76..23909ec9ae2 100644 --- a/es/farming/advanced-cli/install/index.html +++ b/es/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/advanced-cli/tips/index.html b/es/farming/advanced-cli/tips/index.html index a5882ad3d0b..192e4a93c4b 100644 --- a/es/farming/advanced-cli/tips/index.html +++ b/es/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/common-problems/index.html b/es/farming/common-problems/index.html index a640ab0da32..feb471b154b 100644 --- a/es/farming/common-problems/index.html +++ b/es/farming/common-problems/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/guides/gpu-plotter/index.html b/es/farming/guides/gpu-plotter/index.html index a5064b71c37..a63022f5833 100644 --- a/es/farming/guides/gpu-plotter/index.html +++ b/es/farming/guides/gpu-plotter/index.html @@ -12,14 +12,13 @@ - +

GPU Plotter

Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck.

Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed.

Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU.

-
Plot Format Compatibility

GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting.

Platform Compatibility

Platform🐧 Linux🪟 WindowsNvidiaAMDIntel
Advanced CLI🛠️🔮
Space Acres🔜🔮

🛠️ Limited AMD Support for Linux only is available in recent test builds. The most recent test builds are linked on the forum

See Discord farmer-chat channel for limited support.

@@ -59,8 +58,6 @@

C

Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): --cuda-gpus <gpu_ids>

--cuda-gpus 0,1,3

Farming Cluster

-

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

-

Known Issues

-

Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine.

+

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

\ No newline at end of file diff --git a/es/farming/guides/grafana-dashboard/index.html b/es/farming/guides/grafana-dashboard/index.html index ba442f1326f..15a3a28b2de 100644 --- a/es/farming/guides/grafana-dashboard/index.html +++ b/es/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/guides/index.html b/es/farming/guides/index.html index 9bdcafaecf4..63b6cbf9549 100644 --- a/es/farming/guides/index.html +++ b/es/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/guides/port-config/index.html b/es/farming/guides/port-config/index.html index 1ebc18929f2..088b1bdf733 100644 --- a/es/farming/guides/port-config/index.html +++ b/es/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/guides/verified-farmer/index.html b/es/farming/guides/verified-farmer/index.html index 6bc46fe9576..c335c19cf83 100644 --- a/es/farming/guides/verified-farmer/index.html +++ b/es/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/intro/index.html b/es/farming/intro/index.html index aa1d2015b67..f60ad0fa46e 100644 --- a/es/farming/intro/index.html +++ b/es/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/space-acres/install/index.html b/es/farming/space-acres/install/index.html index 4d6167b0974..feffe527cb4 100644 --- a/es/farming/space-acres/install/index.html +++ b/es/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/space-acres/translate/index.html b/es/farming/space-acres/translate/index.html index a4edccb6a17..bc2e44e3fc5 100644 --- a/es/farming/space-acres/translate/index.html +++ b/es/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/farming/timekeeper/index.html b/es/farming/timekeeper/index.html index 966b7469c65..21a7ba633fa 100644 --- a/es/farming/timekeeper/index.html +++ b/es/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/index.html b/es/index.html index feac976f8d0..f0ae2dca9c3 100644 --- a/es/index.html +++ b/es/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/learn/academy/index.html b/es/learn/academy/index.html index 117d360cdfc..fc483672d50 100644 --- a/es/learn/academy/index.html +++ b/es/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/learn/intro/index.html b/es/learn/intro/index.html index 089e83b7d5c..adaf683ee88 100644 --- a/es/learn/intro/index.html +++ b/es/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/learn/security/index.html b/es/learn/security/index.html index 8548d9318b7..581d0df47ef 100644 --- a/es/learn/security/index.html +++ b/es/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/markdown-page/index.html b/es/markdown-page/index.html index 2a087a6fe31..1aee4a41527 100644 --- a/es/markdown-page/index.html +++ b/es/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/participate/community/resources/index.html b/es/participate/community/resources/index.html index 8b3305f3fd4..1e9aab68720 100644 --- a/es/participate/community/resources/index.html +++ b/es/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/participate/community/tools/index.html b/es/participate/community/tools/index.html index 4462ac6717b..32620742f4a 100644 --- a/es/participate/community/tools/index.html +++ b/es/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/participate/contribute/code-of-conduct/index.html b/es/participate/contribute/code-of-conduct/index.html index c0b58dd0e3b..f0aeaf8d38a 100644 --- a/es/participate/contribute/code-of-conduct/index.html +++ b/es/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/participate/contribute/intro/index.html b/es/participate/contribute/intro/index.html index 819bed4b71a..2b77f5f35d7 100644 --- a/es/participate/contribute/intro/index.html +++ b/es/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/participate/contribute/translate/index.html b/es/participate/contribute/translate/index.html index ecd4ef4d2ff..71e7d63bb6b 100644 --- a/es/participate/contribute/translate/index.html +++ b/es/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/staking/intro/index.html b/es/staking/intro/index.html index f54dab517d5..a8db5ba2a53 100644 --- a/es/staking/intro/index.html +++ b/es/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/staking/operator/deregister/index.html b/es/staking/operator/deregister/index.html index fff0a57dca5..2ea27668365 100644 --- a/es/staking/operator/deregister/index.html +++ b/es/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/staking/operator/register/index.html b/es/staking/operator/register/index.html index 2506c7eff88..847767599fb 100644 --- a/es/staking/operator/register/index.html +++ b/es/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/staking/operator/tips/index.html b/es/staking/operator/tips/index.html index 8e651c54f3d..9357a5b25e4 100644 --- a/es/staking/operator/tips/index.html +++ b/es/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/staking/stake/index.html b/es/staking/stake/index.html index 25b992efcad..1ea24e67cb5 100644 --- a/es/staking/stake/index.html +++ b/es/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/wallets/polkadot/index.html b/es/wallets/polkadot/index.html index 969880da984..8fa97507489 100644 --- a/es/wallets/polkadot/index.html +++ b/es/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/es/wallets/subwallet/index.html b/es/wallets/subwallet/index.html index 02d30f5baa6..99aac017526 100644 --- a/es/wallets/subwallet/index.html +++ b/es/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/farming/advanced-cli/cluster/index.html b/farming/advanced-cli/cluster/index.html index 27db1574d72..b26ec1f54f4 100644 --- a/farming/advanced-cli/cluster/index.html +++ b/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/farming/advanced-cli/install/index.html b/farming/advanced-cli/install/index.html index b59f2a64556..2223e69fcb1 100644 --- a/farming/advanced-cli/install/index.html +++ b/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/farming/advanced-cli/tips/index.html b/farming/advanced-cli/tips/index.html index 41457c23ed7..39bd87de542 100644 --- a/farming/advanced-cli/tips/index.html +++ b/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/farming/common-problems/index.html b/farming/common-problems/index.html index 95124a403e2..c15a5ec7670 100644 --- a/farming/common-problems/index.html +++ b/farming/common-problems/index.html @@ -12,7 +12,7 @@ - + diff --git a/farming/guides/gpu-plotter/index.html b/farming/guides/gpu-plotter/index.html index 6a18f7b2f91..af20183d86a 100644 --- a/farming/guides/gpu-plotter/index.html +++ b/farming/guides/gpu-plotter/index.html @@ -12,14 +12,13 @@ - +

GPU Plotter

Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck.

Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed.

Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU.

-
Plot Format Compatibility

GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting.

Platform Compatibility

Platform🐧 Linux🪟 WindowsNvidiaAMDIntel
Advanced CLI🛠️🔮
Space Acres🔜🔮

🛠️ Limited AMD Support for Linux only is available in recent test builds. The most recent test builds are linked on the forum

See Discord farmer-chat channel for limited support.

@@ -59,8 +58,6 @@

C

Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): --cuda-gpus <gpu_ids>

--cuda-gpus 0,1,3

Farming Cluster

-

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

-

Known Issues

-

Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine.

+

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

\ No newline at end of file diff --git a/farming/guides/grafana-dashboard/index.html b/farming/guides/grafana-dashboard/index.html index e7292f3a5d1..d09acdb5d23 100644 --- a/farming/guides/grafana-dashboard/index.html +++ b/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/farming/guides/index.html b/farming/guides/index.html index ea6967e70f7..012b48f5b1e 100644 --- a/farming/guides/index.html +++ b/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/farming/guides/port-config/index.html b/farming/guides/port-config/index.html index 425fe830c80..c89d49ac95b 100644 --- a/farming/guides/port-config/index.html +++ b/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/farming/guides/verified-farmer/index.html b/farming/guides/verified-farmer/index.html index e0d6ae7344e..2ec92d1e47c 100644 --- a/farming/guides/verified-farmer/index.html +++ b/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/farming/intro/index.html b/farming/intro/index.html index fabeb2df196..a6be7a1f288 100644 --- a/farming/intro/index.html +++ b/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/farming/space-acres/install/index.html b/farming/space-acres/install/index.html index 568a6c60032..8161a6aba31 100644 --- a/farming/space-acres/install/index.html +++ b/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/farming/space-acres/translate/index.html b/farming/space-acres/translate/index.html index 9cc2e410570..c60ea0a3ca8 100644 --- a/farming/space-acres/translate/index.html +++ b/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/farming/timekeeper/index.html b/farming/timekeeper/index.html index 0bb6a4212e1..dfbb0823113 100644 --- a/farming/timekeeper/index.html +++ b/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/404.html b/fr/404.html index 5c59aae7ad0..cf7a3f81d0a 100644 --- a/fr/404.html +++ b/fr/404.html @@ -12,7 +12,7 @@ - + diff --git a/fr/assets/js/c8a8cac7.18846e41.js b/fr/assets/js/c8a8cac7.18846e41.js deleted file mode 100644 index 8641cb0f2be..00000000000 --- a/fr/assets/js/c8a8cac7.18846e41.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[1723],{9232:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const o={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},a=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/fr/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/fr/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/fr/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/fr/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2},{value:"Known Issues",id:"known-issues",level:2}];function h(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.admonition,{title:"Plot Format Compatibility",type:"info",children:(0,r.jsx)(t.p,{children:"GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting."})}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."}),"\n",(0,r.jsx)(t.h2,{id:"known-issues",children:"Known Issues"}),"\n",(0,r.jsx)(t.p,{children:"Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),o=n(205),a=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,a.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,a]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),f=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{f&&a(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);a(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:o}=e;const a=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=a.indexOf(t),s=o[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=a.indexOf(e.currentTarget)+1;t=a[n]??a[0];break}case"ArrowLeft":{const n=a.indexOf(e.currentTarget)-1;t=a[n]??a[a.length-1];break}}t?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:o.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>a.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(y,{...t,...e}),(0,j.jsx)(b,{...t,...e})]})}function w(e){const t=(0,g.A)();return(0,j.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>o});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/fr/assets/js/c8a8cac7.8f8f8feb.js b/fr/assets/js/c8a8cac7.8f8f8feb.js new file mode 100644 index 00000000000..b15107a61f8 --- /dev/null +++ b/fr/assets/js/c8a8cac7.8f8f8feb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[1723],{9232:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const a={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},o=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/fr/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/fr/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/fr/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/fr/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2}];function h(e){const t={a:"a",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>A});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),a=n(205),o=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,o.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,o]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),f=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{f&&o(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:a}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=o.indexOf(t),s=a[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=o.indexOf(e.currentTarget)+1;t=o[n]??o[0];break}case"ArrowLeft":{const n=o.indexOf(e.currentTarget)-1;t=o[n]??o[o.length-1];break}}t?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:a.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>o.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(y,{...t,...e}),(0,j.jsx)(b,{...t,...e})]})}function A(e){const t=(0,g.A)();return(0,j.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>a});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/fr/assets/js/runtime~main.1b536fd6.js b/fr/assets/js/runtime~main.8eec1dee.js similarity index 98% rename from fr/assets/js/runtime~main.1b536fd6.js rename to fr/assets/js/runtime~main.8eec1dee.js index c64be546c0d..7ec82dafe83 100644 --- a/fr/assets/js/runtime~main.1b536fd6.js +++ b/fr/assets/js/runtime~main.8eec1dee.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,c,f,d,t={},r={};function b(e){var a=r[e];if(void 0!==a)return a.exports;var c=r[e]={exports:{}};return t[e].call(c.exports,c,c.exports,b),c.exports}b.m=t,e=[],b.O=(a,c,f,d)=>{if(!c){var t=1/0;for(i=0;i=d)&&Object.keys(b.O).every((e=>b.O[e](c[o])))?c.splice(o--,1):(r=!1,d0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[c,f,d]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var d=Object.create(null);b.r(d);var t={};a=a||[null,c({}),c([]),c(c)];for(var r=2&f&&e;"object"==typeof r&&!~a.indexOf(r);r=c(r))Object.getOwnPropertyNames(r).forEach((a=>t[a]=()=>e[a]));return t.default=()=>e,b.d(d,t),d},b.d=(e,a)=>{for(var c in a)b.o(a,c)&&!b.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,c)=>(b.f[c](e,a),a)),[])),b.u=e=>"assets/js/"+({635:"2b1c9a99",706:"cebc577a",1235:"a7456010",1723:"c8a8cac7",1883:"b34539f6",2132:"27b4e083",2149:"ad0f0f05",2284:"72dcdf41",2360:"114e2802",2705:"142f63e3",2906:"61119429",2999:"fc93b4d7",3145:"fac7965a",3474:"0cdef881",3798:"831359d0",3911:"fb6c95b5",3947:"307e2832",4134:"393be207",4438:"206d2b0a",4483:"4bd4d1dc",4583:"1df93b7f",4786:"3ca0a71c",4874:"f63740a4",4903:"5fedb718",5067:"fa94d637",5166:"14385c69",5277:"e5a578c6",5411:"426ffb1a",5429:"15ea95c1",5549:"9caeb154",5698:"26c00b42",5742:"aba21aa0",5954:"96eecebd",6061:"1f391b9e",6386:"5d6995e0",6527:"a1d9bb0c",6738:"e212f5c7",6759:"f99cc666",6785:"c4dbbf8a",6831:"1ff59702",6969:"14eb3368",6984:"50d458dc",7098:"a7bd4aaa",7249:"9f3a1f0f",7262:"84828519",7279:"243195d8",7494:"2955a77a",7901:"0b73c375",8401:"17896441",8564:"2c1c6cad",8584:"758680a2",8649:"f2214254",8725:"fd41eeb1",8923:"7da7a415",9048:"a94703ab",9647:"5e95c892",9747:"9c0ec34c",9784:"192b04b3"}[e]||e)+"."+{635:"c077324b",706:"feb30ef8",1235:"deb810c9",1688:"af0e6f17",1723:"18846e41",1883:"f63c9f28",2132:"19067462",2149:"03fa341a",2237:"c851d8b1",2284:"a3f5f14f",2360:"79a6328a",2440:"ecd0621f",2705:"42280894",2906:"7eb800d4",2999:"60093224",3145:"b20f5dd1",3474:"5502e07f",3798:"6dd081ec",3911:"57a06aed",3947:"c13c1488",4134:"be9ae428",4324:"fec3e18f",4438:"bed741de",4483:"8bbe6c56",4583:"c0d080f8",4786:"0d571676",4874:"550bd16b",4903:"1d179ff1",5049:"7f13b97c",5067:"b815bbed",5166:"98d4df79",5277:"61a6d808",5394:"83d77ce3",5411:"b8328b3c",5429:"a8ac9957",5549:"bc70e113",5698:"7704910e",5742:"08d6695f",5954:"e16e3d21",6061:"fc18f174",6386:"c23d2b16",6527:"4f43b2ef",6688:"86f0bb7d",6738:"f4c9ff39",6759:"48821175",6785:"129a0c9d",6831:"18c68699",6969:"4f11b87f",6984:"930d4cd1",7098:"c4e87eeb",7249:"270626a7",7262:"f681667a",7279:"be00aa76",7494:"2f8323a1",7901:"8fe68c4c",8401:"3769c7ca",8564:"26ecb5f9",8584:"cdb310d6",8649:"77a18fb4",8725:"6cb296fd",8913:"0680f2c1",8923:"fc375fa7",9048:"3a629456",9462:"be2eb63e",9647:"e4c313e0",9747:"0cf9f9c1",9784:"5c6d54a8"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},d="portal:",b.l=(e,a,c,t)=>{if(f[e])f[e].push(a);else{var r,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{r.onerror=r.onload=null,clearTimeout(s);var d=f[e];if(delete f[e],r.parentNode&&r.parentNode.removeChild(r),d&&d.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=l.bind(null,r.onerror),r.onload=l.bind(null,r.onload),o&&document.head.appendChild(r)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/fr/",b.gca=function(e){return e={17896441:"8401",61119429:"2906",84828519:"7262","2b1c9a99":"635",cebc577a:"706",a7456010:"1235",c8a8cac7:"1723",b34539f6:"1883","27b4e083":"2132",ad0f0f05:"2149","72dcdf41":"2284","114e2802":"2360","142f63e3":"2705",fc93b4d7:"2999",fac7965a:"3145","0cdef881":"3474","831359d0":"3798",fb6c95b5:"3911","307e2832":"3947","393be207":"4134","206d2b0a":"4438","4bd4d1dc":"4483","1df93b7f":"4583","3ca0a71c":"4786",f63740a4:"4874","5fedb718":"4903",fa94d637:"5067","14385c69":"5166",e5a578c6:"5277","426ffb1a":"5411","15ea95c1":"5429","9caeb154":"5549","26c00b42":"5698",aba21aa0:"5742","96eecebd":"5954","1f391b9e":"6061","5d6995e0":"6386",a1d9bb0c:"6527",e212f5c7:"6738",f99cc666:"6759",c4dbbf8a:"6785","1ff59702":"6831","14eb3368":"6969","50d458dc":"6984",a7bd4aaa:"7098","9f3a1f0f":"7249","243195d8":"7279","2955a77a":"7494","0b73c375":"7901","2c1c6cad":"8564","758680a2":"8584",f2214254:"8649",fd41eeb1:"8725","7da7a415":"8923",a94703ab:"9048","5e95c892":"9647","9c0ec34c":"9747","192b04b3":"9784"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,c)=>{var f=b.o(e,a)?e[a]:void 0;if(0!==f)if(f)c.push(f[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var d=new Promise(((c,d)=>f=e[a]=[c,d]));c.push(f[2]=d);var t=b.p+b.u(a),r=new Error;b.l(t,(c=>{if(b.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var d=c&&("load"===c.type?"missing":c.type),t=c&&c.target&&c.target.src;r.message="Loading chunk "+a+" failed.\n("+d+": "+t+")",r.name="ChunkLoadError",r.type=d,r.request=t,f[1](r)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,c)=>{var f,d,t=c[0],r=c[1],o=c[2],n=0;if(t.some((a=>0!==e[a]))){for(f in r)b.o(r,f)&&(b.m[f]=r[f]);if(o)var i=o(b)}for(a&&a(c);n{"use strict";var e,a,c,f,d,t={},r={};function b(e){var a=r[e];if(void 0!==a)return a.exports;var c=r[e]={exports:{}};return t[e].call(c.exports,c,c.exports,b),c.exports}b.m=t,e=[],b.O=(a,c,f,d)=>{if(!c){var t=1/0;for(i=0;i=d)&&Object.keys(b.O).every((e=>b.O[e](c[o])))?c.splice(o--,1):(r=!1,d0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[c,f,d]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var d=Object.create(null);b.r(d);var t={};a=a||[null,c({}),c([]),c(c)];for(var r=2&f&&e;"object"==typeof r&&!~a.indexOf(r);r=c(r))Object.getOwnPropertyNames(r).forEach((a=>t[a]=()=>e[a]));return t.default=()=>e,b.d(d,t),d},b.d=(e,a)=>{for(var c in a)b.o(a,c)&&!b.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,c)=>(b.f[c](e,a),a)),[])),b.u=e=>"assets/js/"+({635:"2b1c9a99",706:"cebc577a",1235:"a7456010",1723:"c8a8cac7",1883:"b34539f6",2132:"27b4e083",2149:"ad0f0f05",2284:"72dcdf41",2360:"114e2802",2705:"142f63e3",2906:"61119429",2999:"fc93b4d7",3145:"fac7965a",3474:"0cdef881",3798:"831359d0",3911:"fb6c95b5",3947:"307e2832",4134:"393be207",4438:"206d2b0a",4483:"4bd4d1dc",4583:"1df93b7f",4786:"3ca0a71c",4874:"f63740a4",4903:"5fedb718",5067:"fa94d637",5166:"14385c69",5277:"e5a578c6",5411:"426ffb1a",5429:"15ea95c1",5549:"9caeb154",5698:"26c00b42",5742:"aba21aa0",5954:"96eecebd",6061:"1f391b9e",6386:"5d6995e0",6527:"a1d9bb0c",6738:"e212f5c7",6759:"f99cc666",6785:"c4dbbf8a",6831:"1ff59702",6969:"14eb3368",6984:"50d458dc",7098:"a7bd4aaa",7249:"9f3a1f0f",7262:"84828519",7279:"243195d8",7494:"2955a77a",7901:"0b73c375",8401:"17896441",8564:"2c1c6cad",8584:"758680a2",8649:"f2214254",8725:"fd41eeb1",8923:"7da7a415",9048:"a94703ab",9647:"5e95c892",9747:"9c0ec34c",9784:"192b04b3"}[e]||e)+"."+{635:"c077324b",706:"feb30ef8",1235:"deb810c9",1688:"af0e6f17",1723:"8f8f8feb",1883:"f63c9f28",2132:"19067462",2149:"03fa341a",2237:"c851d8b1",2284:"a3f5f14f",2360:"79a6328a",2440:"ecd0621f",2705:"42280894",2906:"7eb800d4",2999:"60093224",3145:"b20f5dd1",3474:"5502e07f",3798:"6dd081ec",3911:"57a06aed",3947:"c13c1488",4134:"be9ae428",4324:"fec3e18f",4438:"bed741de",4483:"8bbe6c56",4583:"c0d080f8",4786:"0d571676",4874:"550bd16b",4903:"1d179ff1",5049:"7f13b97c",5067:"b815bbed",5166:"98d4df79",5277:"61a6d808",5394:"83d77ce3",5411:"b8328b3c",5429:"a8ac9957",5549:"bc70e113",5698:"7704910e",5742:"08d6695f",5954:"e16e3d21",6061:"fc18f174",6386:"c23d2b16",6527:"4f43b2ef",6688:"86f0bb7d",6738:"f4c9ff39",6759:"48821175",6785:"129a0c9d",6831:"18c68699",6969:"4f11b87f",6984:"930d4cd1",7098:"c4e87eeb",7249:"270626a7",7262:"f681667a",7279:"be00aa76",7494:"2f8323a1",7901:"8fe68c4c",8401:"3769c7ca",8564:"26ecb5f9",8584:"cdb310d6",8649:"77a18fb4",8725:"6cb296fd",8913:"0680f2c1",8923:"fc375fa7",9048:"3a629456",9462:"be2eb63e",9647:"e4c313e0",9747:"0cf9f9c1",9784:"5c6d54a8"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},d="portal:",b.l=(e,a,c,t)=>{if(f[e])f[e].push(a);else{var r,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{r.onerror=r.onload=null,clearTimeout(s);var d=f[e];if(delete f[e],r.parentNode&&r.parentNode.removeChild(r),d&&d.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=l.bind(null,r.onerror),r.onload=l.bind(null,r.onload),o&&document.head.appendChild(r)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/fr/",b.gca=function(e){return e={17896441:"8401",61119429:"2906",84828519:"7262","2b1c9a99":"635",cebc577a:"706",a7456010:"1235",c8a8cac7:"1723",b34539f6:"1883","27b4e083":"2132",ad0f0f05:"2149","72dcdf41":"2284","114e2802":"2360","142f63e3":"2705",fc93b4d7:"2999",fac7965a:"3145","0cdef881":"3474","831359d0":"3798",fb6c95b5:"3911","307e2832":"3947","393be207":"4134","206d2b0a":"4438","4bd4d1dc":"4483","1df93b7f":"4583","3ca0a71c":"4786",f63740a4:"4874","5fedb718":"4903",fa94d637:"5067","14385c69":"5166",e5a578c6:"5277","426ffb1a":"5411","15ea95c1":"5429","9caeb154":"5549","26c00b42":"5698",aba21aa0:"5742","96eecebd":"5954","1f391b9e":"6061","5d6995e0":"6386",a1d9bb0c:"6527",e212f5c7:"6738",f99cc666:"6759",c4dbbf8a:"6785","1ff59702":"6831","14eb3368":"6969","50d458dc":"6984",a7bd4aaa:"7098","9f3a1f0f":"7249","243195d8":"7279","2955a77a":"7494","0b73c375":"7901","2c1c6cad":"8564","758680a2":"8584",f2214254:"8649",fd41eeb1:"8725","7da7a415":"8923",a94703ab:"9048","5e95c892":"9647","9c0ec34c":"9747","192b04b3":"9784"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,c)=>{var f=b.o(e,a)?e[a]:void 0;if(0!==f)if(f)c.push(f[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var d=new Promise(((c,d)=>f=e[a]=[c,d]));c.push(f[2]=d);var t=b.p+b.u(a),r=new Error;b.l(t,(c=>{if(b.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var d=c&&("load"===c.type?"missing":c.type),t=c&&c.target&&c.target.src;r.message="Loading chunk "+a+" failed.\n("+d+": "+t+")",r.name="ChunkLoadError",r.type=d,r.request=t,f[1](r)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,c)=>{var f,d,t=c[0],r=c[1],o=c[2],n=0;if(t.some((a=>0!==e[a]))){for(f in r)b.o(r,f)&&(b.m[f]=r[f]);if(o)var i=o(b)}for(a&&a(c);n - + diff --git a/fr/develop/auto-sdk/auto-id/index.html b/fr/develop/auto-sdk/auto-id/index.html index ee886afc189..80796cb8c18 100644 --- a/fr/develop/auto-sdk/auto-id/index.html +++ b/fr/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/auto-sdk/consensus/index.html b/fr/develop/auto-sdk/consensus/index.html index 24dc04e44fe..73da2764988 100644 --- a/fr/develop/auto-sdk/consensus/index.html +++ b/fr/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/auto-sdk/drive/index.html b/fr/develop/auto-sdk/drive/index.html index a5138c050ff..8a57015520b 100644 --- a/fr/develop/auto-sdk/drive/index.html +++ b/fr/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/auto-sdk/index.html b/fr/develop/auto-sdk/index.html index bac692d4193..14ab25e12cb 100644 --- a/fr/develop/auto-sdk/index.html +++ b/fr/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/auto-sdk/intro/index.html b/fr/develop/auto-sdk/intro/index.html index ac92187b04d..01cbaab3e36 100644 --- a/fr/develop/auto-sdk/intro/index.html +++ b/fr/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/auto-sdk/utils/index.html b/fr/develop/auto-sdk/utils/index.html index 4f9ae2d838e..2c166d563f3 100644 --- a/fr/develop/auto-sdk/utils/index.html +++ b/fr/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/auto-sdk/xdm/index.html b/fr/develop/auto-sdk/xdm/index.html index aaf279d0c48..d74469d785c 100644 --- a/fr/develop/auto-sdk/xdm/index.html +++ b/fr/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/intro/index.html b/fr/develop/intro/index.html index 5d4aa43a8e6..05731fd034a 100644 --- a/fr/develop/intro/index.html +++ b/fr/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/nova/block-explorer/index.html b/fr/develop/nova/block-explorer/index.html index 0e3a8ad1e7a..db0c1d4dfb1 100644 --- a/fr/develop/nova/block-explorer/index.html +++ b/fr/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/nova/faucet/index.html b/fr/develop/nova/faucet/index.html index 617d6a40956..737d2a88a0b 100644 --- a/fr/develop/nova/faucet/index.html +++ b/fr/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/nova/general/index.html b/fr/develop/nova/general/index.html index 5d2cb040c7c..ffa9c350a03 100644 --- a/fr/develop/nova/general/index.html +++ b/fr/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/nova/guides/foundry/index.html b/fr/develop/nova/guides/foundry/index.html index c52b1f70168..3534718d9b2 100644 --- a/fr/develop/nova/guides/foundry/index.html +++ b/fr/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/nova/guides/hardhat/index.html b/fr/develop/nova/guides/hardhat/index.html index ad8aaad4f53..07a2676a4ac 100644 --- a/fr/develop/nova/guides/hardhat/index.html +++ b/fr/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/nova/guides/local-development/index.html b/fr/develop/nova/guides/local-development/index.html index b8efbe00e14..fb1fa3b1f6f 100644 --- a/fr/develop/nova/guides/local-development/index.html +++ b/fr/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/nova/guides/remix/index.html b/fr/develop/nova/guides/remix/index.html index 72e5421dcc0..087199d5ca4 100644 --- a/fr/develop/nova/guides/remix/index.html +++ b/fr/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/nova/index.html b/fr/develop/nova/index.html index a242b31bcd6..9284862e470 100644 --- a/fr/develop/nova/index.html +++ b/fr/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/nova/introduction/index.html b/fr/develop/nova/introduction/index.html index fc29d6d3b21..5edd457efde 100644 --- a/fr/develop/nova/introduction/index.html +++ b/fr/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/develop/nova/metamask/index.html b/fr/develop/nova/metamask/index.html index c6889246935..ed8f9bc5832 100644 --- a/fr/develop/nova/metamask/index.html +++ b/fr/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/advanced-cli/cluster/index.html b/fr/farming/advanced-cli/cluster/index.html index 59fbc4513ed..19730489b7d 100644 --- a/fr/farming/advanced-cli/cluster/index.html +++ b/fr/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/advanced-cli/install/index.html b/fr/farming/advanced-cli/install/index.html index 2365ee90c39..2094c6bf9c0 100644 --- a/fr/farming/advanced-cli/install/index.html +++ b/fr/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/advanced-cli/tips/index.html b/fr/farming/advanced-cli/tips/index.html index 9892b2726f4..1b52880dec4 100644 --- a/fr/farming/advanced-cli/tips/index.html +++ b/fr/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/common-problems/index.html b/fr/farming/common-problems/index.html index 831824260cf..342c513db75 100644 --- a/fr/farming/common-problems/index.html +++ b/fr/farming/common-problems/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/guides/gpu-plotter/index.html b/fr/farming/guides/gpu-plotter/index.html index 2b7926e00ae..39a684775e7 100644 --- a/fr/farming/guides/gpu-plotter/index.html +++ b/fr/farming/guides/gpu-plotter/index.html @@ -12,14 +12,13 @@ - +

GPU Plotter

Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck.

Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed.

Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU.

-
Plot Format Compatibility

GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting.

Platform Compatibility

Platform🐧 Linux🪟 WindowsNvidiaAMDIntel
Advanced CLI🛠️🔮
Space Acres🔜🔮

🛠️ Limited AMD Support for Linux only is available in recent test builds. The most recent test builds are linked on the forum

See Discord farmer-chat channel for limited support.

@@ -59,8 +58,6 @@

C

Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): --cuda-gpus <gpu_ids>

--cuda-gpus 0,1,3

Farming Cluster

-

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

-

Known Issues

-

Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine.

+

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

\ No newline at end of file diff --git a/fr/farming/guides/grafana-dashboard/index.html b/fr/farming/guides/grafana-dashboard/index.html index 1ac8c533b20..68367b02000 100644 --- a/fr/farming/guides/grafana-dashboard/index.html +++ b/fr/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/guides/index.html b/fr/farming/guides/index.html index ffaa5820b5c..e1410c8b35f 100644 --- a/fr/farming/guides/index.html +++ b/fr/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/guides/port-config/index.html b/fr/farming/guides/port-config/index.html index 9e8293c3fe2..255229a0429 100644 --- a/fr/farming/guides/port-config/index.html +++ b/fr/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/guides/verified-farmer/index.html b/fr/farming/guides/verified-farmer/index.html index d262ef3ab16..50eb3815445 100644 --- a/fr/farming/guides/verified-farmer/index.html +++ b/fr/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/intro/index.html b/fr/farming/intro/index.html index fc32dde8997..70a92674519 100644 --- a/fr/farming/intro/index.html +++ b/fr/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/space-acres/install/index.html b/fr/farming/space-acres/install/index.html index 3b242605e96..7ac599b7c0b 100644 --- a/fr/farming/space-acres/install/index.html +++ b/fr/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/space-acres/translate/index.html b/fr/farming/space-acres/translate/index.html index b5bf1e94d5e..5d51fccc6cb 100644 --- a/fr/farming/space-acres/translate/index.html +++ b/fr/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/farming/timekeeper/index.html b/fr/farming/timekeeper/index.html index d99ea89a29b..1858c1ca6ce 100644 --- a/fr/farming/timekeeper/index.html +++ b/fr/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/index.html b/fr/index.html index 8980a7a3417..0d73ae00c40 100644 --- a/fr/index.html +++ b/fr/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/learn/academy/index.html b/fr/learn/academy/index.html index 514fe552e0a..0bf5e97db27 100644 --- a/fr/learn/academy/index.html +++ b/fr/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/learn/intro/index.html b/fr/learn/intro/index.html index 09b22844a77..2efb2d1b225 100644 --- a/fr/learn/intro/index.html +++ b/fr/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/learn/security/index.html b/fr/learn/security/index.html index 22a7c1c150b..d4eef665746 100644 --- a/fr/learn/security/index.html +++ b/fr/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/markdown-page/index.html b/fr/markdown-page/index.html index bc62c2e4529..8fd62e97681 100644 --- a/fr/markdown-page/index.html +++ b/fr/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/participate/community/resources/index.html b/fr/participate/community/resources/index.html index 6d01bd81a72..077eb32dd90 100644 --- a/fr/participate/community/resources/index.html +++ b/fr/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/participate/community/tools/index.html b/fr/participate/community/tools/index.html index 074bcf78a4b..2f5f413fab8 100644 --- a/fr/participate/community/tools/index.html +++ b/fr/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/participate/contribute/code-of-conduct/index.html b/fr/participate/contribute/code-of-conduct/index.html index 8cc474821eb..1c794010f23 100644 --- a/fr/participate/contribute/code-of-conduct/index.html +++ b/fr/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/participate/contribute/intro/index.html b/fr/participate/contribute/intro/index.html index d78447e1690..c59b7adb4a2 100644 --- a/fr/participate/contribute/intro/index.html +++ b/fr/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/participate/contribute/translate/index.html b/fr/participate/contribute/translate/index.html index db2e3b266f8..e385907d360 100644 --- a/fr/participate/contribute/translate/index.html +++ b/fr/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/staking/intro/index.html b/fr/staking/intro/index.html index d7186730414..262e98f84a5 100644 --- a/fr/staking/intro/index.html +++ b/fr/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/staking/operator/deregister/index.html b/fr/staking/operator/deregister/index.html index f493411e51c..a0f78718228 100644 --- a/fr/staking/operator/deregister/index.html +++ b/fr/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/staking/operator/register/index.html b/fr/staking/operator/register/index.html index b98cadb9731..3c6292b8c65 100644 --- a/fr/staking/operator/register/index.html +++ b/fr/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/staking/operator/tips/index.html b/fr/staking/operator/tips/index.html index 6774aad2959..82e4ce75267 100644 --- a/fr/staking/operator/tips/index.html +++ b/fr/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/staking/stake/index.html b/fr/staking/stake/index.html index 3f4aa5b4408..dd2abb6fe64 100644 --- a/fr/staking/stake/index.html +++ b/fr/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/wallets/polkadot/index.html b/fr/wallets/polkadot/index.html index 919ef08ad24..f74b86e4014 100644 --- a/fr/wallets/polkadot/index.html +++ b/fr/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/fr/wallets/subwallet/index.html b/fr/wallets/subwallet/index.html index 2ae311e25f9..8ead1bd6353 100644 --- a/fr/wallets/subwallet/index.html +++ b/fr/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/404.html b/id/404.html index 8d47f7f7ad9..d7337501f7f 100644 --- a/id/404.html +++ b/id/404.html @@ -12,7 +12,7 @@ - + diff --git a/id/assets/js/fdc3d773.cd34f383.js b/id/assets/js/fdc3d773.cd34f383.js deleted file mode 100644 index b46ef43e758..00000000000 --- a/id/assets/js/fdc3d773.cd34f383.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[5578],{3313:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const o={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},a=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/id/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/id/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/id/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/id/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2},{value:"Known Issues",id:"known-issues",level:2}];function h(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.admonition,{title:"Plot Format Compatibility",type:"info",children:(0,r.jsx)(t.p,{children:"GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting."})}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."}),"\n",(0,r.jsx)(t.h2,{id:"known-issues",children:"Known Issues"}),"\n",(0,r.jsx)(t.p,{children:"Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),o=n(205),a=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,a.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,a]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),f=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{f&&a(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);a(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:o}=e;const a=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=a.indexOf(t),s=o[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=a.indexOf(e.currentTarget)+1;t=a[n]??a[0];break}case"ArrowLeft":{const n=a.indexOf(e.currentTarget)-1;t=a[n]??a[a.length-1];break}}t?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:o.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>a.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(y,{...t,...e}),(0,j.jsx)(b,{...t,...e})]})}function w(e){const t=(0,g.A)();return(0,j.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>o});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/id/assets/js/fdc3d773.d7659eab.js b/id/assets/js/fdc3d773.d7659eab.js new file mode 100644 index 00000000000..1a70cd29853 --- /dev/null +++ b/id/assets/js/fdc3d773.d7659eab.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[5578],{3313:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const a={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},o=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/id/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/id/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/id/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/id/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2}];function h(e){const t={a:"a",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>A});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),a=n(205),o=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,o.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,o]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),j=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{j&&o(j)}),[j]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const j={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:a}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=o.indexOf(t),s=a[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=o.indexOf(e.currentTarget)+1;t=o[n]??o[0];break}case"ArrowLeft":{const n=o.indexOf(e.currentTarget)-1;t=o[n]??o[o.length-1];break}}t?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:a.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>o.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",j.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,f.jsxs)("div",{className:(0,s.A)("tabs-container",j.tabList),children:[(0,f.jsx)(y,{...t,...e}),(0,f.jsx)(b,{...t,...e})]})}function A(e){const t=(0,g.A)();return(0,f.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>a});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/id/assets/js/runtime~main.3f1d1be8.js b/id/assets/js/runtime~main.ee8d92cd.js similarity index 69% rename from id/assets/js/runtime~main.3f1d1be8.js rename to id/assets/js/runtime~main.ee8d92cd.js index de2ad913619..7e40c3647f3 100644 --- a/id/assets/js/runtime~main.3f1d1be8.js +++ b/id/assets/js/runtime~main.ee8d92cd.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,d,b,t,r={},f={};function c(e){var a=f[e];if(void 0!==a)return a.exports;var d=f[e]={exports:{}};return r[e].call(d.exports,d,d.exports,c),d.exports}c.m=r,e=[],c.O=(a,d,b,t)=>{if(!d){var r=1/0;for(i=0;i=t)&&Object.keys(c.O).every((e=>c.O[e](d[o])))?d.splice(o--,1):(f=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[d,b,t]},c.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return c.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,c.t=function(e,b){if(1&b&&(e=this(e)),8&b)return e;if("object"==typeof e&&e){if(4&b&&e.__esModule)return e;if(16&b&&"function"==typeof e.then)return e}var t=Object.create(null);c.r(t);var r={};a=a||[null,d({}),d([]),d(d)];for(var f=2&b&&e;"object"==typeof f&&!~a.indexOf(f);f=d(f))Object.getOwnPropertyNames(f).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,c.d(t,r),t},c.d=(e,a)=>{for(var d in a)c.o(a,d)&&!c.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},c.f={},c.e=e=>Promise.all(Object.keys(c.f).reduce(((a,d)=>(c.f[d](e,a),a)),[])),c.u=e=>"assets/js/"+({45:"64c21d08",393:"69989b7b",711:"e0366d15",1235:"a7456010",1250:"10457226",1810:"b8d44c53",2151:"44f91cb9",2452:"613b129a",2497:"89cae76e",2503:"cd1624ee",2532:"a6ba7fa5",2675:"d8e6747e",2730:"0b759b5e",3092:"ba8805a2",3232:"b7c29e6a",3235:"0a65db6b",3259:"0bf987f8",3807:"e6b29543",3810:"c24d65a6",4134:"393be207",4162:"2ab06f75",4314:"43cbe75f",4338:"2a3d70e9",4461:"216956e0",4467:"c8e10704",4583:"1df93b7f",4804:"c425dcdb",4860:"3b430c31",5568:"7d6eb928",5578:"fdc3d773",5742:"aba21aa0",5777:"e0b6e7a2",5891:"210158f7",5991:"4eab46a1",6006:"96906e00",6061:"1f391b9e",6365:"fd2e18dd",6548:"40216abe",6555:"0178f34e",6801:"30cf7702",6826:"4fe4b767",6969:"14eb3368",7098:"a7bd4aaa",7302:"e23140d8",7765:"13351c1a",7931:"a2fd5790",8058:"5f25da5e",8120:"b8b9de6a",8401:"17896441",8415:"e7c27558",8582:"94f3b1d0",8617:"14ec1774",8971:"0c419a17",9048:"a94703ab",9226:"d6e1f821",9348:"38457006",9520:"ab78ac32",9647:"5e95c892"}[e]||e)+"."+{45:"b1ec852f",393:"a3f66db2",711:"27f5aaca",1235:"deb810c9",1250:"c8f71d20",1688:"af0e6f17",1810:"f7d35116",2151:"9aab8cb1",2237:"c851d8b1",2440:"ecd0621f",2452:"2d3c579a",2497:"8e6eee15",2503:"d7b0e729",2532:"62e6a742",2675:"ff5ebcad",2730:"5e804f19",3092:"33a1a255",3232:"60c6ccf0",3235:"e9d770eb",3259:"e1f1ca15",3807:"31d61583",3810:"408f5dd8",4134:"671218bc",4162:"a0a10cec",4314:"de541327",4324:"fec3e18f",4338:"4cba7fc0",4461:"f7af1723",4467:"4c42a84b",4583:"c0d080f8",4804:"e4785200",4860:"708e6c15",5049:"7f13b97c",5394:"83d77ce3",5568:"024e938c",5578:"cd34f383",5742:"08d6695f",5777:"36bba195",5891:"67c202c5",5991:"a36c661d",6006:"7a7eeec2",6061:"fc18f174",6365:"431d840a",6548:"71a1a8c1",6555:"20fa66d9",6688:"86f0bb7d",6801:"3321c423",6826:"595c5e87",6969:"4f11b87f",7098:"c4e87eeb",7302:"2a60512a",7765:"5e72353a",7931:"198f877b",8058:"10f8e2f4",8120:"42038284",8401:"3769c7ca",8415:"b120e60b",8582:"2436380e",8617:"d350875c",8913:"0680f2c1",8971:"2e645c08",9048:"3a629456",9226:"a14e26cc",9348:"d8a69e5e",9462:"be2eb63e",9520:"b59f6192",9647:"e4c313e0"}[e]+".js",c.miniCssF=e=>{},c.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),c.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),b={},t="portal:",c.l=(e,a,d,r)=>{if(b[e])b[e].push(a);else{var f,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{f.onerror=f.onload=null,clearTimeout(s);var t=b[e];if(delete b[e],f.parentNode&&f.parentNode.removeChild(f),t&&t.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=l.bind(null,f.onerror),f.onload=l.bind(null,f.onload),o&&document.head.appendChild(f)}},c.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.p="/id/",c.gca=function(e){return e={10457226:"1250",17896441:"8401",38457006:"9348","64c21d08":"45","69989b7b":"393",e0366d15:"711",a7456010:"1235",b8d44c53:"1810","44f91cb9":"2151","613b129a":"2452","89cae76e":"2497",cd1624ee:"2503",a6ba7fa5:"2532",d8e6747e:"2675","0b759b5e":"2730",ba8805a2:"3092",b7c29e6a:"3232","0a65db6b":"3235","0bf987f8":"3259",e6b29543:"3807",c24d65a6:"3810","393be207":"4134","2ab06f75":"4162","43cbe75f":"4314","2a3d70e9":"4338","216956e0":"4461",c8e10704:"4467","1df93b7f":"4583",c425dcdb:"4804","3b430c31":"4860","7d6eb928":"5568",fdc3d773:"5578",aba21aa0:"5742",e0b6e7a2:"5777","210158f7":"5891","4eab46a1":"5991","96906e00":"6006","1f391b9e":"6061",fd2e18dd:"6365","40216abe":"6548","0178f34e":"6555","30cf7702":"6801","4fe4b767":"6826","14eb3368":"6969",a7bd4aaa:"7098",e23140d8:"7302","13351c1a":"7765",a2fd5790:"7931","5f25da5e":"8058",b8b9de6a:"8120",e7c27558:"8415","94f3b1d0":"8582","14ec1774":"8617","0c419a17":"8971",a94703ab:"9048",d6e1f821:"9226",ab78ac32:"9520","5e95c892":"9647"}[e]||e,c.p+c.u(e)},(()=>{var e={5354:0,1869:0};c.f.j=(a,d)=>{var b=c.o(e,a)?e[a]:void 0;if(0!==b)if(b)d.push(b[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((d,t)=>b=e[a]=[d,t]));d.push(b[2]=t);var r=c.p+c.u(a),f=new Error;c.l(r,(d=>{if(c.o(e,a)&&(0!==(b=e[a])&&(e[a]=void 0),b)){var t=d&&("load"===d.type?"missing":d.type),r=d&&d.target&&d.target.src;f.message="Loading chunk "+a+" failed.\n("+t+": "+r+")",f.name="ChunkLoadError",f.type=t,f.request=r,b[1](f)}}),"chunk-"+a,a)}},c.O.j=a=>0===e[a];var a=(a,d)=>{var b,t,r=d[0],f=d[1],o=d[2],n=0;if(r.some((a=>0!==e[a]))){for(b in f)c.o(f,b)&&(c.m[b]=f[b]);if(o)var i=o(c)}for(a&&a(d);n{"use strict";var e,a,d,t,b,r={},f={};function c(e){var a=f[e];if(void 0!==a)return a.exports;var d=f[e]={exports:{}};return r[e].call(d.exports,d,d.exports,c),d.exports}c.m=r,e=[],c.O=(a,d,t,b)=>{if(!d){var r=1/0;for(i=0;i=b)&&Object.keys(c.O).every((e=>c.O[e](d[o])))?d.splice(o--,1):(f=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[d,t,b]},c.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return c.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,c.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var b=Object.create(null);c.r(b);var r={};a=a||[null,d({}),d([]),d(d)];for(var f=2&t&&e;"object"==typeof f&&!~a.indexOf(f);f=d(f))Object.getOwnPropertyNames(f).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,c.d(b,r),b},c.d=(e,a)=>{for(var d in a)c.o(a,d)&&!c.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},c.f={},c.e=e=>Promise.all(Object.keys(c.f).reduce(((a,d)=>(c.f[d](e,a),a)),[])),c.u=e=>"assets/js/"+({45:"64c21d08",393:"69989b7b",711:"e0366d15",1235:"a7456010",1250:"10457226",1810:"b8d44c53",2151:"44f91cb9",2452:"613b129a",2497:"89cae76e",2503:"cd1624ee",2532:"a6ba7fa5",2675:"d8e6747e",2730:"0b759b5e",3092:"ba8805a2",3232:"b7c29e6a",3235:"0a65db6b",3259:"0bf987f8",3807:"e6b29543",3810:"c24d65a6",4134:"393be207",4162:"2ab06f75",4314:"43cbe75f",4338:"2a3d70e9",4461:"216956e0",4467:"c8e10704",4583:"1df93b7f",4804:"c425dcdb",4860:"3b430c31",5568:"7d6eb928",5578:"fdc3d773",5742:"aba21aa0",5777:"e0b6e7a2",5891:"210158f7",5991:"4eab46a1",6006:"96906e00",6061:"1f391b9e",6365:"fd2e18dd",6548:"40216abe",6555:"0178f34e",6801:"30cf7702",6826:"4fe4b767",6969:"14eb3368",7098:"a7bd4aaa",7302:"e23140d8",7765:"13351c1a",7931:"a2fd5790",8058:"5f25da5e",8120:"b8b9de6a",8401:"17896441",8415:"e7c27558",8582:"94f3b1d0",8617:"14ec1774",8971:"0c419a17",9048:"a94703ab",9226:"d6e1f821",9348:"38457006",9520:"ab78ac32",9647:"5e95c892"}[e]||e)+"."+{45:"b1ec852f",393:"a3f66db2",711:"27f5aaca",1235:"deb810c9",1250:"c8f71d20",1688:"af0e6f17",1810:"f7d35116",2151:"9aab8cb1",2237:"c851d8b1",2440:"ecd0621f",2452:"2d3c579a",2497:"8e6eee15",2503:"d7b0e729",2532:"62e6a742",2675:"ff5ebcad",2730:"5e804f19",3092:"33a1a255",3232:"60c6ccf0",3235:"e9d770eb",3259:"e1f1ca15",3807:"31d61583",3810:"408f5dd8",4134:"671218bc",4162:"a0a10cec",4314:"de541327",4324:"fec3e18f",4338:"4cba7fc0",4461:"f7af1723",4467:"4c42a84b",4583:"c0d080f8",4804:"e4785200",4860:"708e6c15",5049:"7f13b97c",5394:"83d77ce3",5568:"024e938c",5578:"d7659eab",5742:"08d6695f",5777:"36bba195",5891:"67c202c5",5991:"a36c661d",6006:"7a7eeec2",6061:"fc18f174",6365:"431d840a",6548:"71a1a8c1",6555:"20fa66d9",6688:"86f0bb7d",6801:"3321c423",6826:"595c5e87",6969:"4f11b87f",7098:"c4e87eeb",7302:"2a60512a",7765:"5e72353a",7931:"198f877b",8058:"10f8e2f4",8120:"42038284",8401:"3769c7ca",8415:"b120e60b",8582:"2436380e",8617:"d350875c",8913:"0680f2c1",8971:"2e645c08",9048:"3a629456",9226:"a14e26cc",9348:"d8a69e5e",9462:"be2eb63e",9520:"b59f6192",9647:"e4c313e0"}[e]+".js",c.miniCssF=e=>{},c.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),c.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},b="portal:",c.l=(e,a,d,r)=>{if(t[e])t[e].push(a);else{var f,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{f.onerror=f.onload=null,clearTimeout(s);var b=t[e];if(delete t[e],f.parentNode&&f.parentNode.removeChild(f),b&&b.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=l.bind(null,f.onerror),f.onload=l.bind(null,f.onload),o&&document.head.appendChild(f)}},c.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.p="/id/",c.gca=function(e){return e={10457226:"1250",17896441:"8401",38457006:"9348","64c21d08":"45","69989b7b":"393",e0366d15:"711",a7456010:"1235",b8d44c53:"1810","44f91cb9":"2151","613b129a":"2452","89cae76e":"2497",cd1624ee:"2503",a6ba7fa5:"2532",d8e6747e:"2675","0b759b5e":"2730",ba8805a2:"3092",b7c29e6a:"3232","0a65db6b":"3235","0bf987f8":"3259",e6b29543:"3807",c24d65a6:"3810","393be207":"4134","2ab06f75":"4162","43cbe75f":"4314","2a3d70e9":"4338","216956e0":"4461",c8e10704:"4467","1df93b7f":"4583",c425dcdb:"4804","3b430c31":"4860","7d6eb928":"5568",fdc3d773:"5578",aba21aa0:"5742",e0b6e7a2:"5777","210158f7":"5891","4eab46a1":"5991","96906e00":"6006","1f391b9e":"6061",fd2e18dd:"6365","40216abe":"6548","0178f34e":"6555","30cf7702":"6801","4fe4b767":"6826","14eb3368":"6969",a7bd4aaa:"7098",e23140d8:"7302","13351c1a":"7765",a2fd5790:"7931","5f25da5e":"8058",b8b9de6a:"8120",e7c27558:"8415","94f3b1d0":"8582","14ec1774":"8617","0c419a17":"8971",a94703ab:"9048",d6e1f821:"9226",ab78ac32:"9520","5e95c892":"9647"}[e]||e,c.p+c.u(e)},(()=>{var e={5354:0,1869:0};c.f.j=(a,d)=>{var t=c.o(e,a)?e[a]:void 0;if(0!==t)if(t)d.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var b=new Promise(((d,b)=>t=e[a]=[d,b]));d.push(t[2]=b);var r=c.p+c.u(a),f=new Error;c.l(r,(d=>{if(c.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var b=d&&("load"===d.type?"missing":d.type),r=d&&d.target&&d.target.src;f.message="Loading chunk "+a+" failed.\n("+b+": "+r+")",f.name="ChunkLoadError",f.type=b,f.request=r,t[1](f)}}),"chunk-"+a,a)}},c.O.j=a=>0===e[a];var a=(a,d)=>{var t,b,r=d[0],f=d[1],o=d[2],n=0;if(r.some((a=>0!==e[a]))){for(t in f)c.o(f,t)&&(c.m[t]=f[t]);if(o)var i=o(c)}for(a&&a(d);n - + diff --git a/id/develop/auto-sdk/auto-id/index.html b/id/develop/auto-sdk/auto-id/index.html index 9f430cc8c06..4a017a2a7ab 100644 --- a/id/develop/auto-sdk/auto-id/index.html +++ b/id/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/auto-sdk/consensus/index.html b/id/develop/auto-sdk/consensus/index.html index e8d68236043..2a08a2fec9a 100644 --- a/id/develop/auto-sdk/consensus/index.html +++ b/id/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/auto-sdk/drive/index.html b/id/develop/auto-sdk/drive/index.html index 5a6fa0ea01e..0051e23bde5 100644 --- a/id/develop/auto-sdk/drive/index.html +++ b/id/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/auto-sdk/index.html b/id/develop/auto-sdk/index.html index 3095f5690a8..ac9d4d2b3c8 100644 --- a/id/develop/auto-sdk/index.html +++ b/id/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/auto-sdk/intro/index.html b/id/develop/auto-sdk/intro/index.html index b911345e7f7..c6ca691645e 100644 --- a/id/develop/auto-sdk/intro/index.html +++ b/id/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/auto-sdk/utils/index.html b/id/develop/auto-sdk/utils/index.html index 87210074e46..3a4d1e623bc 100644 --- a/id/develop/auto-sdk/utils/index.html +++ b/id/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/auto-sdk/xdm/index.html b/id/develop/auto-sdk/xdm/index.html index a0973de91ef..ed733144372 100644 --- a/id/develop/auto-sdk/xdm/index.html +++ b/id/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/intro/index.html b/id/develop/intro/index.html index 3ad3d0bc455..6961155e509 100644 --- a/id/develop/intro/index.html +++ b/id/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/nova/block-explorer/index.html b/id/develop/nova/block-explorer/index.html index c67ebb5d266..638639c06ed 100644 --- a/id/develop/nova/block-explorer/index.html +++ b/id/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/nova/faucet/index.html b/id/develop/nova/faucet/index.html index 3a1223e5d6e..94348c43d2f 100644 --- a/id/develop/nova/faucet/index.html +++ b/id/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/nova/general/index.html b/id/develop/nova/general/index.html index 862f43643e7..acbccec8b12 100644 --- a/id/develop/nova/general/index.html +++ b/id/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/nova/guides/foundry/index.html b/id/develop/nova/guides/foundry/index.html index 35dd97c3c73..56ad882304c 100644 --- a/id/develop/nova/guides/foundry/index.html +++ b/id/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/nova/guides/hardhat/index.html b/id/develop/nova/guides/hardhat/index.html index ed85aad00ff..a85b0f023c1 100644 --- a/id/develop/nova/guides/hardhat/index.html +++ b/id/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/nova/guides/local-development/index.html b/id/develop/nova/guides/local-development/index.html index 27ba22b3595..adb82d4077f 100644 --- a/id/develop/nova/guides/local-development/index.html +++ b/id/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/nova/guides/remix/index.html b/id/develop/nova/guides/remix/index.html index 122809c9c01..fc706dd6d92 100644 --- a/id/develop/nova/guides/remix/index.html +++ b/id/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/nova/index.html b/id/develop/nova/index.html index 44df701f602..5cb94069ed6 100644 --- a/id/develop/nova/index.html +++ b/id/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/nova/introduction/index.html b/id/develop/nova/introduction/index.html index edc2206f8d1..ee01f147d8d 100644 --- a/id/develop/nova/introduction/index.html +++ b/id/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/develop/nova/metamask/index.html b/id/develop/nova/metamask/index.html index 6f9425608bb..1f4809180f7 100644 --- a/id/develop/nova/metamask/index.html +++ b/id/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/advanced-cli/cluster/index.html b/id/farming/advanced-cli/cluster/index.html index cae5c0e2225..e5563a0c089 100644 --- a/id/farming/advanced-cli/cluster/index.html +++ b/id/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/advanced-cli/install/index.html b/id/farming/advanced-cli/install/index.html index a50d49d7123..8ddf12d92f9 100644 --- a/id/farming/advanced-cli/install/index.html +++ b/id/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/advanced-cli/tips/index.html b/id/farming/advanced-cli/tips/index.html index a3866fcd20a..2173edcdaf1 100644 --- a/id/farming/advanced-cli/tips/index.html +++ b/id/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/common-problems/index.html b/id/farming/common-problems/index.html index 06bcfa5d247..3aebaaf0e6f 100644 --- a/id/farming/common-problems/index.html +++ b/id/farming/common-problems/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/guides/gpu-plotter/index.html b/id/farming/guides/gpu-plotter/index.html index 08016aa328a..bc29ddda5b8 100644 --- a/id/farming/guides/gpu-plotter/index.html +++ b/id/farming/guides/gpu-plotter/index.html @@ -12,14 +12,13 @@ - +

GPU Plotter

Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck.

Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed.

Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU.

-
Plot Format Compatibility

GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting.

Platform Compatibility

Platform🐧 Linux🪟 WindowsNvidiaAMDIntel
Advanced CLI🛠️🔮
Space Acres🔜🔮

🛠️ Limited AMD Support for Linux only is available in recent test builds. The most recent test builds are linked on the forum

See Discord farmer-chat channel for limited support.

@@ -59,8 +58,6 @@

C

Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): --cuda-gpus <gpu_ids>

--cuda-gpus 0,1,3

Farming Cluster

-

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

-

Known Issues

-

Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine.

+

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

\ No newline at end of file diff --git a/id/farming/guides/grafana-dashboard/index.html b/id/farming/guides/grafana-dashboard/index.html index f1f68da37fd..49a5ca75295 100644 --- a/id/farming/guides/grafana-dashboard/index.html +++ b/id/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/guides/index.html b/id/farming/guides/index.html index b9d2a5e4544..c62a530b6a6 100644 --- a/id/farming/guides/index.html +++ b/id/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/guides/port-config/index.html b/id/farming/guides/port-config/index.html index 3f40104b674..c96e3d09564 100644 --- a/id/farming/guides/port-config/index.html +++ b/id/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/guides/verified-farmer/index.html b/id/farming/guides/verified-farmer/index.html index 82b1cb37179..9bd92ff5624 100644 --- a/id/farming/guides/verified-farmer/index.html +++ b/id/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/intro/index.html b/id/farming/intro/index.html index 1c56a4e1527..6565b7d6eda 100644 --- a/id/farming/intro/index.html +++ b/id/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/space-acres/install/index.html b/id/farming/space-acres/install/index.html index 17dfb8e16be..ef1687262a6 100644 --- a/id/farming/space-acres/install/index.html +++ b/id/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/space-acres/translate/index.html b/id/farming/space-acres/translate/index.html index 0f616320f16..ad18483916c 100644 --- a/id/farming/space-acres/translate/index.html +++ b/id/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/farming/timekeeper/index.html b/id/farming/timekeeper/index.html index c8d210cb7d0..336dfb9734c 100644 --- a/id/farming/timekeeper/index.html +++ b/id/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/index.html b/id/index.html index 0acf727aa84..eb2cc7781f8 100644 --- a/id/index.html +++ b/id/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/learn/academy/index.html b/id/learn/academy/index.html index 77bce39e4e3..c96d2075448 100644 --- a/id/learn/academy/index.html +++ b/id/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/learn/intro/index.html b/id/learn/intro/index.html index 4fd71d94ab4..612970f5e1c 100644 --- a/id/learn/intro/index.html +++ b/id/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/learn/security/index.html b/id/learn/security/index.html index b65c47dc729..118e20487d2 100644 --- a/id/learn/security/index.html +++ b/id/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/markdown-page/index.html b/id/markdown-page/index.html index f6f58b04d48..d5f00d9d9db 100644 --- a/id/markdown-page/index.html +++ b/id/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/participate/community/resources/index.html b/id/participate/community/resources/index.html index 8dfafa8b54c..fa0e2c9f9c3 100644 --- a/id/participate/community/resources/index.html +++ b/id/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/participate/community/tools/index.html b/id/participate/community/tools/index.html index d3bb98d7473..d359c75ccd2 100644 --- a/id/participate/community/tools/index.html +++ b/id/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/participate/contribute/code-of-conduct/index.html b/id/participate/contribute/code-of-conduct/index.html index bd920e60947..ee53097f9b0 100644 --- a/id/participate/contribute/code-of-conduct/index.html +++ b/id/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/participate/contribute/intro/index.html b/id/participate/contribute/intro/index.html index 0432d6930a3..6a3a600d4d9 100644 --- a/id/participate/contribute/intro/index.html +++ b/id/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/participate/contribute/translate/index.html b/id/participate/contribute/translate/index.html index d90368cb4a9..9126bd8fd52 100644 --- a/id/participate/contribute/translate/index.html +++ b/id/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/staking/intro/index.html b/id/staking/intro/index.html index 9160c27716e..fa6f4a161b3 100644 --- a/id/staking/intro/index.html +++ b/id/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/staking/operator/deregister/index.html b/id/staking/operator/deregister/index.html index 69c1431f784..a7175b579b4 100644 --- a/id/staking/operator/deregister/index.html +++ b/id/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/staking/operator/register/index.html b/id/staking/operator/register/index.html index e654f0493cc..0c9a3dcd2e3 100644 --- a/id/staking/operator/register/index.html +++ b/id/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/staking/operator/tips/index.html b/id/staking/operator/tips/index.html index 58ee10e861f..33a951e45f5 100644 --- a/id/staking/operator/tips/index.html +++ b/id/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/staking/stake/index.html b/id/staking/stake/index.html index 4ce30be1bb5..9e8328eaf46 100644 --- a/id/staking/stake/index.html +++ b/id/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/wallets/polkadot/index.html b/id/wallets/polkadot/index.html index cf8e8b346d0..83ab2ccf3ae 100644 --- a/id/wallets/polkadot/index.html +++ b/id/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/id/wallets/subwallet/index.html b/id/wallets/subwallet/index.html index 8da195a7de8..47f84a4c798 100644 --- a/id/wallets/subwallet/index.html +++ b/id/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/index.html b/index.html index 7a6c10b0c36..3c01a1e8c65 100644 --- a/index.html +++ b/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/404.html b/it/404.html index d0367b57eff..2fdbbf7c497 100644 --- a/it/404.html +++ b/it/404.html @@ -12,7 +12,7 @@ - + diff --git a/it/assets/js/234d3c19.1c1d08ab.js b/it/assets/js/234d3c19.1c1d08ab.js deleted file mode 100644 index 72ea7907667..00000000000 --- a/it/assets/js/234d3c19.1c1d08ab.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[9754],{574:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const o={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},a=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/it/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/it/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/it/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/it/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2},{value:"Known Issues",id:"known-issues",level:2}];function h(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.admonition,{title:"Plot Format Compatibility",type:"info",children:(0,r.jsx)(t.p,{children:"GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting."})}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."}),"\n",(0,r.jsx)(t.h2,{id:"known-issues",children:"Known Issues"}),"\n",(0,r.jsx)(t.p,{children:"Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),o=n(205),a=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,a.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,a]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),f=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{f&&a(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);a(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:o}=e;const a=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=a.indexOf(t),s=o[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=a.indexOf(e.currentTarget)+1;t=a[n]??a[0];break}case"ArrowLeft":{const n=a.indexOf(e.currentTarget)-1;t=a[n]??a[a.length-1];break}}t?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:o.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>a.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(y,{...t,...e}),(0,j.jsx)(b,{...t,...e})]})}function w(e){const t=(0,g.A)();return(0,j.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>o});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/it/assets/js/234d3c19.7a231a96.js b/it/assets/js/234d3c19.7a231a96.js new file mode 100644 index 00000000000..578072346b1 --- /dev/null +++ b/it/assets/js/234d3c19.7a231a96.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[9754],{574:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const a={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},o=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/it/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/it/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/it/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/it/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2}];function h(e){const t={a:"a",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>A});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),a=n(205),o=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,o.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,o]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),j=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{j&&o(j)}),[j]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const j={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:a}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=o.indexOf(t),s=a[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=o.indexOf(e.currentTarget)+1;t=o[n]??o[0];break}case"ArrowLeft":{const n=o.indexOf(e.currentTarget)-1;t=o[n]??o[o.length-1];break}}t?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:a.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>o.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",j.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,f.jsxs)("div",{className:(0,s.A)("tabs-container",j.tabList),children:[(0,f.jsx)(y,{...t,...e}),(0,f.jsx)(b,{...t,...e})]})}function A(e){const t=(0,g.A)();return(0,f.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>a});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/it/assets/js/runtime~main.7afd7cd5.js b/it/assets/js/runtime~main.243e21ba.js similarity index 98% rename from it/assets/js/runtime~main.7afd7cd5.js rename to it/assets/js/runtime~main.243e21ba.js index 1bc072916ac..800160666e9 100644 --- a/it/assets/js/runtime~main.7afd7cd5.js +++ b/it/assets/js/runtime~main.243e21ba.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,b,d,f,t={},r={};function c(e){var a=r[e];if(void 0!==a)return a.exports;var b=r[e]={exports:{}};return t[e].call(b.exports,b,b.exports,c),b.exports}c.m=t,e=[],c.O=(a,b,d,f)=>{if(!b){var t=1/0;for(i=0;i=f)&&Object.keys(c.O).every((e=>c.O[e](b[o])))?b.splice(o--,1):(r=!1,f0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[b,d,f]},c.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return c.d(a,{a:a}),a},b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,c.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var f=Object.create(null);c.r(f);var t={};a=a||[null,b({}),b([]),b(b)];for(var r=2&d&&e;"object"==typeof r&&!~a.indexOf(r);r=b(r))Object.getOwnPropertyNames(r).forEach((a=>t[a]=()=>e[a]));return t.default=()=>e,c.d(f,t),f},c.d=(e,a)=>{for(var b in a)c.o(a,b)&&!c.o(e,b)&&Object.defineProperty(e,b,{enumerable:!0,get:a[b]})},c.f={},c.e=e=>Promise.all(Object.keys(c.f).reduce(((a,b)=>(c.f[b](e,a),a)),[])),c.u=e=>"assets/js/"+({40:"c1658a7d",58:"a698c97b",310:"f1268acf",801:"ea480abc",1235:"a7456010",1402:"115ccb1c",1431:"2cb6b924",1549:"a027ecc9",2298:"ef19a1b6",2303:"001e7717",2373:"1bbd2ea1",2377:"27f7b93d",2838:"89feb104",2856:"d4368912",2902:"06fa3bb5",3016:"25366074",3067:"119c1f90",3167:"06d8ecfd",3563:"672b0908",4118:"70693c2c",4134:"393be207",4197:"7685f262",4215:"84c2dc04",4467:"1e3a5ca5",4507:"526b0ec1",4530:"bfc05f1b",4583:"1df93b7f",4785:"2107e69d",5417:"ae062619",5726:"6fb2e8d2",5742:"aba21aa0",6016:"03ed1e67",6061:"1f391b9e",6269:"ef0db05f",6273:"811999e0",6403:"4374fe63",6633:"04900b25",6963:"d9e17709",6969:"14eb3368",7098:"a7bd4aaa",7441:"2d6fb433",7624:"9ef353dd",7802:"70a3eded",7932:"4eb2dbb6",8399:"0d0994aa",8401:"17896441",8539:"1f04ec67",8643:"302ef6e9",8782:"982dd16c",9048:"a94703ab",9345:"cef82af9",9411:"8453869e",9647:"5e95c892",9754:"234d3c19",9830:"0d0ee0cb",9833:"104327ed",9851:"8608984a",9892:"3e3bf04b"}[e]||e)+"."+{40:"ff33cd77",58:"2deea734",310:"8d291700",801:"a116f805",1235:"deb810c9",1402:"c64b1cd8",1431:"58223564",1549:"3e5ad92f",1688:"af0e6f17",2237:"c851d8b1",2298:"04c27df5",2303:"57751d10",2373:"7e80702e",2377:"30ebe9ec",2440:"ecd0621f",2838:"8f9ddb8c",2856:"253f6ee3",2902:"ffd5c6de",3016:"8a2a0104",3067:"00be3e7d",3167:"626586a7",3563:"c35c2b71",4118:"71ca2b84",4134:"055bcd0c",4197:"85f897ca",4215:"c386555b",4324:"fec3e18f",4467:"778a1ca8",4507:"1f356805",4530:"7fb4ed3a",4583:"c0d080f8",4785:"2f4df461",5049:"7f13b97c",5394:"83d77ce3",5417:"478bfd53",5726:"419d9f21",5742:"08d6695f",6016:"c1f3d6fc",6061:"fc18f174",6269:"54f91ced",6273:"67897ec0",6403:"2aec279d",6633:"81079b41",6688:"86f0bb7d",6963:"d3d1b9b4",6969:"4f11b87f",7098:"c4e87eeb",7441:"cd25b112",7624:"173854c5",7802:"2856084e",7932:"2e2c762d",8399:"80f83549",8401:"3769c7ca",8539:"d87b43a9",8643:"58606cd9",8782:"b69c1e68",8913:"0680f2c1",9048:"3a629456",9345:"8d2a4d1e",9411:"4269933c",9462:"be2eb63e",9647:"e4c313e0",9754:"1c1d08ab",9830:"c9938b4b",9833:"da61a2d5",9851:"de1b207b",9892:"f0a73437"}[e]+".js",c.miniCssF=e=>{},c.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),c.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},f="portal:",c.l=(e,a,b,t)=>{if(d[e])d[e].push(a);else{var r,o;if(void 0!==b)for(var n=document.getElementsByTagName("script"),i=0;i{r.onerror=r.onload=null,clearTimeout(s);var f=d[e];if(delete d[e],r.parentNode&&r.parentNode.removeChild(r),f&&f.forEach((e=>e(b))),a)return a(b)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=l.bind(null,r.onerror),r.onload=l.bind(null,r.onload),o&&document.head.appendChild(r)}},c.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.p="/it/",c.gca=function(e){return e={17896441:"8401",25366074:"3016",c1658a7d:"40",a698c97b:"58",f1268acf:"310",ea480abc:"801",a7456010:"1235","115ccb1c":"1402","2cb6b924":"1431",a027ecc9:"1549",ef19a1b6:"2298","001e7717":"2303","1bbd2ea1":"2373","27f7b93d":"2377","89feb104":"2838",d4368912:"2856","06fa3bb5":"2902","119c1f90":"3067","06d8ecfd":"3167","672b0908":"3563","70693c2c":"4118","393be207":"4134","7685f262":"4197","84c2dc04":"4215","1e3a5ca5":"4467","526b0ec1":"4507",bfc05f1b:"4530","1df93b7f":"4583","2107e69d":"4785",ae062619:"5417","6fb2e8d2":"5726",aba21aa0:"5742","03ed1e67":"6016","1f391b9e":"6061",ef0db05f:"6269","811999e0":"6273","4374fe63":"6403","04900b25":"6633",d9e17709:"6963","14eb3368":"6969",a7bd4aaa:"7098","2d6fb433":"7441","9ef353dd":"7624","70a3eded":"7802","4eb2dbb6":"7932","0d0994aa":"8399","1f04ec67":"8539","302ef6e9":"8643","982dd16c":"8782",a94703ab:"9048",cef82af9:"9345","8453869e":"9411","5e95c892":"9647","234d3c19":"9754","0d0ee0cb":"9830","104327ed":"9833","8608984a":"9851","3e3bf04b":"9892"}[e]||e,c.p+c.u(e)},(()=>{var e={5354:0,1869:0};c.f.j=(a,b)=>{var d=c.o(e,a)?e[a]:void 0;if(0!==d)if(d)b.push(d[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var f=new Promise(((b,f)=>d=e[a]=[b,f]));b.push(d[2]=f);var t=c.p+c.u(a),r=new Error;c.l(t,(b=>{if(c.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var f=b&&("load"===b.type?"missing":b.type),t=b&&b.target&&b.target.src;r.message="Loading chunk "+a+" failed.\n("+f+": "+t+")",r.name="ChunkLoadError",r.type=f,r.request=t,d[1](r)}}),"chunk-"+a,a)}},c.O.j=a=>0===e[a];var a=(a,b)=>{var d,f,t=b[0],r=b[1],o=b[2],n=0;if(t.some((a=>0!==e[a]))){for(d in r)c.o(r,d)&&(c.m[d]=r[d]);if(o)var i=o(c)}for(a&&a(b);n{"use strict";var e,a,b,d,f,t={},r={};function c(e){var a=r[e];if(void 0!==a)return a.exports;var b=r[e]={exports:{}};return t[e].call(b.exports,b,b.exports,c),b.exports}c.m=t,e=[],c.O=(a,b,d,f)=>{if(!b){var t=1/0;for(i=0;i=f)&&Object.keys(c.O).every((e=>c.O[e](b[o])))?b.splice(o--,1):(r=!1,f0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[b,d,f]},c.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return c.d(a,{a:a}),a},b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,c.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var f=Object.create(null);c.r(f);var t={};a=a||[null,b({}),b([]),b(b)];for(var r=2&d&&e;"object"==typeof r&&!~a.indexOf(r);r=b(r))Object.getOwnPropertyNames(r).forEach((a=>t[a]=()=>e[a]));return t.default=()=>e,c.d(f,t),f},c.d=(e,a)=>{for(var b in a)c.o(a,b)&&!c.o(e,b)&&Object.defineProperty(e,b,{enumerable:!0,get:a[b]})},c.f={},c.e=e=>Promise.all(Object.keys(c.f).reduce(((a,b)=>(c.f[b](e,a),a)),[])),c.u=e=>"assets/js/"+({40:"c1658a7d",58:"a698c97b",310:"f1268acf",801:"ea480abc",1235:"a7456010",1402:"115ccb1c",1431:"2cb6b924",1549:"a027ecc9",2298:"ef19a1b6",2303:"001e7717",2373:"1bbd2ea1",2377:"27f7b93d",2838:"89feb104",2856:"d4368912",2902:"06fa3bb5",3016:"25366074",3067:"119c1f90",3167:"06d8ecfd",3563:"672b0908",4118:"70693c2c",4134:"393be207",4197:"7685f262",4215:"84c2dc04",4467:"1e3a5ca5",4507:"526b0ec1",4530:"bfc05f1b",4583:"1df93b7f",4785:"2107e69d",5417:"ae062619",5726:"6fb2e8d2",5742:"aba21aa0",6016:"03ed1e67",6061:"1f391b9e",6269:"ef0db05f",6273:"811999e0",6403:"4374fe63",6633:"04900b25",6963:"d9e17709",6969:"14eb3368",7098:"a7bd4aaa",7441:"2d6fb433",7624:"9ef353dd",7802:"70a3eded",7932:"4eb2dbb6",8399:"0d0994aa",8401:"17896441",8539:"1f04ec67",8643:"302ef6e9",8782:"982dd16c",9048:"a94703ab",9345:"cef82af9",9411:"8453869e",9647:"5e95c892",9754:"234d3c19",9830:"0d0ee0cb",9833:"104327ed",9851:"8608984a",9892:"3e3bf04b"}[e]||e)+"."+{40:"ff33cd77",58:"2deea734",310:"8d291700",801:"a116f805",1235:"deb810c9",1402:"c64b1cd8",1431:"58223564",1549:"3e5ad92f",1688:"af0e6f17",2237:"c851d8b1",2298:"04c27df5",2303:"57751d10",2373:"7e80702e",2377:"30ebe9ec",2440:"ecd0621f",2838:"8f9ddb8c",2856:"253f6ee3",2902:"ffd5c6de",3016:"8a2a0104",3067:"00be3e7d",3167:"626586a7",3563:"c35c2b71",4118:"71ca2b84",4134:"055bcd0c",4197:"85f897ca",4215:"c386555b",4324:"fec3e18f",4467:"778a1ca8",4507:"1f356805",4530:"7fb4ed3a",4583:"c0d080f8",4785:"2f4df461",5049:"7f13b97c",5394:"83d77ce3",5417:"478bfd53",5726:"419d9f21",5742:"08d6695f",6016:"c1f3d6fc",6061:"fc18f174",6269:"54f91ced",6273:"67897ec0",6403:"2aec279d",6633:"81079b41",6688:"86f0bb7d",6963:"d3d1b9b4",6969:"4f11b87f",7098:"c4e87eeb",7441:"cd25b112",7624:"173854c5",7802:"2856084e",7932:"2e2c762d",8399:"80f83549",8401:"3769c7ca",8539:"d87b43a9",8643:"58606cd9",8782:"b69c1e68",8913:"0680f2c1",9048:"3a629456",9345:"8d2a4d1e",9411:"4269933c",9462:"be2eb63e",9647:"e4c313e0",9754:"7a231a96",9830:"c9938b4b",9833:"da61a2d5",9851:"de1b207b",9892:"f0a73437"}[e]+".js",c.miniCssF=e=>{},c.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),c.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},f="portal:",c.l=(e,a,b,t)=>{if(d[e])d[e].push(a);else{var r,o;if(void 0!==b)for(var n=document.getElementsByTagName("script"),i=0;i{r.onerror=r.onload=null,clearTimeout(s);var f=d[e];if(delete d[e],r.parentNode&&r.parentNode.removeChild(r),f&&f.forEach((e=>e(b))),a)return a(b)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=l.bind(null,r.onerror),r.onload=l.bind(null,r.onload),o&&document.head.appendChild(r)}},c.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.p="/it/",c.gca=function(e){return e={17896441:"8401",25366074:"3016",c1658a7d:"40",a698c97b:"58",f1268acf:"310",ea480abc:"801",a7456010:"1235","115ccb1c":"1402","2cb6b924":"1431",a027ecc9:"1549",ef19a1b6:"2298","001e7717":"2303","1bbd2ea1":"2373","27f7b93d":"2377","89feb104":"2838",d4368912:"2856","06fa3bb5":"2902","119c1f90":"3067","06d8ecfd":"3167","672b0908":"3563","70693c2c":"4118","393be207":"4134","7685f262":"4197","84c2dc04":"4215","1e3a5ca5":"4467","526b0ec1":"4507",bfc05f1b:"4530","1df93b7f":"4583","2107e69d":"4785",ae062619:"5417","6fb2e8d2":"5726",aba21aa0:"5742","03ed1e67":"6016","1f391b9e":"6061",ef0db05f:"6269","811999e0":"6273","4374fe63":"6403","04900b25":"6633",d9e17709:"6963","14eb3368":"6969",a7bd4aaa:"7098","2d6fb433":"7441","9ef353dd":"7624","70a3eded":"7802","4eb2dbb6":"7932","0d0994aa":"8399","1f04ec67":"8539","302ef6e9":"8643","982dd16c":"8782",a94703ab:"9048",cef82af9:"9345","8453869e":"9411","5e95c892":"9647","234d3c19":"9754","0d0ee0cb":"9830","104327ed":"9833","8608984a":"9851","3e3bf04b":"9892"}[e]||e,c.p+c.u(e)},(()=>{var e={5354:0,1869:0};c.f.j=(a,b)=>{var d=c.o(e,a)?e[a]:void 0;if(0!==d)if(d)b.push(d[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var f=new Promise(((b,f)=>d=e[a]=[b,f]));b.push(d[2]=f);var t=c.p+c.u(a),r=new Error;c.l(t,(b=>{if(c.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var f=b&&("load"===b.type?"missing":b.type),t=b&&b.target&&b.target.src;r.message="Loading chunk "+a+" failed.\n("+f+": "+t+")",r.name="ChunkLoadError",r.type=f,r.request=t,d[1](r)}}),"chunk-"+a,a)}},c.O.j=a=>0===e[a];var a=(a,b)=>{var d,f,t=b[0],r=b[1],o=b[2],n=0;if(t.some((a=>0!==e[a]))){for(d in r)c.o(r,d)&&(c.m[d]=r[d]);if(o)var i=o(c)}for(a&&a(b);n - + diff --git a/it/develop/auto-sdk/auto-id/index.html b/it/develop/auto-sdk/auto-id/index.html index 618b0249747..7c441ffeebe 100644 --- a/it/develop/auto-sdk/auto-id/index.html +++ b/it/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/auto-sdk/consensus/index.html b/it/develop/auto-sdk/consensus/index.html index 024b21f7ec4..fcd8c2ed96e 100644 --- a/it/develop/auto-sdk/consensus/index.html +++ b/it/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/auto-sdk/drive/index.html b/it/develop/auto-sdk/drive/index.html index 9f6b355a814..6e1f2cf2012 100644 --- a/it/develop/auto-sdk/drive/index.html +++ b/it/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/auto-sdk/index.html b/it/develop/auto-sdk/index.html index 3b67c203df1..36d2a729753 100644 --- a/it/develop/auto-sdk/index.html +++ b/it/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/auto-sdk/intro/index.html b/it/develop/auto-sdk/intro/index.html index 237bc0355ad..7bd52532f36 100644 --- a/it/develop/auto-sdk/intro/index.html +++ b/it/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/auto-sdk/utils/index.html b/it/develop/auto-sdk/utils/index.html index cb8b2d2dd54..d66105d82e7 100644 --- a/it/develop/auto-sdk/utils/index.html +++ b/it/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/auto-sdk/xdm/index.html b/it/develop/auto-sdk/xdm/index.html index 4c8a5ca322e..a55bc01586b 100644 --- a/it/develop/auto-sdk/xdm/index.html +++ b/it/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/intro/index.html b/it/develop/intro/index.html index 66d331d7b63..ad96b17e719 100644 --- a/it/develop/intro/index.html +++ b/it/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/nova/block-explorer/index.html b/it/develop/nova/block-explorer/index.html index 11ae1b162be..35924205e9f 100644 --- a/it/develop/nova/block-explorer/index.html +++ b/it/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/nova/faucet/index.html b/it/develop/nova/faucet/index.html index b4985e947ca..c84b66310c5 100644 --- a/it/develop/nova/faucet/index.html +++ b/it/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/nova/general/index.html b/it/develop/nova/general/index.html index c1a2acb1b9c..e88a33977f6 100644 --- a/it/develop/nova/general/index.html +++ b/it/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/nova/guides/foundry/index.html b/it/develop/nova/guides/foundry/index.html index 55d2cda1fee..8068b4a3e52 100644 --- a/it/develop/nova/guides/foundry/index.html +++ b/it/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/nova/guides/hardhat/index.html b/it/develop/nova/guides/hardhat/index.html index 6093ee67e6e..f12d3ce42c5 100644 --- a/it/develop/nova/guides/hardhat/index.html +++ b/it/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/nova/guides/local-development/index.html b/it/develop/nova/guides/local-development/index.html index 34d1760cb69..f3dc36632ee 100644 --- a/it/develop/nova/guides/local-development/index.html +++ b/it/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/nova/guides/remix/index.html b/it/develop/nova/guides/remix/index.html index 052e73b6245..fbaa303e14c 100644 --- a/it/develop/nova/guides/remix/index.html +++ b/it/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/nova/index.html b/it/develop/nova/index.html index da2077fcc6f..d4c7ac80d9b 100644 --- a/it/develop/nova/index.html +++ b/it/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/nova/introduction/index.html b/it/develop/nova/introduction/index.html index 2487b4585e5..cd3f0d8dfcf 100644 --- a/it/develop/nova/introduction/index.html +++ b/it/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/develop/nova/metamask/index.html b/it/develop/nova/metamask/index.html index 81c525560bb..1ce0eb97859 100644 --- a/it/develop/nova/metamask/index.html +++ b/it/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/advanced-cli/cluster/index.html b/it/farming/advanced-cli/cluster/index.html index 4fe10ed4510..7580172e21a 100644 --- a/it/farming/advanced-cli/cluster/index.html +++ b/it/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/advanced-cli/install/index.html b/it/farming/advanced-cli/install/index.html index c00584c1278..a0246e377c4 100644 --- a/it/farming/advanced-cli/install/index.html +++ b/it/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/advanced-cli/tips/index.html b/it/farming/advanced-cli/tips/index.html index ea75f7c67a8..10e9edb4289 100644 --- a/it/farming/advanced-cli/tips/index.html +++ b/it/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/common-problems/index.html b/it/farming/common-problems/index.html index 6861f1c750d..a7b78918fb4 100644 --- a/it/farming/common-problems/index.html +++ b/it/farming/common-problems/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/guides/gpu-plotter/index.html b/it/farming/guides/gpu-plotter/index.html index 12d64038963..68efc622f69 100644 --- a/it/farming/guides/gpu-plotter/index.html +++ b/it/farming/guides/gpu-plotter/index.html @@ -12,14 +12,13 @@ - +

GPU Plotter

Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck.

Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed.

Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU.

-
Plot Format Compatibility

GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting.

Platform Compatibility

Platform🐧 Linux🪟 WindowsNvidiaAMDIntel
Advanced CLI🛠️🔮
Space Acres🔜🔮

🛠️ Limited AMD Support for Linux only is available in recent test builds. The most recent test builds are linked on the forum

See Discord farmer-chat channel for limited support.

@@ -59,8 +58,6 @@

C

Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): --cuda-gpus <gpu_ids>

--cuda-gpus 0,1,3

Farming Cluster

-

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

-

Known Issues

-

Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine.

+

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

\ No newline at end of file diff --git a/it/farming/guides/grafana-dashboard/index.html b/it/farming/guides/grafana-dashboard/index.html index a033ef72d6c..873e0bc224b 100644 --- a/it/farming/guides/grafana-dashboard/index.html +++ b/it/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/guides/index.html b/it/farming/guides/index.html index d8309be0c16..e5160a2135a 100644 --- a/it/farming/guides/index.html +++ b/it/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/guides/port-config/index.html b/it/farming/guides/port-config/index.html index 3625ae1b2c9..fc7c769302d 100644 --- a/it/farming/guides/port-config/index.html +++ b/it/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/guides/verified-farmer/index.html b/it/farming/guides/verified-farmer/index.html index f3b6424d43f..184f18c575f 100644 --- a/it/farming/guides/verified-farmer/index.html +++ b/it/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/intro/index.html b/it/farming/intro/index.html index 5c27a89a3b0..cba7b34c667 100644 --- a/it/farming/intro/index.html +++ b/it/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/space-acres/install/index.html b/it/farming/space-acres/install/index.html index 4f5c3ff1e49..24155960497 100644 --- a/it/farming/space-acres/install/index.html +++ b/it/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/space-acres/translate/index.html b/it/farming/space-acres/translate/index.html index d300ebcb26e..a19a023a192 100644 --- a/it/farming/space-acres/translate/index.html +++ b/it/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/farming/timekeeper/index.html b/it/farming/timekeeper/index.html index c62c47f682e..f83d8fbcf71 100644 --- a/it/farming/timekeeper/index.html +++ b/it/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/index.html b/it/index.html index f28a8ead8de..6f6c5591612 100644 --- a/it/index.html +++ b/it/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/learn/academy/index.html b/it/learn/academy/index.html index 661b47dd65b..30c61cfe8c5 100644 --- a/it/learn/academy/index.html +++ b/it/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/learn/intro/index.html b/it/learn/intro/index.html index ca40754a822..8b3afb0f787 100644 --- a/it/learn/intro/index.html +++ b/it/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/learn/security/index.html b/it/learn/security/index.html index 6db62713286..5387f750b51 100644 --- a/it/learn/security/index.html +++ b/it/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/markdown-page/index.html b/it/markdown-page/index.html index c5f12b2890b..ab620142694 100644 --- a/it/markdown-page/index.html +++ b/it/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/participate/community/resources/index.html b/it/participate/community/resources/index.html index a65c1b15288..c11694c3a4d 100644 --- a/it/participate/community/resources/index.html +++ b/it/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/participate/community/tools/index.html b/it/participate/community/tools/index.html index 42beaef766f..783f820aa6e 100644 --- a/it/participate/community/tools/index.html +++ b/it/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/participate/contribute/code-of-conduct/index.html b/it/participate/contribute/code-of-conduct/index.html index eb15d1bfabf..21b2ae2fe8a 100644 --- a/it/participate/contribute/code-of-conduct/index.html +++ b/it/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/participate/contribute/intro/index.html b/it/participate/contribute/intro/index.html index e37ed3871ad..c178c6ce9e6 100644 --- a/it/participate/contribute/intro/index.html +++ b/it/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/participate/contribute/translate/index.html b/it/participate/contribute/translate/index.html index 7a8c4aab73e..6c4f1f7548c 100644 --- a/it/participate/contribute/translate/index.html +++ b/it/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/staking/intro/index.html b/it/staking/intro/index.html index 0335fb731d6..4774d7ec589 100644 --- a/it/staking/intro/index.html +++ b/it/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/staking/operator/deregister/index.html b/it/staking/operator/deregister/index.html index 453c17bfdff..dd94241caa0 100644 --- a/it/staking/operator/deregister/index.html +++ b/it/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/staking/operator/register/index.html b/it/staking/operator/register/index.html index efb925235a9..969028c2ece 100644 --- a/it/staking/operator/register/index.html +++ b/it/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/staking/operator/tips/index.html b/it/staking/operator/tips/index.html index 77f6ac2f6e9..670a530a2f6 100644 --- a/it/staking/operator/tips/index.html +++ b/it/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/staking/stake/index.html b/it/staking/stake/index.html index a19e1e65df0..9e8cb6b1a06 100644 --- a/it/staking/stake/index.html +++ b/it/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/wallets/polkadot/index.html b/it/wallets/polkadot/index.html index 2ae899324bf..a9530d02b53 100644 --- a/it/wallets/polkadot/index.html +++ b/it/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/it/wallets/subwallet/index.html b/it/wallets/subwallet/index.html index fec60c9f4c0..c6e90b79f67 100644 --- a/it/wallets/subwallet/index.html +++ b/it/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/404.html b/ja/404.html index d25a155fd3a..35c8fab8c01 100644 --- a/ja/404.html +++ b/ja/404.html @@ -12,7 +12,7 @@ - + diff --git a/ja/assets/js/1a2f47b7.4cc1498a.js b/ja/assets/js/1a2f47b7.4cc1498a.js deleted file mode 100644 index 85360da3fdb..00000000000 --- a/ja/assets/js/1a2f47b7.4cc1498a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[4859],{6453:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const o={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},a=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/ja/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/ja/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/ja/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2},{value:"Known Issues",id:"known-issues",level:2}];function h(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.admonition,{title:"Plot Format Compatibility",type:"info",children:(0,r.jsx)(t.p,{children:"GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting."})}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."}),"\n",(0,r.jsx)(t.h2,{id:"known-issues",children:"Known Issues"}),"\n",(0,r.jsx)(t.p,{children:"Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),o=n(205),a=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,a.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,a]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),j=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{j&&a(j)}),[j]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);a(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const j={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:o}=e;const a=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=a.indexOf(t),s=o[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=a.indexOf(e.currentTarget)+1;t=a[n]??a[0];break}case"ArrowLeft":{const n=a.indexOf(e.currentTarget)-1;t=a[n]??a[a.length-1];break}}t?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:o.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>a.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",j.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,f.jsxs)("div",{className:(0,s.A)("tabs-container",j.tabList),children:[(0,f.jsx)(y,{...t,...e}),(0,f.jsx)(b,{...t,...e})]})}function w(e){const t=(0,g.A)();return(0,f.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>o});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/ja/assets/js/1a2f47b7.5c49da20.js b/ja/assets/js/1a2f47b7.5c49da20.js new file mode 100644 index 00000000000..15523a40b57 --- /dev/null +++ b/ja/assets/js/1a2f47b7.5c49da20.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[4859],{6453:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const a={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},o=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/ja/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/ja/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/ja/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2}];function h(e){const t={a:"a",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>A});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),a=n(205),o=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,o.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,o]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),j=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{j&&o(j)}),[j]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const j={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:a}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=o.indexOf(t),s=a[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=o.indexOf(e.currentTarget)+1;t=o[n]??o[0];break}case"ArrowLeft":{const n=o.indexOf(e.currentTarget)-1;t=o[n]??o[o.length-1];break}}t?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:a.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>o.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",j.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,f.jsxs)("div",{className:(0,s.A)("tabs-container",j.tabList),children:[(0,f.jsx)(y,{...t,...e}),(0,f.jsx)(b,{...t,...e})]})}function A(e){const t=(0,g.A)();return(0,f.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>a});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/ja/assets/js/runtime~main.4b20d67f.js b/ja/assets/js/runtime~main.ac6017b2.js similarity index 98% rename from ja/assets/js/runtime~main.4b20d67f.js rename to ja/assets/js/runtime~main.ac6017b2.js index 091114d6fed..464673c556f 100644 --- a/ja/assets/js/runtime~main.4b20d67f.js +++ b/ja/assets/js/runtime~main.ac6017b2.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,d,f,t,r={},b={};function c(e){var a=b[e];if(void 0!==a)return a.exports;var d=b[e]={exports:{}};return r[e].call(d.exports,d,d.exports,c),d.exports}c.m=r,e=[],c.O=(a,d,f,t)=>{if(!d){var r=1/0;for(i=0;i=t)&&Object.keys(c.O).every((e=>c.O[e](d[o])))?d.splice(o--,1):(b=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[d,f,t]},c.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return c.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,c.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var t=Object.create(null);c.r(t);var r={};a=a||[null,d({}),d([]),d(d)];for(var b=2&f&&e;"object"==typeof b&&!~a.indexOf(b);b=d(b))Object.getOwnPropertyNames(b).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,c.d(t,r),t},c.d=(e,a)=>{for(var d in a)c.o(a,d)&&!c.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},c.f={},c.e=e=>Promise.all(Object.keys(c.f).reduce(((a,d)=>(c.f[d](e,a),a)),[])),c.u=e=>"assets/js/"+({275:"0bba6ca7",1039:"bc69aaa7",1198:"2e948be8",1235:"a7456010",1429:"f58a6a07",1591:"fdb6ad41",1728:"fa198208",2040:"99721135",2110:"4d213d36",2336:"0298f259",2397:"6c9dac31",2465:"502b192a",2511:"dbf01c2b",2540:"2bb19d25",2806:"5e769384",3133:"515e4a07",3343:"4ebe817f",3885:"e122e195",3915:"a2370e6d",4048:"e9d3c9a5",4072:"51239083",4134:"393be207",4159:"de3f38ed",4223:"fb012c88",4583:"1df93b7f",4613:"39cdd3e3",4675:"822000d0",4749:"9057879e",4835:"e185667f",4859:"1a2f47b7",4965:"435b5230",5062:"e3266403",5190:"52e88af4",5585:"9745df56",5742:"aba21aa0",5898:"ab684fff",5902:"ee59f65f",6061:"1f391b9e",6692:"817d17e4",6969:"14eb3368",7098:"a7bd4aaa",7181:"c14112cc",7515:"14a5a6ec",7898:"e03da008",8125:"3d4815c4",8217:"7c4cb041",8240:"bd3b5e8d",8303:"7b97c9c6",8401:"17896441",8466:"3a48dd49",8505:"c4b86b81",8808:"62cb37f0",8972:"a726fef2",8989:"40d95585",9048:"a94703ab",9647:"5e95c892",9678:"3ae15989",9833:"d0ce2ade"}[e]||e)+"."+{275:"7ef29c5c",1039:"fa0cb3fe",1198:"2a182474",1235:"deb810c9",1429:"3e3bdca4",1591:"934af25c",1688:"af0e6f17",1728:"22a840d5",2040:"0b86edbc",2110:"006ad5fa",2237:"c851d8b1",2336:"95396786",2397:"8dbd994a",2440:"ecd0621f",2465:"c4c8f414",2511:"a5b9b9b7",2540:"df36e863",2806:"cf1c0721",3133:"cac7fd02",3343:"3e06f69b",3885:"f8692cc6",3915:"7705cb48",4048:"ffb09175",4072:"aa3110d7",4134:"f1ca457b",4159:"9160f7fd",4223:"48eb7bcf",4324:"fec3e18f",4583:"c0d080f8",4613:"99c7bac8",4675:"6300591c",4749:"09e014a7",4835:"b20dea00",4859:"4cc1498a",4965:"16edae2c",5049:"7f13b97c",5062:"90c518f1",5190:"3e66fe53",5394:"83d77ce3",5585:"050315ab",5742:"08d6695f",5898:"01df80aa",5902:"cad88d6d",6061:"fc18f174",6688:"86f0bb7d",6692:"a24df471",6969:"4f11b87f",7098:"c4e87eeb",7181:"74c042b1",7515:"19f66ccc",7898:"d2e20bf6",8125:"0d69c2dd",8217:"6645b1f7",8240:"f554b2df",8303:"36a9b120",8401:"3769c7ca",8466:"17c403b2",8505:"f0c0b099",8808:"81da89fe",8913:"0680f2c1",8972:"dfce805f",8989:"86a9f53e",9048:"3a629456",9462:"be2eb63e",9647:"e4c313e0",9678:"69226566",9833:"7d35128c"}[e]+".js",c.miniCssF=e=>{},c.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),c.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},t="portal:",c.l=(e,a,d,r)=>{if(f[e])f[e].push(a);else{var b,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{b.onerror=b.onload=null,clearTimeout(s);var t=f[e];if(delete f[e],b.parentNode&&b.parentNode.removeChild(b),t&&t.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:b}),12e4);b.onerror=l.bind(null,b.onerror),b.onload=l.bind(null,b.onload),o&&document.head.appendChild(b)}},c.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.p="/ja/",c.gca=function(e){return e={17896441:"8401",51239083:"4072",99721135:"2040","0bba6ca7":"275",bc69aaa7:"1039","2e948be8":"1198",a7456010:"1235",f58a6a07:"1429",fdb6ad41:"1591",fa198208:"1728","4d213d36":"2110","0298f259":"2336","6c9dac31":"2397","502b192a":"2465",dbf01c2b:"2511","2bb19d25":"2540","5e769384":"2806","515e4a07":"3133","4ebe817f":"3343",e122e195:"3885",a2370e6d:"3915",e9d3c9a5:"4048","393be207":"4134",de3f38ed:"4159",fb012c88:"4223","1df93b7f":"4583","39cdd3e3":"4613","822000d0":"4675","9057879e":"4749",e185667f:"4835","1a2f47b7":"4859","435b5230":"4965",e3266403:"5062","52e88af4":"5190","9745df56":"5585",aba21aa0:"5742",ab684fff:"5898",ee59f65f:"5902","1f391b9e":"6061","817d17e4":"6692","14eb3368":"6969",a7bd4aaa:"7098",c14112cc:"7181","14a5a6ec":"7515",e03da008:"7898","3d4815c4":"8125","7c4cb041":"8217",bd3b5e8d:"8240","7b97c9c6":"8303","3a48dd49":"8466",c4b86b81:"8505","62cb37f0":"8808",a726fef2:"8972","40d95585":"8989",a94703ab:"9048","5e95c892":"9647","3ae15989":"9678",d0ce2ade:"9833"}[e]||e,c.p+c.u(e)},(()=>{var e={5354:0,1869:0};c.f.j=(a,d)=>{var f=c.o(e,a)?e[a]:void 0;if(0!==f)if(f)d.push(f[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((d,t)=>f=e[a]=[d,t]));d.push(f[2]=t);var r=c.p+c.u(a),b=new Error;c.l(r,(d=>{if(c.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var t=d&&("load"===d.type?"missing":d.type),r=d&&d.target&&d.target.src;b.message="Loading chunk "+a+" failed.\n("+t+": "+r+")",b.name="ChunkLoadError",b.type=t,b.request=r,f[1](b)}}),"chunk-"+a,a)}},c.O.j=a=>0===e[a];var a=(a,d)=>{var f,t,r=d[0],b=d[1],o=d[2],n=0;if(r.some((a=>0!==e[a]))){for(f in b)c.o(b,f)&&(c.m[f]=b[f]);if(o)var i=o(c)}for(a&&a(d);n{"use strict";var e,a,d,f,t,r={},b={};function c(e){var a=b[e];if(void 0!==a)return a.exports;var d=b[e]={exports:{}};return r[e].call(d.exports,d,d.exports,c),d.exports}c.m=r,e=[],c.O=(a,d,f,t)=>{if(!d){var r=1/0;for(i=0;i=t)&&Object.keys(c.O).every((e=>c.O[e](d[o])))?d.splice(o--,1):(b=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[d,f,t]},c.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return c.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,c.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var t=Object.create(null);c.r(t);var r={};a=a||[null,d({}),d([]),d(d)];for(var b=2&f&&e;"object"==typeof b&&!~a.indexOf(b);b=d(b))Object.getOwnPropertyNames(b).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,c.d(t,r),t},c.d=(e,a)=>{for(var d in a)c.o(a,d)&&!c.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},c.f={},c.e=e=>Promise.all(Object.keys(c.f).reduce(((a,d)=>(c.f[d](e,a),a)),[])),c.u=e=>"assets/js/"+({275:"0bba6ca7",1039:"bc69aaa7",1198:"2e948be8",1235:"a7456010",1429:"f58a6a07",1591:"fdb6ad41",1728:"fa198208",2040:"99721135",2110:"4d213d36",2336:"0298f259",2397:"6c9dac31",2465:"502b192a",2511:"dbf01c2b",2540:"2bb19d25",2806:"5e769384",3133:"515e4a07",3343:"4ebe817f",3885:"e122e195",3915:"a2370e6d",4048:"e9d3c9a5",4072:"51239083",4134:"393be207",4159:"de3f38ed",4223:"fb012c88",4583:"1df93b7f",4613:"39cdd3e3",4675:"822000d0",4749:"9057879e",4835:"e185667f",4859:"1a2f47b7",4965:"435b5230",5062:"e3266403",5190:"52e88af4",5585:"9745df56",5742:"aba21aa0",5898:"ab684fff",5902:"ee59f65f",6061:"1f391b9e",6692:"817d17e4",6969:"14eb3368",7098:"a7bd4aaa",7181:"c14112cc",7515:"14a5a6ec",7898:"e03da008",8125:"3d4815c4",8217:"7c4cb041",8240:"bd3b5e8d",8303:"7b97c9c6",8401:"17896441",8466:"3a48dd49",8505:"c4b86b81",8808:"62cb37f0",8972:"a726fef2",8989:"40d95585",9048:"a94703ab",9647:"5e95c892",9678:"3ae15989",9833:"d0ce2ade"}[e]||e)+"."+{275:"7ef29c5c",1039:"fa0cb3fe",1198:"2a182474",1235:"deb810c9",1429:"3e3bdca4",1591:"934af25c",1688:"af0e6f17",1728:"22a840d5",2040:"0b86edbc",2110:"006ad5fa",2237:"c851d8b1",2336:"95396786",2397:"8dbd994a",2440:"ecd0621f",2465:"c4c8f414",2511:"a5b9b9b7",2540:"df36e863",2806:"cf1c0721",3133:"cac7fd02",3343:"3e06f69b",3885:"f8692cc6",3915:"7705cb48",4048:"ffb09175",4072:"aa3110d7",4134:"f1ca457b",4159:"9160f7fd",4223:"48eb7bcf",4324:"fec3e18f",4583:"c0d080f8",4613:"99c7bac8",4675:"6300591c",4749:"09e014a7",4835:"b20dea00",4859:"5c49da20",4965:"16edae2c",5049:"7f13b97c",5062:"90c518f1",5190:"3e66fe53",5394:"83d77ce3",5585:"050315ab",5742:"08d6695f",5898:"01df80aa",5902:"cad88d6d",6061:"fc18f174",6688:"86f0bb7d",6692:"a24df471",6969:"4f11b87f",7098:"c4e87eeb",7181:"74c042b1",7515:"19f66ccc",7898:"d2e20bf6",8125:"0d69c2dd",8217:"6645b1f7",8240:"f554b2df",8303:"36a9b120",8401:"3769c7ca",8466:"17c403b2",8505:"f0c0b099",8808:"81da89fe",8913:"0680f2c1",8972:"dfce805f",8989:"86a9f53e",9048:"3a629456",9462:"be2eb63e",9647:"e4c313e0",9678:"69226566",9833:"7d35128c"}[e]+".js",c.miniCssF=e=>{},c.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),c.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},t="portal:",c.l=(e,a,d,r)=>{if(f[e])f[e].push(a);else{var b,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{b.onerror=b.onload=null,clearTimeout(s);var t=f[e];if(delete f[e],b.parentNode&&b.parentNode.removeChild(b),t&&t.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:b}),12e4);b.onerror=l.bind(null,b.onerror),b.onload=l.bind(null,b.onload),o&&document.head.appendChild(b)}},c.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.p="/ja/",c.gca=function(e){return e={17896441:"8401",51239083:"4072",99721135:"2040","0bba6ca7":"275",bc69aaa7:"1039","2e948be8":"1198",a7456010:"1235",f58a6a07:"1429",fdb6ad41:"1591",fa198208:"1728","4d213d36":"2110","0298f259":"2336","6c9dac31":"2397","502b192a":"2465",dbf01c2b:"2511","2bb19d25":"2540","5e769384":"2806","515e4a07":"3133","4ebe817f":"3343",e122e195:"3885",a2370e6d:"3915",e9d3c9a5:"4048","393be207":"4134",de3f38ed:"4159",fb012c88:"4223","1df93b7f":"4583","39cdd3e3":"4613","822000d0":"4675","9057879e":"4749",e185667f:"4835","1a2f47b7":"4859","435b5230":"4965",e3266403:"5062","52e88af4":"5190","9745df56":"5585",aba21aa0:"5742",ab684fff:"5898",ee59f65f:"5902","1f391b9e":"6061","817d17e4":"6692","14eb3368":"6969",a7bd4aaa:"7098",c14112cc:"7181","14a5a6ec":"7515",e03da008:"7898","3d4815c4":"8125","7c4cb041":"8217",bd3b5e8d:"8240","7b97c9c6":"8303","3a48dd49":"8466",c4b86b81:"8505","62cb37f0":"8808",a726fef2:"8972","40d95585":"8989",a94703ab:"9048","5e95c892":"9647","3ae15989":"9678",d0ce2ade:"9833"}[e]||e,c.p+c.u(e)},(()=>{var e={5354:0,1869:0};c.f.j=(a,d)=>{var f=c.o(e,a)?e[a]:void 0;if(0!==f)if(f)d.push(f[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((d,t)=>f=e[a]=[d,t]));d.push(f[2]=t);var r=c.p+c.u(a),b=new Error;c.l(r,(d=>{if(c.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var t=d&&("load"===d.type?"missing":d.type),r=d&&d.target&&d.target.src;b.message="Loading chunk "+a+" failed.\n("+t+": "+r+")",b.name="ChunkLoadError",b.type=t,b.request=r,f[1](b)}}),"chunk-"+a,a)}},c.O.j=a=>0===e[a];var a=(a,d)=>{var f,t,r=d[0],b=d[1],o=d[2],n=0;if(r.some((a=>0!==e[a]))){for(f in b)c.o(b,f)&&(c.m[f]=b[f]);if(o)var i=o(c)}for(a&&a(d);n - + diff --git a/ja/develop/auto-sdk/auto-id/index.html b/ja/develop/auto-sdk/auto-id/index.html index 2c9de6b8ae1..d97729481e8 100644 --- a/ja/develop/auto-sdk/auto-id/index.html +++ b/ja/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/auto-sdk/consensus/index.html b/ja/develop/auto-sdk/consensus/index.html index d91b176d236..3ade9d0684f 100644 --- a/ja/develop/auto-sdk/consensus/index.html +++ b/ja/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/auto-sdk/drive/index.html b/ja/develop/auto-sdk/drive/index.html index 039f1915bb1..98adb505d61 100644 --- a/ja/develop/auto-sdk/drive/index.html +++ b/ja/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/auto-sdk/index.html b/ja/develop/auto-sdk/index.html index 7d89be56201..e9c4b54c457 100644 --- a/ja/develop/auto-sdk/index.html +++ b/ja/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/auto-sdk/intro/index.html b/ja/develop/auto-sdk/intro/index.html index 435007b06c4..f220bacad0f 100644 --- a/ja/develop/auto-sdk/intro/index.html +++ b/ja/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/auto-sdk/utils/index.html b/ja/develop/auto-sdk/utils/index.html index 69f386fda73..4de30401a34 100644 --- a/ja/develop/auto-sdk/utils/index.html +++ b/ja/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/auto-sdk/xdm/index.html b/ja/develop/auto-sdk/xdm/index.html index 58b63ec2d87..ea7f6a6f3cc 100644 --- a/ja/develop/auto-sdk/xdm/index.html +++ b/ja/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/intro/index.html b/ja/develop/intro/index.html index c8d4a370c70..377d35260b3 100644 --- a/ja/develop/intro/index.html +++ b/ja/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/nova/block-explorer/index.html b/ja/develop/nova/block-explorer/index.html index 9fc43fc4212..36560901c1c 100644 --- a/ja/develop/nova/block-explorer/index.html +++ b/ja/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/nova/faucet/index.html b/ja/develop/nova/faucet/index.html index 5163169c8d3..1d120a2b1af 100644 --- a/ja/develop/nova/faucet/index.html +++ b/ja/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/nova/general/index.html b/ja/develop/nova/general/index.html index 8c48b67a535..51b54f934b9 100644 --- a/ja/develop/nova/general/index.html +++ b/ja/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/nova/guides/foundry/index.html b/ja/develop/nova/guides/foundry/index.html index 189ed07ddf3..e4dd295409e 100644 --- a/ja/develop/nova/guides/foundry/index.html +++ b/ja/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/nova/guides/hardhat/index.html b/ja/develop/nova/guides/hardhat/index.html index 19dadeff237..d4ad1cd5130 100644 --- a/ja/develop/nova/guides/hardhat/index.html +++ b/ja/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/nova/guides/local-development/index.html b/ja/develop/nova/guides/local-development/index.html index 910769b4f24..e919d8f35a4 100644 --- a/ja/develop/nova/guides/local-development/index.html +++ b/ja/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/nova/guides/remix/index.html b/ja/develop/nova/guides/remix/index.html index 0f4031f7624..5293e9b8dc1 100644 --- a/ja/develop/nova/guides/remix/index.html +++ b/ja/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/nova/index.html b/ja/develop/nova/index.html index 9dddecfcfb6..793497fcaa1 100644 --- a/ja/develop/nova/index.html +++ b/ja/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/nova/introduction/index.html b/ja/develop/nova/introduction/index.html index 9454ce7cc0a..3282b387852 100644 --- a/ja/develop/nova/introduction/index.html +++ b/ja/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/develop/nova/metamask/index.html b/ja/develop/nova/metamask/index.html index 71e0b83c119..ebf7aec2f44 100644 --- a/ja/develop/nova/metamask/index.html +++ b/ja/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/advanced-cli/cluster/index.html b/ja/farming/advanced-cli/cluster/index.html index dbbccf1ca77..9adff56f68c 100644 --- a/ja/farming/advanced-cli/cluster/index.html +++ b/ja/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/advanced-cli/install/index.html b/ja/farming/advanced-cli/install/index.html index 244c0a77ca5..082ff848af1 100644 --- a/ja/farming/advanced-cli/install/index.html +++ b/ja/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/advanced-cli/tips/index.html b/ja/farming/advanced-cli/tips/index.html index 8497ff1d6e4..f64ec38e392 100644 --- a/ja/farming/advanced-cli/tips/index.html +++ b/ja/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/common-problems/index.html b/ja/farming/common-problems/index.html index b1b6f774561..efe3ee42d25 100644 --- a/ja/farming/common-problems/index.html +++ b/ja/farming/common-problems/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/guides/gpu-plotter/index.html b/ja/farming/guides/gpu-plotter/index.html index 0a4bdc4e8f4..8aa1f02c3c6 100644 --- a/ja/farming/guides/gpu-plotter/index.html +++ b/ja/farming/guides/gpu-plotter/index.html @@ -12,14 +12,13 @@ - +

GPU Plotter

Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck.

Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed.

Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU.

-
Plot Format Compatibility

GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting.

Platform Compatibility

Platform🐧 Linux🪟 WindowsNvidiaAMDIntel
Advanced CLI🛠️🔮
Space Acres🔜🔮

🛠️ Limited AMD Support for Linux only is available in recent test builds. The most recent test builds are linked on the forum

See Discord farmer-chat channel for limited support.

@@ -59,8 +58,6 @@

C

Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): --cuda-gpus <gpu_ids>

--cuda-gpus 0,1,3

Farming Cluster

-

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

-

Known Issues

-

Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine.

+

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

\ No newline at end of file diff --git a/ja/farming/guides/grafana-dashboard/index.html b/ja/farming/guides/grafana-dashboard/index.html index 15a383689c5..a4386dc8b47 100644 --- a/ja/farming/guides/grafana-dashboard/index.html +++ b/ja/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/guides/index.html b/ja/farming/guides/index.html index 028baab5c17..796880579cc 100644 --- a/ja/farming/guides/index.html +++ b/ja/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/guides/port-config/index.html b/ja/farming/guides/port-config/index.html index 49f2c542ef5..70286467470 100644 --- a/ja/farming/guides/port-config/index.html +++ b/ja/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/guides/verified-farmer/index.html b/ja/farming/guides/verified-farmer/index.html index 505bdb2753d..7cfd3f0e9da 100644 --- a/ja/farming/guides/verified-farmer/index.html +++ b/ja/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/intro/index.html b/ja/farming/intro/index.html index e36dd7c7f0f..24401051f80 100644 --- a/ja/farming/intro/index.html +++ b/ja/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/space-acres/install/index.html b/ja/farming/space-acres/install/index.html index 90eb0e1dd24..f0dd5ee210b 100644 --- a/ja/farming/space-acres/install/index.html +++ b/ja/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/space-acres/translate/index.html b/ja/farming/space-acres/translate/index.html index 9c50efcd8c2..47f789423e1 100644 --- a/ja/farming/space-acres/translate/index.html +++ b/ja/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/farming/timekeeper/index.html b/ja/farming/timekeeper/index.html index f47b82f07a0..43eef8faf47 100644 --- a/ja/farming/timekeeper/index.html +++ b/ja/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/index.html b/ja/index.html index a1d8397bcbd..81d859834b6 100644 --- a/ja/index.html +++ b/ja/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/learn/academy/index.html b/ja/learn/academy/index.html index 2111bd30522..d8733e20272 100644 --- a/ja/learn/academy/index.html +++ b/ja/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/learn/intro/index.html b/ja/learn/intro/index.html index 7287d68948b..d4e7cdb9d85 100644 --- a/ja/learn/intro/index.html +++ b/ja/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/learn/security/index.html b/ja/learn/security/index.html index 1633fa92fb6..b5275942ee5 100644 --- a/ja/learn/security/index.html +++ b/ja/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/markdown-page/index.html b/ja/markdown-page/index.html index 8b667094603..504ccc44bf5 100644 --- a/ja/markdown-page/index.html +++ b/ja/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/participate/community/resources/index.html b/ja/participate/community/resources/index.html index 7daa3b97f86..1c9cf2ea618 100644 --- a/ja/participate/community/resources/index.html +++ b/ja/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/participate/community/tools/index.html b/ja/participate/community/tools/index.html index 0bfd0ec2a6c..c02ee8a47ea 100644 --- a/ja/participate/community/tools/index.html +++ b/ja/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/participate/contribute/code-of-conduct/index.html b/ja/participate/contribute/code-of-conduct/index.html index 8c274329489..4abb5946ade 100644 --- a/ja/participate/contribute/code-of-conduct/index.html +++ b/ja/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/participate/contribute/intro/index.html b/ja/participate/contribute/intro/index.html index 89776ccdbce..475d40ae886 100644 --- a/ja/participate/contribute/intro/index.html +++ b/ja/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/participate/contribute/translate/index.html b/ja/participate/contribute/translate/index.html index 8777e370dd5..694dfb83675 100644 --- a/ja/participate/contribute/translate/index.html +++ b/ja/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/staking/intro/index.html b/ja/staking/intro/index.html index 42d18c65055..3e0f19f2400 100644 --- a/ja/staking/intro/index.html +++ b/ja/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/staking/operator/deregister/index.html b/ja/staking/operator/deregister/index.html index abe22c42ed9..9172ed84930 100644 --- a/ja/staking/operator/deregister/index.html +++ b/ja/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/staking/operator/register/index.html b/ja/staking/operator/register/index.html index df5ea53ba2e..07e38a9d524 100644 --- a/ja/staking/operator/register/index.html +++ b/ja/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/staking/operator/tips/index.html b/ja/staking/operator/tips/index.html index 99546a36b44..de8a12f3eb9 100644 --- a/ja/staking/operator/tips/index.html +++ b/ja/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/staking/stake/index.html b/ja/staking/stake/index.html index 3888e0fac21..3a6f9778100 100644 --- a/ja/staking/stake/index.html +++ b/ja/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/wallets/polkadot/index.html b/ja/wallets/polkadot/index.html index cf0c8cce9e1..0681a5075ac 100644 --- a/ja/wallets/polkadot/index.html +++ b/ja/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/ja/wallets/subwallet/index.html b/ja/wallets/subwallet/index.html index 651f4d72092..8641df24211 100644 --- a/ja/wallets/subwallet/index.html +++ b/ja/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/learn/academy/index.html b/learn/academy/index.html index c80036b5e18..e94882a9991 100644 --- a/learn/academy/index.html +++ b/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/learn/intro/index.html b/learn/intro/index.html index 4776edacb59..2ad1aa8560f 100644 --- a/learn/intro/index.html +++ b/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/learn/security/index.html b/learn/security/index.html index cca59330756..1ed39ae9095 100644 --- a/learn/security/index.html +++ b/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/markdown-page/index.html b/markdown-page/index.html index 1fd09c39e03..d2da553a743 100644 --- a/markdown-page/index.html +++ b/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/participate/community/resources/index.html b/participate/community/resources/index.html index 0ac1e8a9b23..f3b04dc9bad 100644 --- a/participate/community/resources/index.html +++ b/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/participate/community/tools/index.html b/participate/community/tools/index.html index 8fa364063cd..4c5ffecfa93 100644 --- a/participate/community/tools/index.html +++ b/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/participate/contribute/code-of-conduct/index.html b/participate/contribute/code-of-conduct/index.html index 55f9cc7bbd4..5bc893b6d72 100644 --- a/participate/contribute/code-of-conduct/index.html +++ b/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/participate/contribute/intro/index.html b/participate/contribute/intro/index.html index 4bdf784bfac..7d99790cdc3 100644 --- a/participate/contribute/intro/index.html +++ b/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/participate/contribute/translate/index.html b/participate/contribute/translate/index.html index caca2eae7af..1c830992edc 100644 --- a/participate/contribute/translate/index.html +++ b/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/404.html b/pl/404.html index 52fd68609f7..26861c2c57e 100644 --- a/pl/404.html +++ b/pl/404.html @@ -12,7 +12,7 @@ - + diff --git a/pl/assets/js/380c5315.111813e1.js b/pl/assets/js/380c5315.111813e1.js deleted file mode 100644 index e0a26b9a2e2..00000000000 --- a/pl/assets/js/380c5315.111813e1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[9251],{2712:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const o={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},a=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/pl/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/pl/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/pl/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/pl/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2},{value:"Known Issues",id:"known-issues",level:2}];function h(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.admonition,{title:"Plot Format Compatibility",type:"info",children:(0,r.jsx)(t.p,{children:"GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting."})}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."}),"\n",(0,r.jsx)(t.h2,{id:"known-issues",children:"Known Issues"}),"\n",(0,r.jsx)(t.p,{children:"Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),o=n(205),a=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,a.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,a]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),f=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{f&&a(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);a(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:o}=e;const a=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=a.indexOf(t),s=o[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=a.indexOf(e.currentTarget)+1;t=a[n]??a[0];break}case"ArrowLeft":{const n=a.indexOf(e.currentTarget)-1;t=a[n]??a[a.length-1];break}}t?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:o.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>a.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(y,{...t,...e}),(0,j.jsx)(b,{...t,...e})]})}function w(e){const t=(0,g.A)();return(0,j.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>o});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/pl/assets/js/380c5315.f54ab75d.js b/pl/assets/js/380c5315.f54ab75d.js new file mode 100644 index 00000000000..0ad885688cc --- /dev/null +++ b/pl/assets/js/380c5315.f54ab75d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[9251],{2712:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const a={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},o=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/pl/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/pl/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/pl/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/pl/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2}];function h(e){const t={a:"a",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>A});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),a=n(205),o=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,o.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,o]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),j=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{j&&o(j)}),[j]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const j={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:a}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=o.indexOf(t),s=a[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=o.indexOf(e.currentTarget)+1;t=o[n]??o[0];break}case"ArrowLeft":{const n=o.indexOf(e.currentTarget)-1;t=o[n]??o[o.length-1];break}}t?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:a.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>o.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",j.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,f.jsxs)("div",{className:(0,s.A)("tabs-container",j.tabList),children:[(0,f.jsx)(y,{...t,...e}),(0,f.jsx)(b,{...t,...e})]})}function A(e){const t=(0,g.A)();return(0,f.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>a});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/pl/assets/js/runtime~main.cebe1d9f.js b/pl/assets/js/runtime~main.b8bdda6d.js similarity index 68% rename from pl/assets/js/runtime~main.cebe1d9f.js rename to pl/assets/js/runtime~main.b8bdda6d.js index c168fd2d227..c635a64335e 100644 --- a/pl/assets/js/runtime~main.cebe1d9f.js +++ b/pl/assets/js/runtime~main.b8bdda6d.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,f,t,d,r={},c={};function b(e){var a=c[e];if(void 0!==a)return a.exports;var f=c[e]={exports:{}};return r[e].call(f.exports,f,f.exports,b),f.exports}b.m=r,e=[],b.O=(a,f,t,d)=>{if(!f){var r=1/0;for(i=0;i=d)&&Object.keys(b.O).every((e=>b.O[e](f[o])))?f.splice(o--,1):(c=!1,d0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[f,t,d]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var d=Object.create(null);b.r(d);var r={};a=a||[null,f({}),f([]),f(f)];for(var c=2&t&&e;"object"==typeof c&&!~a.indexOf(c);c=f(c))Object.getOwnPropertyNames(c).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,b.d(d,r),d},b.d=(e,a)=>{for(var f in a)b.o(a,f)&&!b.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,f)=>(b.f[f](e,a),a)),[])),b.u=e=>"assets/js/"+({197:"3da4f561",405:"103ff9de",714:"0ab09ffa",1067:"312111de",1093:"bba96e03",1104:"964479f8",1235:"a7456010",1333:"df3729f7",1503:"7d8600f1",2003:"1943909a",2009:"e0d75aac",2116:"b3af323e",2411:"a1df72ba",2774:"1c5356ca",2972:"509fd2f9",3165:"e265c610",3669:"fc11e675",3800:"37776d56",3993:"a9464c6c",4134:"393be207",4583:"1df93b7f",4853:"040cd4a6",4865:"9fc8e71e",5012:"93d0262a",5574:"ab716d5a",5622:"1014d7d2",5653:"62546065",5742:"aba21aa0",6055:"0ef392a2",6061:"1f391b9e",6162:"eb9b337f",6467:"51f9c404",6853:"33e95a08",6927:"6751f2a0",6969:"14eb3368",7098:"a7bd4aaa",7417:"dcf7cf0c",7584:"062225aa",7653:"f6c98558",7722:"3752163b",8189:"6452863b",8401:"17896441",8932:"1b1a8462",9048:"a94703ab",9070:"4ba63bb7",9123:"c93f639e",9156:"79841e9f",9251:"380c5315",9352:"93f63ceb",9401:"73f59ed1",9457:"0abf8bf7",9505:"6e2fde40",9532:"5dad069f",9576:"90a6813a",9623:"9fb47fd0",9647:"5e95c892",9768:"50fe8524",9780:"c03d332c"}[e]||e)+"."+{197:"7d961937",405:"84cd239f",714:"de4cc1ee",1067:"63bbef01",1093:"9a6ad029",1104:"7da09580",1235:"deb810c9",1333:"d14cfcc3",1503:"948ca820",1688:"af0e6f17",2003:"278062f1",2009:"148fbdea",2116:"5f8e5f9d",2237:"c851d8b1",2411:"b49b4978",2440:"ecd0621f",2774:"71dbe450",2972:"ec5e3276",3165:"1c05865e",3669:"2b09431c",3800:"d16f5a70",3993:"850bd185",4134:"5d3bc313",4324:"fec3e18f",4583:"c0d080f8",4853:"599b6c84",4865:"0dde3a54",5012:"948a0b93",5049:"7f13b97c",5394:"83d77ce3",5574:"f2b9385e",5622:"18a05f36",5653:"5b7b9c1a",5742:"08d6695f",6055:"e6533b9d",6061:"fc18f174",6162:"ef1a3273",6467:"378257b0",6688:"86f0bb7d",6853:"619bba34",6927:"9d7ad3d5",6969:"4f11b87f",7098:"c4e87eeb",7417:"dc420b48",7584:"7a3dbf58",7653:"2e4a0b52",7722:"6eed7564",8189:"aa7fdf56",8401:"3769c7ca",8913:"0680f2c1",8932:"a228ca30",9048:"3a629456",9070:"392c1df7",9123:"301e372a",9156:"fd784b2d",9251:"111813e1",9352:"d14d4a73",9401:"d053f5dd",9457:"067dc0a4",9462:"be2eb63e",9505:"21c50600",9532:"1f701243",9576:"a39d5c4b",9623:"046886ce",9647:"e4c313e0",9768:"b78e3acd",9780:"85fd21ae"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},d="portal:",b.l=(e,a,f,r)=>{if(t[e])t[e].push(a);else{var c,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var d=t[e];if(delete t[e],c.parentNode&&c.parentNode.removeChild(c),d&&d.forEach((e=>e(f))),a)return a(f)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=u.bind(null,c.onerror),c.onload=u.bind(null,c.onload),o&&document.head.appendChild(c)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/pl/",b.gca=function(e){return e={17896441:"8401",62546065:"5653","3da4f561":"197","103ff9de":"405","0ab09ffa":"714","312111de":"1067",bba96e03:"1093","964479f8":"1104",a7456010:"1235",df3729f7:"1333","7d8600f1":"1503","1943909a":"2003",e0d75aac:"2009",b3af323e:"2116",a1df72ba:"2411","1c5356ca":"2774","509fd2f9":"2972",e265c610:"3165",fc11e675:"3669","37776d56":"3800",a9464c6c:"3993","393be207":"4134","1df93b7f":"4583","040cd4a6":"4853","9fc8e71e":"4865","93d0262a":"5012",ab716d5a:"5574","1014d7d2":"5622",aba21aa0:"5742","0ef392a2":"6055","1f391b9e":"6061",eb9b337f:"6162","51f9c404":"6467","33e95a08":"6853","6751f2a0":"6927","14eb3368":"6969",a7bd4aaa:"7098",dcf7cf0c:"7417","062225aa":"7584",f6c98558:"7653","3752163b":"7722","6452863b":"8189","1b1a8462":"8932",a94703ab:"9048","4ba63bb7":"9070",c93f639e:"9123","79841e9f":"9156","380c5315":"9251","93f63ceb":"9352","73f59ed1":"9401","0abf8bf7":"9457","6e2fde40":"9505","5dad069f":"9532","90a6813a":"9576","9fb47fd0":"9623","5e95c892":"9647","50fe8524":"9768",c03d332c:"9780"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,f)=>{var t=b.o(e,a)?e[a]:void 0;if(0!==t)if(t)f.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var d=new Promise(((f,d)=>t=e[a]=[f,d]));f.push(t[2]=d);var r=b.p+b.u(a),c=new Error;b.l(r,(f=>{if(b.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var d=f&&("load"===f.type?"missing":f.type),r=f&&f.target&&f.target.src;c.message="Loading chunk "+a+" failed.\n("+d+": "+r+")",c.name="ChunkLoadError",c.type=d,c.request=r,t[1](c)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,f)=>{var t,d,r=f[0],c=f[1],o=f[2],n=0;if(r.some((a=>0!==e[a]))){for(t in c)b.o(c,t)&&(b.m[t]=c[t]);if(o)var i=o(b)}for(a&&a(f);n{"use strict";var e,a,f,d,t,r={},c={};function b(e){var a=c[e];if(void 0!==a)return a.exports;var f=c[e]={exports:{}};return r[e].call(f.exports,f,f.exports,b),f.exports}b.m=r,e=[],b.O=(a,f,d,t)=>{if(!f){var r=1/0;for(i=0;i=t)&&Object.keys(b.O).every((e=>b.O[e](f[o])))?f.splice(o--,1):(c=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[f,d,t]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var t=Object.create(null);b.r(t);var r={};a=a||[null,f({}),f([]),f(f)];for(var c=2&d&&e;"object"==typeof c&&!~a.indexOf(c);c=f(c))Object.getOwnPropertyNames(c).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,b.d(t,r),t},b.d=(e,a)=>{for(var f in a)b.o(a,f)&&!b.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,f)=>(b.f[f](e,a),a)),[])),b.u=e=>"assets/js/"+({197:"3da4f561",405:"103ff9de",714:"0ab09ffa",1067:"312111de",1093:"bba96e03",1104:"964479f8",1235:"a7456010",1333:"df3729f7",1503:"7d8600f1",2003:"1943909a",2009:"e0d75aac",2116:"b3af323e",2411:"a1df72ba",2774:"1c5356ca",2972:"509fd2f9",3165:"e265c610",3669:"fc11e675",3800:"37776d56",3993:"a9464c6c",4134:"393be207",4583:"1df93b7f",4853:"040cd4a6",4865:"9fc8e71e",5012:"93d0262a",5574:"ab716d5a",5622:"1014d7d2",5653:"62546065",5742:"aba21aa0",6055:"0ef392a2",6061:"1f391b9e",6162:"eb9b337f",6467:"51f9c404",6853:"33e95a08",6927:"6751f2a0",6969:"14eb3368",7098:"a7bd4aaa",7417:"dcf7cf0c",7584:"062225aa",7653:"f6c98558",7722:"3752163b",8189:"6452863b",8401:"17896441",8932:"1b1a8462",9048:"a94703ab",9070:"4ba63bb7",9123:"c93f639e",9156:"79841e9f",9251:"380c5315",9352:"93f63ceb",9401:"73f59ed1",9457:"0abf8bf7",9505:"6e2fde40",9532:"5dad069f",9576:"90a6813a",9623:"9fb47fd0",9647:"5e95c892",9768:"50fe8524",9780:"c03d332c"}[e]||e)+"."+{197:"7d961937",405:"84cd239f",714:"de4cc1ee",1067:"63bbef01",1093:"9a6ad029",1104:"7da09580",1235:"deb810c9",1333:"d14cfcc3",1503:"948ca820",1688:"af0e6f17",2003:"278062f1",2009:"148fbdea",2116:"5f8e5f9d",2237:"c851d8b1",2411:"b49b4978",2440:"ecd0621f",2774:"71dbe450",2972:"ec5e3276",3165:"1c05865e",3669:"2b09431c",3800:"d16f5a70",3993:"850bd185",4134:"5d3bc313",4324:"fec3e18f",4583:"c0d080f8",4853:"599b6c84",4865:"0dde3a54",5012:"948a0b93",5049:"7f13b97c",5394:"83d77ce3",5574:"f2b9385e",5622:"18a05f36",5653:"5b7b9c1a",5742:"08d6695f",6055:"e6533b9d",6061:"fc18f174",6162:"ef1a3273",6467:"378257b0",6688:"86f0bb7d",6853:"619bba34",6927:"9d7ad3d5",6969:"4f11b87f",7098:"c4e87eeb",7417:"dc420b48",7584:"7a3dbf58",7653:"2e4a0b52",7722:"6eed7564",8189:"aa7fdf56",8401:"3769c7ca",8913:"0680f2c1",8932:"a228ca30",9048:"3a629456",9070:"392c1df7",9123:"301e372a",9156:"fd784b2d",9251:"f54ab75d",9352:"d14d4a73",9401:"d053f5dd",9457:"067dc0a4",9462:"be2eb63e",9505:"21c50600",9532:"1f701243",9576:"a39d5c4b",9623:"046886ce",9647:"e4c313e0",9768:"b78e3acd",9780:"85fd21ae"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},t="portal:",b.l=(e,a,f,r)=>{if(d[e])d[e].push(a);else{var c,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var t=d[e];if(delete d[e],c.parentNode&&c.parentNode.removeChild(c),t&&t.forEach((e=>e(f))),a)return a(f)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=u.bind(null,c.onerror),c.onload=u.bind(null,c.onload),o&&document.head.appendChild(c)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/pl/",b.gca=function(e){return e={17896441:"8401",62546065:"5653","3da4f561":"197","103ff9de":"405","0ab09ffa":"714","312111de":"1067",bba96e03:"1093","964479f8":"1104",a7456010:"1235",df3729f7:"1333","7d8600f1":"1503","1943909a":"2003",e0d75aac:"2009",b3af323e:"2116",a1df72ba:"2411","1c5356ca":"2774","509fd2f9":"2972",e265c610:"3165",fc11e675:"3669","37776d56":"3800",a9464c6c:"3993","393be207":"4134","1df93b7f":"4583","040cd4a6":"4853","9fc8e71e":"4865","93d0262a":"5012",ab716d5a:"5574","1014d7d2":"5622",aba21aa0:"5742","0ef392a2":"6055","1f391b9e":"6061",eb9b337f:"6162","51f9c404":"6467","33e95a08":"6853","6751f2a0":"6927","14eb3368":"6969",a7bd4aaa:"7098",dcf7cf0c:"7417","062225aa":"7584",f6c98558:"7653","3752163b":"7722","6452863b":"8189","1b1a8462":"8932",a94703ab:"9048","4ba63bb7":"9070",c93f639e:"9123","79841e9f":"9156","380c5315":"9251","93f63ceb":"9352","73f59ed1":"9401","0abf8bf7":"9457","6e2fde40":"9505","5dad069f":"9532","90a6813a":"9576","9fb47fd0":"9623","5e95c892":"9647","50fe8524":"9768",c03d332c:"9780"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,f)=>{var d=b.o(e,a)?e[a]:void 0;if(0!==d)if(d)f.push(d[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((f,t)=>d=e[a]=[f,t]));f.push(d[2]=t);var r=b.p+b.u(a),c=new Error;b.l(r,(f=>{if(b.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var t=f&&("load"===f.type?"missing":f.type),r=f&&f.target&&f.target.src;c.message="Loading chunk "+a+" failed.\n("+t+": "+r+")",c.name="ChunkLoadError",c.type=t,c.request=r,d[1](c)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,f)=>{var d,t,r=f[0],c=f[1],o=f[2],n=0;if(r.some((a=>0!==e[a]))){for(d in c)b.o(c,d)&&(b.m[d]=c[d]);if(o)var i=o(b)}for(a&&a(f);n - + diff --git a/pl/develop/auto-sdk/auto-id/index.html b/pl/develop/auto-sdk/auto-id/index.html index f4845eb50fb..a6158811163 100644 --- a/pl/develop/auto-sdk/auto-id/index.html +++ b/pl/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/auto-sdk/consensus/index.html b/pl/develop/auto-sdk/consensus/index.html index ea9bcfac6ab..88acd2d314b 100644 --- a/pl/develop/auto-sdk/consensus/index.html +++ b/pl/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/auto-sdk/drive/index.html b/pl/develop/auto-sdk/drive/index.html index 7031317f53c..3e859bacf60 100644 --- a/pl/develop/auto-sdk/drive/index.html +++ b/pl/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/auto-sdk/index.html b/pl/develop/auto-sdk/index.html index e03574fc34e..2cbded30db8 100644 --- a/pl/develop/auto-sdk/index.html +++ b/pl/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/auto-sdk/intro/index.html b/pl/develop/auto-sdk/intro/index.html index 8ddbc454b37..7e74ba0545b 100644 --- a/pl/develop/auto-sdk/intro/index.html +++ b/pl/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/auto-sdk/utils/index.html b/pl/develop/auto-sdk/utils/index.html index a84a420144e..7f572245c29 100644 --- a/pl/develop/auto-sdk/utils/index.html +++ b/pl/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/auto-sdk/xdm/index.html b/pl/develop/auto-sdk/xdm/index.html index f036a60e333..ab688681474 100644 --- a/pl/develop/auto-sdk/xdm/index.html +++ b/pl/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/intro/index.html b/pl/develop/intro/index.html index 0157c29e1fa..d6788be3228 100644 --- a/pl/develop/intro/index.html +++ b/pl/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/nova/block-explorer/index.html b/pl/develop/nova/block-explorer/index.html index 73580022783..9fcd67bea77 100644 --- a/pl/develop/nova/block-explorer/index.html +++ b/pl/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/nova/faucet/index.html b/pl/develop/nova/faucet/index.html index affdcd0f3dc..8c64d894b4c 100644 --- a/pl/develop/nova/faucet/index.html +++ b/pl/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/nova/general/index.html b/pl/develop/nova/general/index.html index 300e0317cbc..4a9912998b5 100644 --- a/pl/develop/nova/general/index.html +++ b/pl/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/nova/guides/foundry/index.html b/pl/develop/nova/guides/foundry/index.html index 8f4288cc4e2..d6c5565e6d6 100644 --- a/pl/develop/nova/guides/foundry/index.html +++ b/pl/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/nova/guides/hardhat/index.html b/pl/develop/nova/guides/hardhat/index.html index cd91be317f2..03c32539d81 100644 --- a/pl/develop/nova/guides/hardhat/index.html +++ b/pl/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/nova/guides/local-development/index.html b/pl/develop/nova/guides/local-development/index.html index 5678d427a2a..1db88fca919 100644 --- a/pl/develop/nova/guides/local-development/index.html +++ b/pl/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/nova/guides/remix/index.html b/pl/develop/nova/guides/remix/index.html index 66ee8000e44..84d6ed24547 100644 --- a/pl/develop/nova/guides/remix/index.html +++ b/pl/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/nova/index.html b/pl/develop/nova/index.html index 08d9fd62c40..1e185f9eff9 100644 --- a/pl/develop/nova/index.html +++ b/pl/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/nova/introduction/index.html b/pl/develop/nova/introduction/index.html index 8deb309d13d..b355433e089 100644 --- a/pl/develop/nova/introduction/index.html +++ b/pl/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/develop/nova/metamask/index.html b/pl/develop/nova/metamask/index.html index 552dd4b7810..7f1dff274bd 100644 --- a/pl/develop/nova/metamask/index.html +++ b/pl/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/advanced-cli/cluster/index.html b/pl/farming/advanced-cli/cluster/index.html index 2b69d0b2b10..374137c66dd 100644 --- a/pl/farming/advanced-cli/cluster/index.html +++ b/pl/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/advanced-cli/install/index.html b/pl/farming/advanced-cli/install/index.html index c72181029bd..964dc564804 100644 --- a/pl/farming/advanced-cli/install/index.html +++ b/pl/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/advanced-cli/tips/index.html b/pl/farming/advanced-cli/tips/index.html index 93862d2d960..5a07f0306a3 100644 --- a/pl/farming/advanced-cli/tips/index.html +++ b/pl/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/common-problems/index.html b/pl/farming/common-problems/index.html index 2d216c260e6..edf48300c02 100644 --- a/pl/farming/common-problems/index.html +++ b/pl/farming/common-problems/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/guides/gpu-plotter/index.html b/pl/farming/guides/gpu-plotter/index.html index 6017968d64a..810ca3dba60 100644 --- a/pl/farming/guides/gpu-plotter/index.html +++ b/pl/farming/guides/gpu-plotter/index.html @@ -12,14 +12,13 @@ - +

GPU Plotter

Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck.

Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed.

Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU.

-
Plot Format Compatibility

GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting.

Platform Compatibility

Platform🐧 Linux🪟 WindowsNvidiaAMDIntel
Advanced CLI🛠️🔮
Space Acres🔜🔮

🛠️ Limited AMD Support for Linux only is available in recent test builds. The most recent test builds are linked on the forum

See Discord farmer-chat channel for limited support.

@@ -59,8 +58,6 @@

C

Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): --cuda-gpus <gpu_ids>

--cuda-gpus 0,1,3

Farming Cluster

-

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

-

Known Issues

-

Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine.

+

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

\ No newline at end of file diff --git a/pl/farming/guides/grafana-dashboard/index.html b/pl/farming/guides/grafana-dashboard/index.html index 0e80d1ee6af..ceebbfd14bd 100644 --- a/pl/farming/guides/grafana-dashboard/index.html +++ b/pl/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/guides/index.html b/pl/farming/guides/index.html index 059f9916d8d..eae945105c9 100644 --- a/pl/farming/guides/index.html +++ b/pl/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/guides/port-config/index.html b/pl/farming/guides/port-config/index.html index f1e7726e145..8edf722e227 100644 --- a/pl/farming/guides/port-config/index.html +++ b/pl/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/guides/verified-farmer/index.html b/pl/farming/guides/verified-farmer/index.html index d07f59b19fa..0664d2293ed 100644 --- a/pl/farming/guides/verified-farmer/index.html +++ b/pl/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/intro/index.html b/pl/farming/intro/index.html index d161b5e2282..f1157a962a6 100644 --- a/pl/farming/intro/index.html +++ b/pl/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/space-acres/install/index.html b/pl/farming/space-acres/install/index.html index 410bdd2ef59..b23ed3efdb2 100644 --- a/pl/farming/space-acres/install/index.html +++ b/pl/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/space-acres/translate/index.html b/pl/farming/space-acres/translate/index.html index 06c5c9a7eec..b8f32856bbb 100644 --- a/pl/farming/space-acres/translate/index.html +++ b/pl/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/farming/timekeeper/index.html b/pl/farming/timekeeper/index.html index 99e3c21190b..624f4bb4d9a 100644 --- a/pl/farming/timekeeper/index.html +++ b/pl/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/index.html b/pl/index.html index 20651d2b7f4..f8a5a3d5952 100644 --- a/pl/index.html +++ b/pl/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/learn/academy/index.html b/pl/learn/academy/index.html index 69a23c9b6f3..16f5443ec9f 100644 --- a/pl/learn/academy/index.html +++ b/pl/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/learn/intro/index.html b/pl/learn/intro/index.html index 2efbcb48515..44792989190 100644 --- a/pl/learn/intro/index.html +++ b/pl/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/learn/security/index.html b/pl/learn/security/index.html index a459710cd8a..977a7ac98e6 100644 --- a/pl/learn/security/index.html +++ b/pl/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/markdown-page/index.html b/pl/markdown-page/index.html index 92818fc2db1..e58a7f906e6 100644 --- a/pl/markdown-page/index.html +++ b/pl/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/participate/community/resources/index.html b/pl/participate/community/resources/index.html index 93933d45d0e..2a4da8f677a 100644 --- a/pl/participate/community/resources/index.html +++ b/pl/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/participate/community/tools/index.html b/pl/participate/community/tools/index.html index 0bf141cef3d..f9bb2122b06 100644 --- a/pl/participate/community/tools/index.html +++ b/pl/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/participate/contribute/code-of-conduct/index.html b/pl/participate/contribute/code-of-conduct/index.html index b8ce11118db..2766183efa0 100644 --- a/pl/participate/contribute/code-of-conduct/index.html +++ b/pl/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/participate/contribute/intro/index.html b/pl/participate/contribute/intro/index.html index e8b221f6288..81e59105d9a 100644 --- a/pl/participate/contribute/intro/index.html +++ b/pl/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/participate/contribute/translate/index.html b/pl/participate/contribute/translate/index.html index eb19b1d7092..eb9c7407e6e 100644 --- a/pl/participate/contribute/translate/index.html +++ b/pl/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/staking/intro/index.html b/pl/staking/intro/index.html index 784ad442754..b5562fa5cfa 100644 --- a/pl/staking/intro/index.html +++ b/pl/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/staking/operator/deregister/index.html b/pl/staking/operator/deregister/index.html index a22ae896e71..7cc792d1594 100644 --- a/pl/staking/operator/deregister/index.html +++ b/pl/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/staking/operator/register/index.html b/pl/staking/operator/register/index.html index 44864dfb9ea..5660872bb79 100644 --- a/pl/staking/operator/register/index.html +++ b/pl/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/staking/operator/tips/index.html b/pl/staking/operator/tips/index.html index 708253dc39d..d6ca73572ad 100644 --- a/pl/staking/operator/tips/index.html +++ b/pl/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/staking/stake/index.html b/pl/staking/stake/index.html index a7fa7c32208..c04d9425289 100644 --- a/pl/staking/stake/index.html +++ b/pl/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/wallets/polkadot/index.html b/pl/wallets/polkadot/index.html index b82bc9846d0..66f7cb26b70 100644 --- a/pl/wallets/polkadot/index.html +++ b/pl/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/pl/wallets/subwallet/index.html b/pl/wallets/subwallet/index.html index dcf7473ced1..9f03b3d9eeb 100644 --- a/pl/wallets/subwallet/index.html +++ b/pl/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/404.html b/pt/404.html index 1637ca9c012..25feed33bc5 100644 --- a/pt/404.html +++ b/pt/404.html @@ -12,7 +12,7 @@ - + diff --git a/pt/assets/js/d1a2a840.06531b51.js b/pt/assets/js/d1a2a840.06531b51.js new file mode 100644 index 00000000000..3bb9060f0b1 --- /dev/null +++ b/pt/assets/js/d1a2a840.06531b51.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[6744],{4528:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const a={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},o=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/pt/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/pt/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/pt/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/pt/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2}];function h(e){const t={a:"a",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>A});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),a=n(205),o=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,o.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,o]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),j=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{j&&o(j)}),[j]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const j={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:a}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=o.indexOf(t),s=a[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=o.indexOf(e.currentTarget)+1;t=o[n]??o[0];break}case"ArrowLeft":{const n=o.indexOf(e.currentTarget)-1;t=o[n]??o[o.length-1];break}}t?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:a.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>o.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",j.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,f.jsxs)("div",{className:(0,s.A)("tabs-container",j.tabList),children:[(0,f.jsx)(y,{...t,...e}),(0,f.jsx)(b,{...t,...e})]})}function A(e){const t=(0,g.A)();return(0,f.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>a});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/pt/assets/js/d1a2a840.40a6e7d0.js b/pt/assets/js/d1a2a840.40a6e7d0.js deleted file mode 100644 index 0a698cba375..00000000000 --- a/pt/assets/js/d1a2a840.40a6e7d0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[6744],{4528:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const o={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},a=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/pt/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/pt/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/pt/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/pt/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2},{value:"Known Issues",id:"known-issues",level:2}];function h(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.admonition,{title:"Plot Format Compatibility",type:"info",children:(0,r.jsx)(t.p,{children:"GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting."})}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."}),"\n",(0,r.jsx)(t.h2,{id:"known-issues",children:"Known Issues"}),"\n",(0,r.jsx)(t.p,{children:"Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),o=n(205),a=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,a.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,a]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),f=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{f&&a(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);a(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:o}=e;const a=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=a.indexOf(t),s=o[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=a.indexOf(e.currentTarget)+1;t=a[n]??a[0];break}case"ArrowLeft":{const n=a.indexOf(e.currentTarget)-1;t=a[n]??a[a.length-1];break}}t?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:o.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>a.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(y,{...t,...e}),(0,j.jsx)(b,{...t,...e})]})}function w(e){const t=(0,g.A)();return(0,j.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>o});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/pt/assets/js/runtime~main.eeba5dec.js b/pt/assets/js/runtime~main.38009c0d.js similarity index 98% rename from pt/assets/js/runtime~main.eeba5dec.js rename to pt/assets/js/runtime~main.38009c0d.js index 9530003d3c7..5b1c2bba874 100644 --- a/pt/assets/js/runtime~main.eeba5dec.js +++ b/pt/assets/js/runtime~main.38009c0d.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,f,t,r,d={},c={};function b(e){var a=c[e];if(void 0!==a)return a.exports;var f=c[e]={exports:{}};return d[e].call(f.exports,f,f.exports,b),f.exports}b.m=d,e=[],b.O=(a,f,t,r)=>{if(!f){var d=1/0;for(i=0;i=r)&&Object.keys(b.O).every((e=>b.O[e](f[o])))?f.splice(o--,1):(c=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[f,t,r]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);b.r(r);var d={};a=a||[null,f({}),f([]),f(f)];for(var c=2&t&&e;"object"==typeof c&&!~a.indexOf(c);c=f(c))Object.getOwnPropertyNames(c).forEach((a=>d[a]=()=>e[a]));return d.default=()=>e,b.d(r,d),r},b.d=(e,a)=>{for(var f in a)b.o(a,f)&&!b.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,f)=>(b.f[f](e,a),a)),[])),b.u=e=>"assets/js/"+({568:"7414882c",1e3:"05a6e5eb",1073:"5b21eb5b",1150:"6a53963f",1206:"637d1e43",1235:"a7456010",1246:"2ff9f15f",1330:"e64716c7",1613:"4b374b1c",2173:"0f607e68",2499:"f8ece6c6",2801:"81a80031",2815:"238d2612",2975:"14175527",2978:"623420e1",3750:"0f768022",3853:"cf0bae56",4134:"393be207",4428:"6945023b",4455:"1a68e964",4567:"4ff510f0",4583:"1df93b7f",4720:"1d290942",4739:"a0ccf6a6",5116:"2c7e9cf0",5244:"7c84b674",5484:"a7c1348b",5742:"aba21aa0",6034:"a9392d3d",6061:"1f391b9e",6442:"b5b41e46",6489:"3878d6a7",6631:"e83dc2a6",6740:"8e8980be",6744:"d1a2a840",6797:"99eeb480",6969:"14eb3368",7098:"a7bd4aaa",7238:"5a04c05e",7700:"a0e5e030",7806:"3778cde8",7837:"9afbf091",8088:"c315e93d",8115:"e703806e",8275:"297df787",8345:"e26024d7",8356:"a03666e8",8401:"17896441",8472:"5e3aacc0",8945:"095d206d",8969:"70fdb4e0",9048:"a94703ab",9145:"d5e150a1",9525:"35b0986e",9556:"d2a252f3",9593:"15769cf5",9647:"5e95c892",9706:"2f7803b9"}[e]||e)+"."+{568:"f1d8d464",1e3:"11ba548e",1073:"743d5175",1150:"e81ae72b",1206:"6855c03b",1235:"deb810c9",1246:"f82dade5",1330:"e1b2a6bb",1613:"84e0c9be",1688:"af0e6f17",2173:"265ab4b5",2237:"c851d8b1",2440:"ecd0621f",2499:"6d2916a7",2801:"80b2de7f",2815:"c9df1f01",2975:"3097f1ee",2978:"6428b2d9",3750:"8430ac10",3853:"5e378bd6",4134:"c8ee4f4c",4324:"fec3e18f",4428:"da638a0b",4455:"83a5d44d",4567:"81ad2e9e",4583:"c0d080f8",4720:"c917b030",4739:"c5d6c585",5049:"7f13b97c",5116:"fdf9e212",5244:"781ca251",5394:"83d77ce3",5484:"10678aa2",5742:"08d6695f",6034:"caf9c56a",6061:"fc18f174",6442:"7fc05651",6489:"81a1f0c0",6631:"623e711a",6688:"86f0bb7d",6740:"cb761d32",6744:"40a6e7d0",6797:"fcf07327",6969:"4f11b87f",7098:"c4e87eeb",7238:"29203b0a",7700:"3e9d1cd2",7806:"2e29eee5",7837:"1011d6c5",8088:"ce4a2370",8115:"87197947",8275:"667f0fa9",8345:"6b94864e",8356:"c82fecf7",8401:"3769c7ca",8472:"e95c69f1",8913:"0680f2c1",8945:"c675170a",8969:"e1234a8e",9048:"3a629456",9145:"5da5e3bf",9462:"be2eb63e",9525:"46840ba1",9556:"4560cd89",9593:"7b92ce4e",9647:"e4c313e0",9706:"fe46e645"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="portal:",b.l=(e,a,f,d)=>{if(t[e])t[e].push(a);else{var c,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var r=t[e];if(delete t[e],c.parentNode&&c.parentNode.removeChild(c),r&&r.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),o&&document.head.appendChild(c)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/pt/",b.gca=function(e){return e={14175527:"2975",17896441:"8401","7414882c":"568","05a6e5eb":"1000","5b21eb5b":"1073","6a53963f":"1150","637d1e43":"1206",a7456010:"1235","2ff9f15f":"1246",e64716c7:"1330","4b374b1c":"1613","0f607e68":"2173",f8ece6c6:"2499","81a80031":"2801","238d2612":"2815","623420e1":"2978","0f768022":"3750",cf0bae56:"3853","393be207":"4134","6945023b":"4428","1a68e964":"4455","4ff510f0":"4567","1df93b7f":"4583","1d290942":"4720",a0ccf6a6:"4739","2c7e9cf0":"5116","7c84b674":"5244",a7c1348b:"5484",aba21aa0:"5742",a9392d3d:"6034","1f391b9e":"6061",b5b41e46:"6442","3878d6a7":"6489",e83dc2a6:"6631","8e8980be":"6740",d1a2a840:"6744","99eeb480":"6797","14eb3368":"6969",a7bd4aaa:"7098","5a04c05e":"7238",a0e5e030:"7700","3778cde8":"7806","9afbf091":"7837",c315e93d:"8088",e703806e:"8115","297df787":"8275",e26024d7:"8345",a03666e8:"8356","5e3aacc0":"8472","095d206d":"8945","70fdb4e0":"8969",a94703ab:"9048",d5e150a1:"9145","35b0986e":"9525",d2a252f3:"9556","15769cf5":"9593","5e95c892":"9647","2f7803b9":"9706"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,f)=>{var t=b.o(e,a)?e[a]:void 0;if(0!==t)if(t)f.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var r=new Promise(((f,r)=>t=e[a]=[f,r]));f.push(t[2]=r);var d=b.p+b.u(a),c=new Error;b.l(d,(f=>{if(b.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=f&&("load"===f.type?"missing":f.type),d=f&&f.target&&f.target.src;c.message="Loading chunk "+a+" failed.\n("+r+": "+d+")",c.name="ChunkLoadError",c.type=r,c.request=d,t[1](c)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,f)=>{var t,r,d=f[0],c=f[1],o=f[2],n=0;if(d.some((a=>0!==e[a]))){for(t in c)b.o(c,t)&&(b.m[t]=c[t]);if(o)var i=o(b)}for(a&&a(f);n{"use strict";var e,a,f,t,r,d={},c={};function b(e){var a=c[e];if(void 0!==a)return a.exports;var f=c[e]={exports:{}};return d[e].call(f.exports,f,f.exports,b),f.exports}b.m=d,e=[],b.O=(a,f,t,r)=>{if(!f){var d=1/0;for(i=0;i=r)&&Object.keys(b.O).every((e=>b.O[e](f[o])))?f.splice(o--,1):(c=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[f,t,r]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);b.r(r);var d={};a=a||[null,f({}),f([]),f(f)];for(var c=2&t&&e;"object"==typeof c&&!~a.indexOf(c);c=f(c))Object.getOwnPropertyNames(c).forEach((a=>d[a]=()=>e[a]));return d.default=()=>e,b.d(r,d),r},b.d=(e,a)=>{for(var f in a)b.o(a,f)&&!b.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,f)=>(b.f[f](e,a),a)),[])),b.u=e=>"assets/js/"+({568:"7414882c",1e3:"05a6e5eb",1073:"5b21eb5b",1150:"6a53963f",1206:"637d1e43",1235:"a7456010",1246:"2ff9f15f",1330:"e64716c7",1613:"4b374b1c",2173:"0f607e68",2499:"f8ece6c6",2801:"81a80031",2815:"238d2612",2975:"14175527",2978:"623420e1",3750:"0f768022",3853:"cf0bae56",4134:"393be207",4428:"6945023b",4455:"1a68e964",4567:"4ff510f0",4583:"1df93b7f",4720:"1d290942",4739:"a0ccf6a6",5116:"2c7e9cf0",5244:"7c84b674",5484:"a7c1348b",5742:"aba21aa0",6034:"a9392d3d",6061:"1f391b9e",6442:"b5b41e46",6489:"3878d6a7",6631:"e83dc2a6",6740:"8e8980be",6744:"d1a2a840",6797:"99eeb480",6969:"14eb3368",7098:"a7bd4aaa",7238:"5a04c05e",7700:"a0e5e030",7806:"3778cde8",7837:"9afbf091",8088:"c315e93d",8115:"e703806e",8275:"297df787",8345:"e26024d7",8356:"a03666e8",8401:"17896441",8472:"5e3aacc0",8945:"095d206d",8969:"70fdb4e0",9048:"a94703ab",9145:"d5e150a1",9525:"35b0986e",9556:"d2a252f3",9593:"15769cf5",9647:"5e95c892",9706:"2f7803b9"}[e]||e)+"."+{568:"f1d8d464",1e3:"11ba548e",1073:"743d5175",1150:"e81ae72b",1206:"6855c03b",1235:"deb810c9",1246:"f82dade5",1330:"e1b2a6bb",1613:"84e0c9be",1688:"af0e6f17",2173:"265ab4b5",2237:"c851d8b1",2440:"ecd0621f",2499:"6d2916a7",2801:"80b2de7f",2815:"c9df1f01",2975:"3097f1ee",2978:"6428b2d9",3750:"8430ac10",3853:"5e378bd6",4134:"c8ee4f4c",4324:"fec3e18f",4428:"da638a0b",4455:"83a5d44d",4567:"81ad2e9e",4583:"c0d080f8",4720:"c917b030",4739:"c5d6c585",5049:"7f13b97c",5116:"fdf9e212",5244:"781ca251",5394:"83d77ce3",5484:"10678aa2",5742:"08d6695f",6034:"caf9c56a",6061:"fc18f174",6442:"7fc05651",6489:"81a1f0c0",6631:"623e711a",6688:"86f0bb7d",6740:"cb761d32",6744:"06531b51",6797:"fcf07327",6969:"4f11b87f",7098:"c4e87eeb",7238:"29203b0a",7700:"3e9d1cd2",7806:"2e29eee5",7837:"1011d6c5",8088:"ce4a2370",8115:"87197947",8275:"667f0fa9",8345:"6b94864e",8356:"c82fecf7",8401:"3769c7ca",8472:"e95c69f1",8913:"0680f2c1",8945:"c675170a",8969:"e1234a8e",9048:"3a629456",9145:"5da5e3bf",9462:"be2eb63e",9525:"46840ba1",9556:"4560cd89",9593:"7b92ce4e",9647:"e4c313e0",9706:"fe46e645"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="portal:",b.l=(e,a,f,d)=>{if(t[e])t[e].push(a);else{var c,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var r=t[e];if(delete t[e],c.parentNode&&c.parentNode.removeChild(c),r&&r.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),o&&document.head.appendChild(c)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/pt/",b.gca=function(e){return e={14175527:"2975",17896441:"8401","7414882c":"568","05a6e5eb":"1000","5b21eb5b":"1073","6a53963f":"1150","637d1e43":"1206",a7456010:"1235","2ff9f15f":"1246",e64716c7:"1330","4b374b1c":"1613","0f607e68":"2173",f8ece6c6:"2499","81a80031":"2801","238d2612":"2815","623420e1":"2978","0f768022":"3750",cf0bae56:"3853","393be207":"4134","6945023b":"4428","1a68e964":"4455","4ff510f0":"4567","1df93b7f":"4583","1d290942":"4720",a0ccf6a6:"4739","2c7e9cf0":"5116","7c84b674":"5244",a7c1348b:"5484",aba21aa0:"5742",a9392d3d:"6034","1f391b9e":"6061",b5b41e46:"6442","3878d6a7":"6489",e83dc2a6:"6631","8e8980be":"6740",d1a2a840:"6744","99eeb480":"6797","14eb3368":"6969",a7bd4aaa:"7098","5a04c05e":"7238",a0e5e030:"7700","3778cde8":"7806","9afbf091":"7837",c315e93d:"8088",e703806e:"8115","297df787":"8275",e26024d7:"8345",a03666e8:"8356","5e3aacc0":"8472","095d206d":"8945","70fdb4e0":"8969",a94703ab:"9048",d5e150a1:"9145","35b0986e":"9525",d2a252f3:"9556","15769cf5":"9593","5e95c892":"9647","2f7803b9":"9706"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,f)=>{var t=b.o(e,a)?e[a]:void 0;if(0!==t)if(t)f.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var r=new Promise(((f,r)=>t=e[a]=[f,r]));f.push(t[2]=r);var d=b.p+b.u(a),c=new Error;b.l(d,(f=>{if(b.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=f&&("load"===f.type?"missing":f.type),d=f&&f.target&&f.target.src;c.message="Loading chunk "+a+" failed.\n("+r+": "+d+")",c.name="ChunkLoadError",c.type=r,c.request=d,t[1](c)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,f)=>{var t,r,d=f[0],c=f[1],o=f[2],n=0;if(d.some((a=>0!==e[a]))){for(t in c)b.o(c,t)&&(b.m[t]=c[t]);if(o)var i=o(b)}for(a&&a(f);n - + diff --git a/pt/develop/auto-sdk/auto-id/index.html b/pt/develop/auto-sdk/auto-id/index.html index df9b1965b07..4e27c6be78e 100644 --- a/pt/develop/auto-sdk/auto-id/index.html +++ b/pt/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/auto-sdk/consensus/index.html b/pt/develop/auto-sdk/consensus/index.html index 6b421c6c53d..4640c3e824d 100644 --- a/pt/develop/auto-sdk/consensus/index.html +++ b/pt/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/auto-sdk/drive/index.html b/pt/develop/auto-sdk/drive/index.html index 5883c79db4a..76b1fdda206 100644 --- a/pt/develop/auto-sdk/drive/index.html +++ b/pt/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/auto-sdk/index.html b/pt/develop/auto-sdk/index.html index 5fbaf74c778..0bd51d6e428 100644 --- a/pt/develop/auto-sdk/index.html +++ b/pt/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/auto-sdk/intro/index.html b/pt/develop/auto-sdk/intro/index.html index 0b7e4f7d529..9561f47b505 100644 --- a/pt/develop/auto-sdk/intro/index.html +++ b/pt/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/auto-sdk/utils/index.html b/pt/develop/auto-sdk/utils/index.html index 04b6329f857..4082500104a 100644 --- a/pt/develop/auto-sdk/utils/index.html +++ b/pt/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/auto-sdk/xdm/index.html b/pt/develop/auto-sdk/xdm/index.html index 7e1a113d216..fbcbfe9015a 100644 --- a/pt/develop/auto-sdk/xdm/index.html +++ b/pt/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/intro/index.html b/pt/develop/intro/index.html index 35486a89c5a..10ccde6e2be 100644 --- a/pt/develop/intro/index.html +++ b/pt/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/nova/block-explorer/index.html b/pt/develop/nova/block-explorer/index.html index 374cb0b2f95..cba838601d1 100644 --- a/pt/develop/nova/block-explorer/index.html +++ b/pt/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/nova/faucet/index.html b/pt/develop/nova/faucet/index.html index c70c44f6c8e..d57c3f66263 100644 --- a/pt/develop/nova/faucet/index.html +++ b/pt/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/nova/general/index.html b/pt/develop/nova/general/index.html index 34d4b7ade81..104a0a11ce2 100644 --- a/pt/develop/nova/general/index.html +++ b/pt/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/nova/guides/foundry/index.html b/pt/develop/nova/guides/foundry/index.html index f898adf275e..70c34077d04 100644 --- a/pt/develop/nova/guides/foundry/index.html +++ b/pt/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/nova/guides/hardhat/index.html b/pt/develop/nova/guides/hardhat/index.html index 661d4db425a..df1cb0042f8 100644 --- a/pt/develop/nova/guides/hardhat/index.html +++ b/pt/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/nova/guides/local-development/index.html b/pt/develop/nova/guides/local-development/index.html index a549c173d09..28c38f96f5e 100644 --- a/pt/develop/nova/guides/local-development/index.html +++ b/pt/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/nova/guides/remix/index.html b/pt/develop/nova/guides/remix/index.html index 363212f9191..bee6b89465d 100644 --- a/pt/develop/nova/guides/remix/index.html +++ b/pt/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/nova/index.html b/pt/develop/nova/index.html index 0f1c8e7c15f..c401545c9d2 100644 --- a/pt/develop/nova/index.html +++ b/pt/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/nova/introduction/index.html b/pt/develop/nova/introduction/index.html index 47206419366..d59cf11a4f9 100644 --- a/pt/develop/nova/introduction/index.html +++ b/pt/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/develop/nova/metamask/index.html b/pt/develop/nova/metamask/index.html index c68f4683388..9a05d175b7b 100644 --- a/pt/develop/nova/metamask/index.html +++ b/pt/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/advanced-cli/cluster/index.html b/pt/farming/advanced-cli/cluster/index.html index deb4fa6bf27..d1ed83ab1be 100644 --- a/pt/farming/advanced-cli/cluster/index.html +++ b/pt/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/advanced-cli/install/index.html b/pt/farming/advanced-cli/install/index.html index 9898d3663f0..560739e5ca6 100644 --- a/pt/farming/advanced-cli/install/index.html +++ b/pt/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/advanced-cli/tips/index.html b/pt/farming/advanced-cli/tips/index.html index 9bc46bfb3b2..376b9db0350 100644 --- a/pt/farming/advanced-cli/tips/index.html +++ b/pt/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/common-problems/index.html b/pt/farming/common-problems/index.html index 1ae32341b1c..8218455857b 100644 --- a/pt/farming/common-problems/index.html +++ b/pt/farming/common-problems/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/guides/gpu-plotter/index.html b/pt/farming/guides/gpu-plotter/index.html index 49732e07b00..81b9b6dca26 100644 --- a/pt/farming/guides/gpu-plotter/index.html +++ b/pt/farming/guides/gpu-plotter/index.html @@ -12,14 +12,13 @@ - +

GPU Plotter

Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck.

Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed.

Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU.

-
Plot Format Compatibility

GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting.

Platform Compatibility

Platform🐧 Linux🪟 WindowsNvidiaAMDIntel
Advanced CLI🛠️🔮
Space Acres🔜🔮

🛠️ Limited AMD Support for Linux only is available in recent test builds. The most recent test builds are linked on the forum

See Discord farmer-chat channel for limited support.

@@ -59,8 +58,6 @@

C

Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): --cuda-gpus <gpu_ids>

--cuda-gpus 0,1,3

Farming Cluster

-

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

-

Known Issues

-

Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine.

+

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

\ No newline at end of file diff --git a/pt/farming/guides/grafana-dashboard/index.html b/pt/farming/guides/grafana-dashboard/index.html index 75a222c574c..63a2b82ecc8 100644 --- a/pt/farming/guides/grafana-dashboard/index.html +++ b/pt/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/guides/index.html b/pt/farming/guides/index.html index 11c9d1564d0..d994e93a7e9 100644 --- a/pt/farming/guides/index.html +++ b/pt/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/guides/port-config/index.html b/pt/farming/guides/port-config/index.html index d67fd9aecf9..dc730b408b0 100644 --- a/pt/farming/guides/port-config/index.html +++ b/pt/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/guides/verified-farmer/index.html b/pt/farming/guides/verified-farmer/index.html index 41939a20533..2140f2321b0 100644 --- a/pt/farming/guides/verified-farmer/index.html +++ b/pt/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/intro/index.html b/pt/farming/intro/index.html index 64fc77630ef..3a7df618b18 100644 --- a/pt/farming/intro/index.html +++ b/pt/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/space-acres/install/index.html b/pt/farming/space-acres/install/index.html index 263ecdd271d..32e81208375 100644 --- a/pt/farming/space-acres/install/index.html +++ b/pt/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/space-acres/translate/index.html b/pt/farming/space-acres/translate/index.html index 5c053d7ff7d..9316592b55b 100644 --- a/pt/farming/space-acres/translate/index.html +++ b/pt/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/farming/timekeeper/index.html b/pt/farming/timekeeper/index.html index 1a52cefdd8e..3b9db011f88 100644 --- a/pt/farming/timekeeper/index.html +++ b/pt/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/index.html b/pt/index.html index 125bec41b81..c99edfd5c6d 100644 --- a/pt/index.html +++ b/pt/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/learn/academy/index.html b/pt/learn/academy/index.html index 46982e7aa0a..4af805b9cea 100644 --- a/pt/learn/academy/index.html +++ b/pt/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/learn/intro/index.html b/pt/learn/intro/index.html index e6f5c8e28a3..cd1ef248149 100644 --- a/pt/learn/intro/index.html +++ b/pt/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/learn/security/index.html b/pt/learn/security/index.html index ac841437633..42ce31cfbbf 100644 --- a/pt/learn/security/index.html +++ b/pt/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/markdown-page/index.html b/pt/markdown-page/index.html index 23acf8235b0..d178690302a 100644 --- a/pt/markdown-page/index.html +++ b/pt/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/participate/community/resources/index.html b/pt/participate/community/resources/index.html index 540b7482669..19ccde889a6 100644 --- a/pt/participate/community/resources/index.html +++ b/pt/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/participate/community/tools/index.html b/pt/participate/community/tools/index.html index 1c0cc0ac67c..5d7d9454c03 100644 --- a/pt/participate/community/tools/index.html +++ b/pt/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/participate/contribute/code-of-conduct/index.html b/pt/participate/contribute/code-of-conduct/index.html index 2b6d12075f4..bed69f343b1 100644 --- a/pt/participate/contribute/code-of-conduct/index.html +++ b/pt/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/participate/contribute/intro/index.html b/pt/participate/contribute/intro/index.html index 88b091bc5b8..03fdb652b4a 100644 --- a/pt/participate/contribute/intro/index.html +++ b/pt/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/participate/contribute/translate/index.html b/pt/participate/contribute/translate/index.html index c0ddeab71f3..79bc7481fa8 100644 --- a/pt/participate/contribute/translate/index.html +++ b/pt/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/staking/intro/index.html b/pt/staking/intro/index.html index df01b77e91f..032f22544a2 100644 --- a/pt/staking/intro/index.html +++ b/pt/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/staking/operator/deregister/index.html b/pt/staking/operator/deregister/index.html index 54ef057acff..f253b148f41 100644 --- a/pt/staking/operator/deregister/index.html +++ b/pt/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/staking/operator/register/index.html b/pt/staking/operator/register/index.html index de99d8968a9..1ce009a906e 100644 --- a/pt/staking/operator/register/index.html +++ b/pt/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/staking/operator/tips/index.html b/pt/staking/operator/tips/index.html index 35f44e0b7fa..78c8a6d77e7 100644 --- a/pt/staking/operator/tips/index.html +++ b/pt/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/staking/stake/index.html b/pt/staking/stake/index.html index ea635e359df..4930eacc1bc 100644 --- a/pt/staking/stake/index.html +++ b/pt/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/wallets/polkadot/index.html b/pt/wallets/polkadot/index.html index 283d03a6183..ceda146fc86 100644 --- a/pt/wallets/polkadot/index.html +++ b/pt/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/pt/wallets/subwallet/index.html b/pt/wallets/subwallet/index.html index 7373a4beabd..53b8fc390d7 100644 --- a/pt/wallets/subwallet/index.html +++ b/pt/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/404.html b/ru/404.html index 52829371092..8d2a5368129 100644 --- a/ru/404.html +++ b/ru/404.html @@ -12,7 +12,7 @@ - + diff --git a/ru/assets/js/61081e08.543d4971.js b/ru/assets/js/61081e08.543d4971.js deleted file mode 100644 index 7319833205d..00000000000 --- a/ru/assets/js/61081e08.543d4971.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[1198],{5777:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const o={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","\u0424\u0430\u0440\u043c\u0438\u043d\u0433","GPU"]},a=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/ru/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","\u0424\u0430\u0440\u043c\u0438\u043d\u0433","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/ru/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/ru/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2},{value:"Known Issues",id:"known-issues",level:2}];function h(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.admonition,{title:"Plot Format Compatibility",type:"info",children:(0,r.jsx)(t.p,{children:"GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting."})}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."}),"\n",(0,r.jsx)(t.h2,{id:"known-issues",children:"Known Issues"}),"\n",(0,r.jsx)(t.p,{children:"Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),o=n(205),a=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,a.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,a]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),f=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{f&&a(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);a(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:o}=e;const a=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=a.indexOf(t),s=o[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=a.indexOf(e.currentTarget)+1;t=a[n]??a[0];break}case"ArrowLeft":{const n=a.indexOf(e.currentTarget)-1;t=a[n]??a[a.length-1];break}}t?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:o.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>a.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(y,{...t,...e}),(0,j.jsx)(b,{...t,...e})]})}function w(e){const t=(0,g.A)();return(0,j.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>o});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/ru/assets/js/61081e08.cf2300c0.js b/ru/assets/js/61081e08.cf2300c0.js new file mode 100644 index 00000000000..627b4df4ed0 --- /dev/null +++ b/ru/assets/js/61081e08.cf2300c0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[1198],{5777:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const a={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","\u0424\u0430\u0440\u043c\u0438\u043d\u0433","GPU"]},o=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/ru/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","\u0424\u0430\u0440\u043c\u0438\u043d\u0433","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/ru/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/ru/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2}];function h(e){const t={a:"a",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>A});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),a=n(205),o=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,o.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,o]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),j=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{j&&o(j)}),[j]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const j={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:a}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=o.indexOf(t),s=a[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=o.indexOf(e.currentTarget)+1;t=o[n]??o[0];break}case"ArrowLeft":{const n=o.indexOf(e.currentTarget)-1;t=o[n]??o[o.length-1];break}}t?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:a.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>o.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",j.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,f.jsxs)("div",{className:(0,s.A)("tabs-container",j.tabList),children:[(0,f.jsx)(y,{...t,...e}),(0,f.jsx)(b,{...t,...e})]})}function A(e){const t=(0,g.A)();return(0,f.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>a});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/ru/assets/js/runtime~main.412fd006.js b/ru/assets/js/runtime~main.aa673264.js similarity index 98% rename from ru/assets/js/runtime~main.412fd006.js rename to ru/assets/js/runtime~main.aa673264.js index cb9c4d2b32d..22f32b20659 100644 --- a/ru/assets/js/runtime~main.412fd006.js +++ b/ru/assets/js/runtime~main.aa673264.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,f,t,r,c={},d={};function b(e){var a=d[e];if(void 0!==a)return a.exports;var f=d[e]={exports:{}};return c[e].call(f.exports,f,f.exports,b),f.exports}b.m=c,e=[],b.O=(a,f,t,r)=>{if(!f){var c=1/0;for(i=0;i=r)&&Object.keys(b.O).every((e=>b.O[e](f[o])))?f.splice(o--,1):(d=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[f,t,r]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);b.r(r);var c={};a=a||[null,f({}),f([]),f(f)];for(var d=2&t&&e;"object"==typeof d&&!~a.indexOf(d);d=f(d))Object.getOwnPropertyNames(d).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,b.d(r,c),r},b.d=(e,a)=>{for(var f in a)b.o(a,f)&&!b.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,f)=>(b.f[f](e,a),a)),[])),b.u=e=>"assets/js/"+({424:"61b72a4f",851:"4458a2cc",1198:"61081e08",1235:"a7456010",1553:"05f1f583",1691:"33c34aef",1859:"512d1af8",1943:"5e15f349",2140:"8cd477c7",2182:"c9ca25f4",2200:"c7600f05",2293:"bf9b84be",2777:"eaff6b9c",3152:"433a472a",3202:"0d3247af",3666:"cc45e43d",3823:"02d29b2c",3981:"4f82117e",4134:"393be207",4583:"1df93b7f",4597:"a71f73c8",5201:"b97121f8",5411:"72f7af25",5595:"05b207c3",5708:"2473ba88",5742:"aba21aa0",5754:"0251ce05",5785:"732050b7",5846:"8a1afe01",5877:"d3fdf294",5970:"3fa1e241",6044:"57277292",6061:"1f391b9e",6136:"2042b144",6362:"c70bea9c",6489:"ff0f93f2",6572:"b017f7b6",6778:"26f2c332",6969:"14eb3368",7098:"a7bd4aaa",7209:"51c87769",7551:"7d41149d",7572:"445a0557",7800:"850b921f",7908:"e2a7c902",8131:"9bd3b2e9",8192:"a137a47a",8401:"17896441",8580:"2d3f6a1f",8782:"54d19b4f",8795:"282263a0",9048:"a94703ab",9428:"130d6463",9546:"75fddfde",9555:"91e90fdf",9647:"5e95c892",9865:"3b0f362f",9870:"a1b3d0db"}[e]||e)+"."+{424:"824590af",851:"111179b7",1198:"543d4971",1235:"deb810c9",1553:"9d72c211",1688:"af0e6f17",1691:"ea6566d2",1859:"59256591",1943:"0334aaf0",2140:"cf9536f7",2182:"5af71d2b",2200:"af66f0a2",2237:"c851d8b1",2293:"1abf2001",2440:"ecd0621f",2777:"dd21b80c",3152:"500130e2",3202:"16c2828c",3666:"a63c1ed7",3823:"4c5db1be",3981:"5576c998",4134:"1210bb98",4324:"fec3e18f",4583:"c0d080f8",4597:"ff7a09c1",5049:"7f13b97c",5201:"0aa544ec",5394:"83d77ce3",5411:"516efe01",5595:"0ef3b605",5708:"055eebb7",5742:"08d6695f",5754:"88c796e3",5785:"493c290a",5846:"18c901ad",5877:"fa510cc0",5970:"5d3a521b",6044:"1a3e5efa",6061:"fc18f174",6136:"fd5b54e7",6362:"2fbd8780",6489:"1e152763",6572:"7e501377",6688:"86f0bb7d",6778:"e6a1ad1a",6969:"fa836339",7098:"c4e87eeb",7209:"71dddd16",7551:"12ab02c1",7572:"c8d0221f",7800:"a22a5331",7908:"59930ec4",8131:"66d36f84",8192:"2fc3e7ab",8401:"d04d0920",8580:"3332bffd",8782:"a9ac1557",8795:"cad5bc14",8913:"0680f2c1",9048:"3a629456",9428:"d35db6dd",9462:"be2eb63e",9546:"9595b2fe",9555:"5e136092",9647:"e4c313e0",9865:"6b37859f",9870:"bee3abdd"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="portal:",b.l=(e,a,f,c)=>{if(t[e])t[e].push(a);else{var d,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{d.onerror=d.onload=null,clearTimeout(s);var r=t[e];if(delete t[e],d.parentNode&&d.parentNode.removeChild(d),r&&r.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=l.bind(null,d.onerror),d.onload=l.bind(null,d.onload),o&&document.head.appendChild(d)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/ru/",b.gca=function(e){return e={17896441:"8401",57277292:"6044","61b72a4f":"424","4458a2cc":"851","61081e08":"1198",a7456010:"1235","05f1f583":"1553","33c34aef":"1691","512d1af8":"1859","5e15f349":"1943","8cd477c7":"2140",c9ca25f4:"2182",c7600f05:"2200",bf9b84be:"2293",eaff6b9c:"2777","433a472a":"3152","0d3247af":"3202",cc45e43d:"3666","02d29b2c":"3823","4f82117e":"3981","393be207":"4134","1df93b7f":"4583",a71f73c8:"4597",b97121f8:"5201","72f7af25":"5411","05b207c3":"5595","2473ba88":"5708",aba21aa0:"5742","0251ce05":"5754","732050b7":"5785","8a1afe01":"5846",d3fdf294:"5877","3fa1e241":"5970","1f391b9e":"6061","2042b144":"6136",c70bea9c:"6362",ff0f93f2:"6489",b017f7b6:"6572","26f2c332":"6778","14eb3368":"6969",a7bd4aaa:"7098","51c87769":"7209","7d41149d":"7551","445a0557":"7572","850b921f":"7800",e2a7c902:"7908","9bd3b2e9":"8131",a137a47a:"8192","2d3f6a1f":"8580","54d19b4f":"8782","282263a0":"8795",a94703ab:"9048","130d6463":"9428","75fddfde":"9546","91e90fdf":"9555","5e95c892":"9647","3b0f362f":"9865",a1b3d0db:"9870"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,f)=>{var t=b.o(e,a)?e[a]:void 0;if(0!==t)if(t)f.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var r=new Promise(((f,r)=>t=e[a]=[f,r]));f.push(t[2]=r);var c=b.p+b.u(a),d=new Error;b.l(c,(f=>{if(b.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=f&&("load"===f.type?"missing":f.type),c=f&&f.target&&f.target.src;d.message="Loading chunk "+a+" failed.\n("+r+": "+c+")",d.name="ChunkLoadError",d.type=r,d.request=c,t[1](d)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,f)=>{var t,r,c=f[0],d=f[1],o=f[2],n=0;if(c.some((a=>0!==e[a]))){for(t in d)b.o(d,t)&&(b.m[t]=d[t]);if(o)var i=o(b)}for(a&&a(f);n{"use strict";var e,a,f,t,r,c={},d={};function b(e){var a=d[e];if(void 0!==a)return a.exports;var f=d[e]={exports:{}};return c[e].call(f.exports,f,f.exports,b),f.exports}b.m=c,e=[],b.O=(a,f,t,r)=>{if(!f){var c=1/0;for(i=0;i=r)&&Object.keys(b.O).every((e=>b.O[e](f[o])))?f.splice(o--,1):(d=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[f,t,r]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);b.r(r);var c={};a=a||[null,f({}),f([]),f(f)];for(var d=2&t&&e;"object"==typeof d&&!~a.indexOf(d);d=f(d))Object.getOwnPropertyNames(d).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,b.d(r,c),r},b.d=(e,a)=>{for(var f in a)b.o(a,f)&&!b.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,f)=>(b.f[f](e,a),a)),[])),b.u=e=>"assets/js/"+({424:"61b72a4f",851:"4458a2cc",1198:"61081e08",1235:"a7456010",1553:"05f1f583",1691:"33c34aef",1859:"512d1af8",1943:"5e15f349",2140:"8cd477c7",2182:"c9ca25f4",2200:"c7600f05",2293:"bf9b84be",2777:"eaff6b9c",3152:"433a472a",3202:"0d3247af",3666:"cc45e43d",3823:"02d29b2c",3981:"4f82117e",4134:"393be207",4583:"1df93b7f",4597:"a71f73c8",5201:"b97121f8",5411:"72f7af25",5595:"05b207c3",5708:"2473ba88",5742:"aba21aa0",5754:"0251ce05",5785:"732050b7",5846:"8a1afe01",5877:"d3fdf294",5970:"3fa1e241",6044:"57277292",6061:"1f391b9e",6136:"2042b144",6362:"c70bea9c",6489:"ff0f93f2",6572:"b017f7b6",6778:"26f2c332",6969:"14eb3368",7098:"a7bd4aaa",7209:"51c87769",7551:"7d41149d",7572:"445a0557",7800:"850b921f",7908:"e2a7c902",8131:"9bd3b2e9",8192:"a137a47a",8401:"17896441",8580:"2d3f6a1f",8782:"54d19b4f",8795:"282263a0",9048:"a94703ab",9428:"130d6463",9546:"75fddfde",9555:"91e90fdf",9647:"5e95c892",9865:"3b0f362f",9870:"a1b3d0db"}[e]||e)+"."+{424:"824590af",851:"111179b7",1198:"cf2300c0",1235:"deb810c9",1553:"9d72c211",1688:"af0e6f17",1691:"ea6566d2",1859:"59256591",1943:"0334aaf0",2140:"cf9536f7",2182:"5af71d2b",2200:"af66f0a2",2237:"c851d8b1",2293:"1abf2001",2440:"ecd0621f",2777:"dd21b80c",3152:"500130e2",3202:"16c2828c",3666:"a63c1ed7",3823:"4c5db1be",3981:"5576c998",4134:"1210bb98",4324:"fec3e18f",4583:"c0d080f8",4597:"ff7a09c1",5049:"7f13b97c",5201:"0aa544ec",5394:"83d77ce3",5411:"516efe01",5595:"0ef3b605",5708:"055eebb7",5742:"08d6695f",5754:"88c796e3",5785:"493c290a",5846:"18c901ad",5877:"fa510cc0",5970:"5d3a521b",6044:"1a3e5efa",6061:"fc18f174",6136:"fd5b54e7",6362:"2fbd8780",6489:"1e152763",6572:"7e501377",6688:"86f0bb7d",6778:"e6a1ad1a",6969:"fa836339",7098:"c4e87eeb",7209:"71dddd16",7551:"12ab02c1",7572:"c8d0221f",7800:"a22a5331",7908:"59930ec4",8131:"66d36f84",8192:"2fc3e7ab",8401:"d04d0920",8580:"3332bffd",8782:"a9ac1557",8795:"cad5bc14",8913:"0680f2c1",9048:"3a629456",9428:"d35db6dd",9462:"be2eb63e",9546:"9595b2fe",9555:"5e136092",9647:"e4c313e0",9865:"6b37859f",9870:"bee3abdd"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="portal:",b.l=(e,a,f,c)=>{if(t[e])t[e].push(a);else{var d,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{d.onerror=d.onload=null,clearTimeout(s);var r=t[e];if(delete t[e],d.parentNode&&d.parentNode.removeChild(d),r&&r.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=l.bind(null,d.onerror),d.onload=l.bind(null,d.onload),o&&document.head.appendChild(d)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/ru/",b.gca=function(e){return e={17896441:"8401",57277292:"6044","61b72a4f":"424","4458a2cc":"851","61081e08":"1198",a7456010:"1235","05f1f583":"1553","33c34aef":"1691","512d1af8":"1859","5e15f349":"1943","8cd477c7":"2140",c9ca25f4:"2182",c7600f05:"2200",bf9b84be:"2293",eaff6b9c:"2777","433a472a":"3152","0d3247af":"3202",cc45e43d:"3666","02d29b2c":"3823","4f82117e":"3981","393be207":"4134","1df93b7f":"4583",a71f73c8:"4597",b97121f8:"5201","72f7af25":"5411","05b207c3":"5595","2473ba88":"5708",aba21aa0:"5742","0251ce05":"5754","732050b7":"5785","8a1afe01":"5846",d3fdf294:"5877","3fa1e241":"5970","1f391b9e":"6061","2042b144":"6136",c70bea9c:"6362",ff0f93f2:"6489",b017f7b6:"6572","26f2c332":"6778","14eb3368":"6969",a7bd4aaa:"7098","51c87769":"7209","7d41149d":"7551","445a0557":"7572","850b921f":"7800",e2a7c902:"7908","9bd3b2e9":"8131",a137a47a:"8192","2d3f6a1f":"8580","54d19b4f":"8782","282263a0":"8795",a94703ab:"9048","130d6463":"9428","75fddfde":"9546","91e90fdf":"9555","5e95c892":"9647","3b0f362f":"9865",a1b3d0db:"9870"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,f)=>{var t=b.o(e,a)?e[a]:void 0;if(0!==t)if(t)f.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var r=new Promise(((f,r)=>t=e[a]=[f,r]));f.push(t[2]=r);var c=b.p+b.u(a),d=new Error;b.l(c,(f=>{if(b.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=f&&("load"===f.type?"missing":f.type),c=f&&f.target&&f.target.src;d.message="Loading chunk "+a+" failed.\n("+r+": "+c+")",d.name="ChunkLoadError",d.type=r,d.request=c,t[1](d)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,f)=>{var t,r,c=f[0],d=f[1],o=f[2],n=0;if(c.some((a=>0!==e[a]))){for(t in d)b.o(d,t)&&(b.m[t]=d[t]);if(o)var i=o(b)}for(a&&a(f);n - + diff --git a/ru/develop/auto-sdk/auto-id/index.html b/ru/develop/auto-sdk/auto-id/index.html index ce7ee65ad32..2c837d960d7 100644 --- a/ru/develop/auto-sdk/auto-id/index.html +++ b/ru/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/auto-sdk/consensus/index.html b/ru/develop/auto-sdk/consensus/index.html index 0f9569f3a71..83ad386a4e2 100644 --- a/ru/develop/auto-sdk/consensus/index.html +++ b/ru/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/auto-sdk/drive/index.html b/ru/develop/auto-sdk/drive/index.html index 34ee4fe62d6..810f405162f 100644 --- a/ru/develop/auto-sdk/drive/index.html +++ b/ru/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/auto-sdk/index.html b/ru/develop/auto-sdk/index.html index 9d3302bc09d..ce86e86a44e 100644 --- a/ru/develop/auto-sdk/index.html +++ b/ru/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/auto-sdk/intro/index.html b/ru/develop/auto-sdk/intro/index.html index 2f9294dd1dc..8463ad28248 100644 --- a/ru/develop/auto-sdk/intro/index.html +++ b/ru/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/auto-sdk/utils/index.html b/ru/develop/auto-sdk/utils/index.html index e4f0eb1effc..33b84c44c74 100644 --- a/ru/develop/auto-sdk/utils/index.html +++ b/ru/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/auto-sdk/xdm/index.html b/ru/develop/auto-sdk/xdm/index.html index ad60fa194e3..342e3d283e8 100644 --- a/ru/develop/auto-sdk/xdm/index.html +++ b/ru/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/intro/index.html b/ru/develop/intro/index.html index 7613c4ad451..4d133aac662 100644 --- a/ru/develop/intro/index.html +++ b/ru/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/nova/block-explorer/index.html b/ru/develop/nova/block-explorer/index.html index 57a08561664..25296113080 100644 --- a/ru/develop/nova/block-explorer/index.html +++ b/ru/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/nova/faucet/index.html b/ru/develop/nova/faucet/index.html index 51a2c388fcf..38594bf0d22 100644 --- a/ru/develop/nova/faucet/index.html +++ b/ru/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/nova/general/index.html b/ru/develop/nova/general/index.html index 5c441017f5b..cc18b12aa31 100644 --- a/ru/develop/nova/general/index.html +++ b/ru/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/nova/guides/foundry/index.html b/ru/develop/nova/guides/foundry/index.html index 8bdd385ef3f..d8ddeea91c0 100644 --- a/ru/develop/nova/guides/foundry/index.html +++ b/ru/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/nova/guides/hardhat/index.html b/ru/develop/nova/guides/hardhat/index.html index 477957e8666..a5ff6253a2f 100644 --- a/ru/develop/nova/guides/hardhat/index.html +++ b/ru/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/nova/guides/local-development/index.html b/ru/develop/nova/guides/local-development/index.html index 52fba498efe..030bcd3c4c4 100644 --- a/ru/develop/nova/guides/local-development/index.html +++ b/ru/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/nova/guides/remix/index.html b/ru/develop/nova/guides/remix/index.html index e228713d9be..510e59caa58 100644 --- a/ru/develop/nova/guides/remix/index.html +++ b/ru/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/nova/index.html b/ru/develop/nova/index.html index c745f074e5c..5b166e69759 100644 --- a/ru/develop/nova/index.html +++ b/ru/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/nova/introduction/index.html b/ru/develop/nova/introduction/index.html index 6ac96dc30fe..8d5515a0433 100644 --- a/ru/develop/nova/introduction/index.html +++ b/ru/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/develop/nova/metamask/index.html b/ru/develop/nova/metamask/index.html index 7ca46c0e30e..9e955e03257 100644 --- a/ru/develop/nova/metamask/index.html +++ b/ru/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/advanced-cli/cluster/index.html b/ru/farming/advanced-cli/cluster/index.html index 9fcc73eba1e..d494bdf4448 100644 --- a/ru/farming/advanced-cli/cluster/index.html +++ b/ru/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/advanced-cli/install/index.html b/ru/farming/advanced-cli/install/index.html index 2cf21ef79c7..55fa990eb90 100644 --- a/ru/farming/advanced-cli/install/index.html +++ b/ru/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/advanced-cli/tips/index.html b/ru/farming/advanced-cli/tips/index.html index b35aa14571e..1207efcc6ae 100644 --- a/ru/farming/advanced-cli/tips/index.html +++ b/ru/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/common-problems/index.html b/ru/farming/common-problems/index.html index ce15639688e..bca723e9d89 100644 --- a/ru/farming/common-problems/index.html +++ b/ru/farming/common-problems/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/guides/gpu-plotter/index.html b/ru/farming/guides/gpu-plotter/index.html index 6f2ba48a0f3..01e2bd77273 100644 --- a/ru/farming/guides/gpu-plotter/index.html +++ b/ru/farming/guides/gpu-plotter/index.html @@ -12,14 +12,13 @@ - +

GPU Plotter

Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck.

Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed.

Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU.

-
Plot Format Compatibility

GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting.

Platform Compatibility

Platform🐧 Linux🪟 WindowsNvidiaAMDIntel
Advanced CLI🛠️🔮
Space Acres🔜🔮

🛠️ Limited AMD Support for Linux only is available in recent test builds. The most recent test builds are linked on the forum

See Discord farmer-chat channel for limited support.

@@ -59,8 +58,6 @@

C

Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): --cuda-gpus <gpu_ids>

--cuda-gpus 0,1,3

Farming Cluster

-

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

-

Known Issues

-

Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine.

+

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

\ No newline at end of file diff --git a/ru/farming/guides/grafana-dashboard/index.html b/ru/farming/guides/grafana-dashboard/index.html index 766f72b7089..12c2a405d26 100644 --- a/ru/farming/guides/grafana-dashboard/index.html +++ b/ru/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/guides/index.html b/ru/farming/guides/index.html index a6956bb5c2a..432ddba4cad 100644 --- a/ru/farming/guides/index.html +++ b/ru/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/guides/port-config/index.html b/ru/farming/guides/port-config/index.html index ed3e1cd1124..48b007f44c9 100644 --- a/ru/farming/guides/port-config/index.html +++ b/ru/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/guides/verified-farmer/index.html b/ru/farming/guides/verified-farmer/index.html index dee9a9d3955..59e6984fbe1 100644 --- a/ru/farming/guides/verified-farmer/index.html +++ b/ru/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/intro/index.html b/ru/farming/intro/index.html index b8e3d82872b..6697587608f 100644 --- a/ru/farming/intro/index.html +++ b/ru/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/space-acres/install/index.html b/ru/farming/space-acres/install/index.html index 0f1a16a5269..74c3b41fcd8 100644 --- a/ru/farming/space-acres/install/index.html +++ b/ru/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/space-acres/translate/index.html b/ru/farming/space-acres/translate/index.html index 06f83960fec..a6bbbce5392 100644 --- a/ru/farming/space-acres/translate/index.html +++ b/ru/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/farming/timekeeper/index.html b/ru/farming/timekeeper/index.html index f6cd896ede1..a1800b12c58 100644 --- a/ru/farming/timekeeper/index.html +++ b/ru/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/index.html b/ru/index.html index 78326c04255..1596fd7a656 100644 --- a/ru/index.html +++ b/ru/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/learn/academy/index.html b/ru/learn/academy/index.html index fb4eaecfa2a..7080975bcc8 100644 --- a/ru/learn/academy/index.html +++ b/ru/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/learn/intro/index.html b/ru/learn/intro/index.html index 07deb54f533..9479baa6a6d 100644 --- a/ru/learn/intro/index.html +++ b/ru/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/learn/security/index.html b/ru/learn/security/index.html index 8e8b22fdb3d..14d3c8cff68 100644 --- a/ru/learn/security/index.html +++ b/ru/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/markdown-page/index.html b/ru/markdown-page/index.html index 8b11a167416..16a7042d8a7 100644 --- a/ru/markdown-page/index.html +++ b/ru/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/participate/community/resources/index.html b/ru/participate/community/resources/index.html index 3a534d899e4..5abac6181c7 100644 --- a/ru/participate/community/resources/index.html +++ b/ru/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/participate/community/tools/index.html b/ru/participate/community/tools/index.html index 9fc68a68b23..3993c687676 100644 --- a/ru/participate/community/tools/index.html +++ b/ru/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/participate/contribute/code-of-conduct/index.html b/ru/participate/contribute/code-of-conduct/index.html index db549a40f4f..49f0d268f71 100644 --- a/ru/participate/contribute/code-of-conduct/index.html +++ b/ru/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/participate/contribute/intro/index.html b/ru/participate/contribute/intro/index.html index 17a8422c35b..67a1cbb1605 100644 --- a/ru/participate/contribute/intro/index.html +++ b/ru/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/participate/contribute/translate/index.html b/ru/participate/contribute/translate/index.html index b9af4a3b190..bf995819bdd 100644 --- a/ru/participate/contribute/translate/index.html +++ b/ru/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/staking/intro/index.html b/ru/staking/intro/index.html index 706d560f6e8..1e93289b010 100644 --- a/ru/staking/intro/index.html +++ b/ru/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/staking/operator/deregister/index.html b/ru/staking/operator/deregister/index.html index 2f8263d961d..efb58a495f3 100644 --- a/ru/staking/operator/deregister/index.html +++ b/ru/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/staking/operator/register/index.html b/ru/staking/operator/register/index.html index a42b62088af..d365840f6ad 100644 --- a/ru/staking/operator/register/index.html +++ b/ru/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/staking/operator/tips/index.html b/ru/staking/operator/tips/index.html index b548ed4c6e4..0c60785239d 100644 --- a/ru/staking/operator/tips/index.html +++ b/ru/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/staking/stake/index.html b/ru/staking/stake/index.html index f4ff198db63..fbbe13ec416 100644 --- a/ru/staking/stake/index.html +++ b/ru/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/wallets/polkadot/index.html b/ru/wallets/polkadot/index.html index 87980f2469b..0c0bdb9886a 100644 --- a/ru/wallets/polkadot/index.html +++ b/ru/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/ru/wallets/subwallet/index.html b/ru/wallets/subwallet/index.html index b313bcb08ee..81bfbbb18a3 100644 --- a/ru/wallets/subwallet/index.html +++ b/ru/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/staking/intro/index.html b/staking/intro/index.html index 75b225891aa..8b8b7fe85c2 100644 --- a/staking/intro/index.html +++ b/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/staking/operator/deregister/index.html b/staking/operator/deregister/index.html index 52f134752a3..51c797fdee0 100644 --- a/staking/operator/deregister/index.html +++ b/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/staking/operator/register/index.html b/staking/operator/register/index.html index 7eda90e131e..6c13aebd5e5 100644 --- a/staking/operator/register/index.html +++ b/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + diff --git a/staking/operator/tips/index.html b/staking/operator/tips/index.html index 1c273983e2c..b29bc9ddad0 100644 --- a/staking/operator/tips/index.html +++ b/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/staking/stake/index.html b/staking/stake/index.html index 0271468adf2..1aa3870bef4 100644 --- a/staking/stake/index.html +++ b/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/404.html b/tr/404.html index 46d2911ddcb..dc77c5d24a1 100644 --- a/tr/404.html +++ b/tr/404.html @@ -12,7 +12,7 @@ - + diff --git a/tr/assets/js/ec89d9cb.31185c31.js b/tr/assets/js/ec89d9cb.31185c31.js deleted file mode 100644 index 7d8d5c57b31..00000000000 --- a/tr/assets/js/ec89d9cb.31185c31.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[6528],{6742:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const o={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},a=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/tr/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/tr/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/tr/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/tr/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2},{value:"Known Issues",id:"known-issues",level:2}];function h(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.admonition,{title:"Plot Format Compatibility",type:"info",children:(0,r.jsx)(t.p,{children:"GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting."})}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."}),"\n",(0,r.jsx)(t.h2,{id:"known-issues",children:"Known Issues"}),"\n",(0,r.jsx)(t.p,{children:"Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),o=n(205),a=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,a.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,a]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),f=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{f&&a(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);a(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:o}=e;const a=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=a.indexOf(t),s=o[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=a.indexOf(e.currentTarget)+1;t=a[n]??a[0];break}case"ArrowLeft":{const n=a.indexOf(e.currentTarget)-1;t=a[n]??a[a.length-1];break}}t?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:o.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>a.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(y,{...t,...e}),(0,j.jsx)(b,{...t,...e})]})}function w(e){const t=(0,g.A)();return(0,j.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>o});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/tr/assets/js/ec89d9cb.dfac7ef6.js b/tr/assets/js/ec89d9cb.dfac7ef6.js new file mode 100644 index 00000000000..6d4e4d6d38a --- /dev/null +++ b/tr/assets/js/ec89d9cb.dfac7ef6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[6528],{6742:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const a={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},o=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/tr/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/tr/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/tr/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/tr/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2}];function h(e){const t={a:"a",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>A});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),a=n(205),o=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,o.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,o]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),j=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{j&&o(j)}),[j]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const j={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:a}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=o.indexOf(t),s=a[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=o.indexOf(e.currentTarget)+1;t=o[n]??o[0];break}case"ArrowLeft":{const n=o.indexOf(e.currentTarget)-1;t=o[n]??o[o.length-1];break}}t?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:a.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>o.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",j.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,f.jsxs)("div",{className:(0,s.A)("tabs-container",j.tabList),children:[(0,f.jsx)(y,{...t,...e}),(0,f.jsx)(b,{...t,...e})]})}function A(e){const t=(0,g.A)();return(0,f.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>a});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/tr/assets/js/runtime~main.8ba90f51.js b/tr/assets/js/runtime~main.953e62a6.js similarity index 61% rename from tr/assets/js/runtime~main.8ba90f51.js rename to tr/assets/js/runtime~main.953e62a6.js index 9ae413511e0..59a283aa5ec 100644 --- a/tr/assets/js/runtime~main.8ba90f51.js +++ b/tr/assets/js/runtime~main.953e62a6.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,d,c,t,r={},b={};function f(e){var a=b[e];if(void 0!==a)return a.exports;var d=b[e]={exports:{}};return r[e].call(d.exports,d,d.exports,f),d.exports}f.m=r,e=[],f.O=(a,d,c,t)=>{if(!d){var r=1/0;for(i=0;i=t)&&Object.keys(f.O).every((e=>f.O[e](d[o])))?d.splice(o--,1):(b=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[d,c,t]},f.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return f.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,f.t=function(e,c){if(1&c&&(e=this(e)),8&c)return e;if("object"==typeof e&&e){if(4&c&&e.__esModule)return e;if(16&c&&"function"==typeof e.then)return e}var t=Object.create(null);f.r(t);var r={};a=a||[null,d({}),d([]),d(d)];for(var b=2&c&&e;"object"==typeof b&&!~a.indexOf(b);b=d(b))Object.getOwnPropertyNames(b).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,f.d(t,r),t},f.d=(e,a)=>{for(var d in a)f.o(a,d)&&!f.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},f.f={},f.e=e=>Promise.all(Object.keys(f.f).reduce(((a,d)=>(f.f[d](e,a),a)),[])),f.u=e=>"assets/js/"+({12:"a5e127bd",324:"444dc468",332:"b50c87ca",345:"9023f226",370:"69a72439",409:"a3155b63",816:"02bba059",1149:"49b42b0a",1235:"a7456010",1286:"f87a3994",1418:"3a335aa6",1793:"bba291c8",1848:"c5b905bc",2185:"a8f1e931",2192:"c4039060",2203:"04efe389",2292:"d04d88f1",2358:"d7d47906",2414:"5756093d",2504:"09a97d9f",2663:"6382dfab",2807:"635927bd",2825:"5afabbf9",3367:"1a3c65c2",3459:"5be21e1a",3858:"4d3cd331",3901:"246091ec",3950:"832964be",4134:"393be207",4370:"a89db542",4583:"1df93b7f",4803:"24d220e5",4867:"e32b50cf",4941:"160a9306",5128:"e0fa42ef",5742:"aba21aa0",6061:"1f391b9e",6223:"cea7c09f",6373:"77aec7ce",6528:"ec89d9cb",6641:"1391411b",6681:"8588055a",6969:"14eb3368",7098:"a7bd4aaa",7150:"5ae429dc",7770:"050ac6c3",7874:"b73a2dd2",8327:"e0e7ce18",8401:"17896441",8551:"a0ac26cb",8691:"697287e4",8697:"24097f46",8700:"d4b03563",8952:"883d1c2d",9048:"a94703ab",9647:"5e95c892",9699:"6b90254d",9915:"8feb2d16"}[e]||e)+"."+{12:"9c37a54e",324:"9ebd113a",332:"60c5ecbe",345:"a60937be",370:"39541d2c",409:"65806211",816:"3d9ee89b",1149:"f2efb5e4",1235:"deb810c9",1286:"fe1e964b",1418:"d7deb572",1688:"af0e6f17",1793:"fff0f099",1848:"17bf1ff9",2185:"e55a16be",2192:"3bd83140",2203:"2a8f0c84",2237:"c851d8b1",2292:"09cd3a63",2358:"65006e1a",2414:"88e7155b",2440:"ecd0621f",2504:"e7edc32e",2663:"e7eb4842",2807:"045c296e",2825:"04ba048e",3367:"3effb74d",3459:"d20c310c",3858:"cafed268",3901:"1ca9878a",3950:"58b9ecf3",4134:"aae4d436",4324:"fec3e18f",4370:"ea68d38b",4583:"c0d080f8",4803:"bb56fbda",4867:"40ef2592",4941:"ada8d4db",5049:"7f13b97c",5128:"a8261f51",5394:"83d77ce3",5742:"08d6695f",6061:"fc18f174",6223:"448ce428",6373:"8bc78e97",6528:"31185c31",6641:"73799eb5",6681:"d0f126da",6688:"86f0bb7d",6969:"4f11b87f",7098:"c4e87eeb",7150:"f6c26f5b",7770:"8f2fd0a8",7874:"d25bae0c",8327:"9d2a0498",8401:"3769c7ca",8551:"4bac690c",8691:"c97cef5e",8697:"b8e753d5",8700:"eccbfe7e",8913:"0680f2c1",8952:"0230818c",9048:"3a629456",9462:"be2eb63e",9647:"e4c313e0",9699:"b2419598",9915:"0f8f1a36"}[e]+".js",f.miniCssF=e=>{},f.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),f.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),c={},t="portal:",f.l=(e,a,d,r)=>{if(c[e])c[e].push(a);else{var b,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{b.onerror=b.onload=null,clearTimeout(s);var t=c[e];if(delete c[e],b.parentNode&&b.parentNode.removeChild(b),t&&t.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:b}),12e4);b.onerror=l.bind(null,b.onerror),b.onload=l.bind(null,b.onload),o&&document.head.appendChild(b)}},f.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.p="/tr/",f.gca=function(e){return e={17896441:"8401",a5e127bd:"12","444dc468":"324",b50c87ca:"332","9023f226":"345","69a72439":"370",a3155b63:"409","02bba059":"816","49b42b0a":"1149",a7456010:"1235",f87a3994:"1286","3a335aa6":"1418",bba291c8:"1793",c5b905bc:"1848",a8f1e931:"2185",c4039060:"2192","04efe389":"2203",d04d88f1:"2292",d7d47906:"2358","5756093d":"2414","09a97d9f":"2504","6382dfab":"2663","635927bd":"2807","5afabbf9":"2825","1a3c65c2":"3367","5be21e1a":"3459","4d3cd331":"3858","246091ec":"3901","832964be":"3950","393be207":"4134",a89db542:"4370","1df93b7f":"4583","24d220e5":"4803",e32b50cf:"4867","160a9306":"4941",e0fa42ef:"5128",aba21aa0:"5742","1f391b9e":"6061",cea7c09f:"6223","77aec7ce":"6373",ec89d9cb:"6528","1391411b":"6641","8588055a":"6681","14eb3368":"6969",a7bd4aaa:"7098","5ae429dc":"7150","050ac6c3":"7770",b73a2dd2:"7874",e0e7ce18:"8327",a0ac26cb:"8551","697287e4":"8691","24097f46":"8697",d4b03563:"8700","883d1c2d":"8952",a94703ab:"9048","5e95c892":"9647","6b90254d":"9699","8feb2d16":"9915"}[e]||e,f.p+f.u(e)},(()=>{var e={5354:0,1869:0};f.f.j=(a,d)=>{var c=f.o(e,a)?e[a]:void 0;if(0!==c)if(c)d.push(c[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((d,t)=>c=e[a]=[d,t]));d.push(c[2]=t);var r=f.p+f.u(a),b=new Error;f.l(r,(d=>{if(f.o(e,a)&&(0!==(c=e[a])&&(e[a]=void 0),c)){var t=d&&("load"===d.type?"missing":d.type),r=d&&d.target&&d.target.src;b.message="Loading chunk "+a+" failed.\n("+t+": "+r+")",b.name="ChunkLoadError",b.type=t,b.request=r,c[1](b)}}),"chunk-"+a,a)}},f.O.j=a=>0===e[a];var a=(a,d)=>{var c,t,r=d[0],b=d[1],o=d[2],n=0;if(r.some((a=>0!==e[a]))){for(c in b)f.o(b,c)&&(f.m[c]=b[c]);if(o)var i=o(f)}for(a&&a(d);n{"use strict";var e,a,c,d,t,r={},b={};function f(e){var a=b[e];if(void 0!==a)return a.exports;var c=b[e]={exports:{}};return r[e].call(c.exports,c,c.exports,f),c.exports}f.m=r,e=[],f.O=(a,c,d,t)=>{if(!c){var r=1/0;for(i=0;i=t)&&Object.keys(f.O).every((e=>f.O[e](c[o])))?c.splice(o--,1):(b=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[c,d,t]},f.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return f.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,f.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var t=Object.create(null);f.r(t);var r={};a=a||[null,c({}),c([]),c(c)];for(var b=2&d&&e;"object"==typeof b&&!~a.indexOf(b);b=c(b))Object.getOwnPropertyNames(b).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,f.d(t,r),t},f.d=(e,a)=>{for(var c in a)f.o(a,c)&&!f.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},f.f={},f.e=e=>Promise.all(Object.keys(f.f).reduce(((a,c)=>(f.f[c](e,a),a)),[])),f.u=e=>"assets/js/"+({12:"a5e127bd",324:"444dc468",332:"b50c87ca",345:"9023f226",370:"69a72439",409:"a3155b63",816:"02bba059",1149:"49b42b0a",1235:"a7456010",1286:"f87a3994",1418:"3a335aa6",1793:"bba291c8",1848:"c5b905bc",2185:"a8f1e931",2192:"c4039060",2203:"04efe389",2292:"d04d88f1",2358:"d7d47906",2414:"5756093d",2504:"09a97d9f",2663:"6382dfab",2807:"635927bd",2825:"5afabbf9",3367:"1a3c65c2",3459:"5be21e1a",3858:"4d3cd331",3901:"246091ec",3950:"832964be",4134:"393be207",4370:"a89db542",4583:"1df93b7f",4803:"24d220e5",4867:"e32b50cf",4941:"160a9306",5128:"e0fa42ef",5742:"aba21aa0",6061:"1f391b9e",6223:"cea7c09f",6373:"77aec7ce",6528:"ec89d9cb",6641:"1391411b",6681:"8588055a",6969:"14eb3368",7098:"a7bd4aaa",7150:"5ae429dc",7770:"050ac6c3",7874:"b73a2dd2",8327:"e0e7ce18",8401:"17896441",8551:"a0ac26cb",8691:"697287e4",8697:"24097f46",8700:"d4b03563",8952:"883d1c2d",9048:"a94703ab",9647:"5e95c892",9699:"6b90254d",9915:"8feb2d16"}[e]||e)+"."+{12:"9c37a54e",324:"9ebd113a",332:"60c5ecbe",345:"a60937be",370:"39541d2c",409:"65806211",816:"3d9ee89b",1149:"f2efb5e4",1235:"deb810c9",1286:"fe1e964b",1418:"d7deb572",1688:"af0e6f17",1793:"fff0f099",1848:"17bf1ff9",2185:"e55a16be",2192:"3bd83140",2203:"2a8f0c84",2237:"c851d8b1",2292:"09cd3a63",2358:"65006e1a",2414:"88e7155b",2440:"ecd0621f",2504:"e7edc32e",2663:"e7eb4842",2807:"045c296e",2825:"04ba048e",3367:"3effb74d",3459:"d20c310c",3858:"cafed268",3901:"1ca9878a",3950:"58b9ecf3",4134:"aae4d436",4324:"fec3e18f",4370:"ea68d38b",4583:"c0d080f8",4803:"bb56fbda",4867:"40ef2592",4941:"ada8d4db",5049:"7f13b97c",5128:"a8261f51",5394:"83d77ce3",5742:"08d6695f",6061:"fc18f174",6223:"448ce428",6373:"8bc78e97",6528:"dfac7ef6",6641:"73799eb5",6681:"d0f126da",6688:"86f0bb7d",6969:"4f11b87f",7098:"c4e87eeb",7150:"f6c26f5b",7770:"8f2fd0a8",7874:"d25bae0c",8327:"9d2a0498",8401:"3769c7ca",8551:"4bac690c",8691:"c97cef5e",8697:"b8e753d5",8700:"eccbfe7e",8913:"0680f2c1",8952:"0230818c",9048:"3a629456",9462:"be2eb63e",9647:"e4c313e0",9699:"b2419598",9915:"0f8f1a36"}[e]+".js",f.miniCssF=e=>{},f.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),f.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},t="portal:",f.l=(e,a,c,r)=>{if(d[e])d[e].push(a);else{var b,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{b.onerror=b.onload=null,clearTimeout(s);var t=d[e];if(delete d[e],b.parentNode&&b.parentNode.removeChild(b),t&&t.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:b}),12e4);b.onerror=l.bind(null,b.onerror),b.onload=l.bind(null,b.onload),o&&document.head.appendChild(b)}},f.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.p="/tr/",f.gca=function(e){return e={17896441:"8401",a5e127bd:"12","444dc468":"324",b50c87ca:"332","9023f226":"345","69a72439":"370",a3155b63:"409","02bba059":"816","49b42b0a":"1149",a7456010:"1235",f87a3994:"1286","3a335aa6":"1418",bba291c8:"1793",c5b905bc:"1848",a8f1e931:"2185",c4039060:"2192","04efe389":"2203",d04d88f1:"2292",d7d47906:"2358","5756093d":"2414","09a97d9f":"2504","6382dfab":"2663","635927bd":"2807","5afabbf9":"2825","1a3c65c2":"3367","5be21e1a":"3459","4d3cd331":"3858","246091ec":"3901","832964be":"3950","393be207":"4134",a89db542:"4370","1df93b7f":"4583","24d220e5":"4803",e32b50cf:"4867","160a9306":"4941",e0fa42ef:"5128",aba21aa0:"5742","1f391b9e":"6061",cea7c09f:"6223","77aec7ce":"6373",ec89d9cb:"6528","1391411b":"6641","8588055a":"6681","14eb3368":"6969",a7bd4aaa:"7098","5ae429dc":"7150","050ac6c3":"7770",b73a2dd2:"7874",e0e7ce18:"8327",a0ac26cb:"8551","697287e4":"8691","24097f46":"8697",d4b03563:"8700","883d1c2d":"8952",a94703ab:"9048","5e95c892":"9647","6b90254d":"9699","8feb2d16":"9915"}[e]||e,f.p+f.u(e)},(()=>{var e={5354:0,1869:0};f.f.j=(a,c)=>{var d=f.o(e,a)?e[a]:void 0;if(0!==d)if(d)c.push(d[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((c,t)=>d=e[a]=[c,t]));c.push(d[2]=t);var r=f.p+f.u(a),b=new Error;f.l(r,(c=>{if(f.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var t=c&&("load"===c.type?"missing":c.type),r=c&&c.target&&c.target.src;b.message="Loading chunk "+a+" failed.\n("+t+": "+r+")",b.name="ChunkLoadError",b.type=t,b.request=r,d[1](b)}}),"chunk-"+a,a)}},f.O.j=a=>0===e[a];var a=(a,c)=>{var d,t,r=c[0],b=c[1],o=c[2],n=0;if(r.some((a=>0!==e[a]))){for(d in b)f.o(b,d)&&(f.m[d]=b[d]);if(o)var i=o(f)}for(a&&a(c);n - + diff --git a/tr/develop/auto-sdk/auto-id/index.html b/tr/develop/auto-sdk/auto-id/index.html index 590dea3098a..8770b6633da 100644 --- a/tr/develop/auto-sdk/auto-id/index.html +++ b/tr/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/auto-sdk/consensus/index.html b/tr/develop/auto-sdk/consensus/index.html index 4204a30032a..87f5f62a5fd 100644 --- a/tr/develop/auto-sdk/consensus/index.html +++ b/tr/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/auto-sdk/drive/index.html b/tr/develop/auto-sdk/drive/index.html index d0ba9878ac3..79bb6a65fa8 100644 --- a/tr/develop/auto-sdk/drive/index.html +++ b/tr/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/auto-sdk/index.html b/tr/develop/auto-sdk/index.html index c24971f6f45..6f1802d71fd 100644 --- a/tr/develop/auto-sdk/index.html +++ b/tr/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/auto-sdk/intro/index.html b/tr/develop/auto-sdk/intro/index.html index 172841f32e3..5ee4626d8d4 100644 --- a/tr/develop/auto-sdk/intro/index.html +++ b/tr/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/auto-sdk/utils/index.html b/tr/develop/auto-sdk/utils/index.html index a15cec052d5..ae28b56a9bc 100644 --- a/tr/develop/auto-sdk/utils/index.html +++ b/tr/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/auto-sdk/xdm/index.html b/tr/develop/auto-sdk/xdm/index.html index 8111d216541..3e718f535d8 100644 --- a/tr/develop/auto-sdk/xdm/index.html +++ b/tr/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/intro/index.html b/tr/develop/intro/index.html index 0a75fd69078..568501af265 100644 --- a/tr/develop/intro/index.html +++ b/tr/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/nova/block-explorer/index.html b/tr/develop/nova/block-explorer/index.html index 951a936b3da..a603277c600 100644 --- a/tr/develop/nova/block-explorer/index.html +++ b/tr/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/nova/faucet/index.html b/tr/develop/nova/faucet/index.html index a29304de08c..314f82c587d 100644 --- a/tr/develop/nova/faucet/index.html +++ b/tr/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/nova/general/index.html b/tr/develop/nova/general/index.html index 553ec126985..53f6adf063c 100644 --- a/tr/develop/nova/general/index.html +++ b/tr/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/nova/guides/foundry/index.html b/tr/develop/nova/guides/foundry/index.html index d377cc4ee03..424106c023d 100644 --- a/tr/develop/nova/guides/foundry/index.html +++ b/tr/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/nova/guides/hardhat/index.html b/tr/develop/nova/guides/hardhat/index.html index 7661b4b37ff..9aef5e7f74a 100644 --- a/tr/develop/nova/guides/hardhat/index.html +++ b/tr/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/nova/guides/local-development/index.html b/tr/develop/nova/guides/local-development/index.html index 89c11fc1f14..1637232c119 100644 --- a/tr/develop/nova/guides/local-development/index.html +++ b/tr/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/nova/guides/remix/index.html b/tr/develop/nova/guides/remix/index.html index 36efe68f45f..8b69b3acc7d 100644 --- a/tr/develop/nova/guides/remix/index.html +++ b/tr/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/nova/index.html b/tr/develop/nova/index.html index 4b054a867ff..41910b47dde 100644 --- a/tr/develop/nova/index.html +++ b/tr/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/nova/introduction/index.html b/tr/develop/nova/introduction/index.html index bedd4dfd34e..df11054f733 100644 --- a/tr/develop/nova/introduction/index.html +++ b/tr/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/develop/nova/metamask/index.html b/tr/develop/nova/metamask/index.html index 6d3ef5bbbe7..ae4fca527b3 100644 --- a/tr/develop/nova/metamask/index.html +++ b/tr/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/advanced-cli/cluster/index.html b/tr/farming/advanced-cli/cluster/index.html index c7c80dbe3b4..2464fe18ea1 100644 --- a/tr/farming/advanced-cli/cluster/index.html +++ b/tr/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/advanced-cli/install/index.html b/tr/farming/advanced-cli/install/index.html index c6256cba6eb..a3978d2505a 100644 --- a/tr/farming/advanced-cli/install/index.html +++ b/tr/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/advanced-cli/tips/index.html b/tr/farming/advanced-cli/tips/index.html index a2e23cf05c4..7da625b04a5 100644 --- a/tr/farming/advanced-cli/tips/index.html +++ b/tr/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/common-problems/index.html b/tr/farming/common-problems/index.html index c0dc26753cd..c4b717c1169 100644 --- a/tr/farming/common-problems/index.html +++ b/tr/farming/common-problems/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/guides/gpu-plotter/index.html b/tr/farming/guides/gpu-plotter/index.html index ef1bb2fbc08..e88c260998c 100644 --- a/tr/farming/guides/gpu-plotter/index.html +++ b/tr/farming/guides/gpu-plotter/index.html @@ -12,14 +12,13 @@ - +

GPU Plotter

Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck.

Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed.

Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU.

-
Plot Format Compatibility

GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting.

Platform Compatibility

Platform🐧 Linux🪟 WindowsNvidiaAMDIntel
Advanced CLI🛠️🔮
Space Acres🔜🔮

🛠️ Limited AMD Support for Linux only is available in recent test builds. The most recent test builds are linked on the forum

See Discord farmer-chat channel for limited support.

@@ -59,8 +58,6 @@

C

Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): --cuda-gpus <gpu_ids>

--cuda-gpus 0,1,3

Farming Cluster

-

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

-

Known Issues

-

Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine.

+

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

\ No newline at end of file diff --git a/tr/farming/guides/grafana-dashboard/index.html b/tr/farming/guides/grafana-dashboard/index.html index 9a4cec4e090..dd98cbe4ed5 100644 --- a/tr/farming/guides/grafana-dashboard/index.html +++ b/tr/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/guides/index.html b/tr/farming/guides/index.html index 1aa8efbc2dc..129a4ca4f56 100644 --- a/tr/farming/guides/index.html +++ b/tr/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/guides/port-config/index.html b/tr/farming/guides/port-config/index.html index 8b153c04e8a..1f655193e7f 100644 --- a/tr/farming/guides/port-config/index.html +++ b/tr/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/guides/verified-farmer/index.html b/tr/farming/guides/verified-farmer/index.html index 641776d79c9..9cd6211a4d4 100644 --- a/tr/farming/guides/verified-farmer/index.html +++ b/tr/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/intro/index.html b/tr/farming/intro/index.html index b39f83aca2a..c0e337c8e95 100644 --- a/tr/farming/intro/index.html +++ b/tr/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/space-acres/install/index.html b/tr/farming/space-acres/install/index.html index 614dc6ee0df..1b9b56f5905 100644 --- a/tr/farming/space-acres/install/index.html +++ b/tr/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/space-acres/translate/index.html b/tr/farming/space-acres/translate/index.html index 357ac904272..c049d40e437 100644 --- a/tr/farming/space-acres/translate/index.html +++ b/tr/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/farming/timekeeper/index.html b/tr/farming/timekeeper/index.html index 8bc3e121476..c42a148e6f5 100644 --- a/tr/farming/timekeeper/index.html +++ b/tr/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/index.html b/tr/index.html index 3cc282b8bdf..fb8a097a7cd 100644 --- a/tr/index.html +++ b/tr/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/learn/academy/index.html b/tr/learn/academy/index.html index adf8e3d04df..51aa769cef4 100644 --- a/tr/learn/academy/index.html +++ b/tr/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/learn/intro/index.html b/tr/learn/intro/index.html index e77dd4cb426..758717c0d89 100644 --- a/tr/learn/intro/index.html +++ b/tr/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/learn/security/index.html b/tr/learn/security/index.html index d8c0797bc68..89f57c5dedc 100644 --- a/tr/learn/security/index.html +++ b/tr/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/markdown-page/index.html b/tr/markdown-page/index.html index ad15045fb7a..df7c2d4f57f 100644 --- a/tr/markdown-page/index.html +++ b/tr/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/participate/community/resources/index.html b/tr/participate/community/resources/index.html index 60b54ea11f0..c58e35ac038 100644 --- a/tr/participate/community/resources/index.html +++ b/tr/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/participate/community/tools/index.html b/tr/participate/community/tools/index.html index 69bf83a5ccc..2feb22ab332 100644 --- a/tr/participate/community/tools/index.html +++ b/tr/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/participate/contribute/code-of-conduct/index.html b/tr/participate/contribute/code-of-conduct/index.html index 7df1c4d6e34..a5e6aa87f6a 100644 --- a/tr/participate/contribute/code-of-conduct/index.html +++ b/tr/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/participate/contribute/intro/index.html b/tr/participate/contribute/intro/index.html index 24ab7091c81..01ab059807c 100644 --- a/tr/participate/contribute/intro/index.html +++ b/tr/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/participate/contribute/translate/index.html b/tr/participate/contribute/translate/index.html index 1473c508b4e..8b2e6269fc0 100644 --- a/tr/participate/contribute/translate/index.html +++ b/tr/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/staking/intro/index.html b/tr/staking/intro/index.html index 13f12a8bbc1..5473b56104f 100644 --- a/tr/staking/intro/index.html +++ b/tr/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/staking/operator/deregister/index.html b/tr/staking/operator/deregister/index.html index 4053be5c37c..1b8dadd6749 100644 --- a/tr/staking/operator/deregister/index.html +++ b/tr/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/staking/operator/register/index.html b/tr/staking/operator/register/index.html index d28f9d0dcdf..71d0c06f17a 100644 --- a/tr/staking/operator/register/index.html +++ b/tr/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/staking/operator/tips/index.html b/tr/staking/operator/tips/index.html index 4cfd0c7f5a6..06cd8ecf072 100644 --- a/tr/staking/operator/tips/index.html +++ b/tr/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/staking/stake/index.html b/tr/staking/stake/index.html index 76a171a6a5d..5da0a75ce11 100644 --- a/tr/staking/stake/index.html +++ b/tr/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/wallets/polkadot/index.html b/tr/wallets/polkadot/index.html index 35f20b6e182..517cbe791b4 100644 --- a/tr/wallets/polkadot/index.html +++ b/tr/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/tr/wallets/subwallet/index.html b/tr/wallets/subwallet/index.html index ad861f0a6cf..bcd9d567bc3 100644 --- a/tr/wallets/subwallet/index.html +++ b/tr/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/404.html b/uk/404.html index 4b1edd05386..c6f8b2327b2 100644 --- a/uk/404.html +++ b/uk/404.html @@ -12,7 +12,7 @@ - + diff --git a/uk/assets/js/958fbda6.a0fc2f4e.js b/uk/assets/js/958fbda6.a0fc2f4e.js new file mode 100644 index 00000000000..dfe58cc7138 --- /dev/null +++ b/uk/assets/js/958fbda6.a0fc2f4e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[7728],{5216:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const a={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","\u0424\u0430\u0440\u043c\u0456\u043d\u0433","GPU"]},o=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/uk/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/uk/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","\u0424\u0430\u0440\u043c\u0456\u043d\u0433","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/uk/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/uk/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2}];function h(e){const t={a:"a",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>A});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),a=n(205),o=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,o.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,o]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),j=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{j&&o(j)}),[j]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const j={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:a}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=o.indexOf(t),s=a[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=o.indexOf(e.currentTarget)+1;t=o[n]??o[0];break}case"ArrowLeft":{const n=o.indexOf(e.currentTarget)-1;t=o[n]??o[o.length-1];break}}t?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:a.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>o.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",j.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,f.jsxs)("div",{className:(0,s.A)("tabs-container",j.tabList),children:[(0,f.jsx)(y,{...t,...e}),(0,f.jsx)(b,{...t,...e})]})}function A(e){const t=(0,g.A)();return(0,f.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>a});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/uk/assets/js/958fbda6.a2d86a20.js b/uk/assets/js/958fbda6.a2d86a20.js deleted file mode 100644 index b1f54f369d8..00000000000 --- a/uk/assets/js/958fbda6.a2d86a20.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[7728],{5216:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const o={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","\u0424\u0430\u0440\u043c\u0456\u043d\u0433","GPU"]},a=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/uk/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/uk/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","\u0424\u0430\u0440\u043c\u0456\u043d\u0433","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/uk/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/uk/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2},{value:"Known Issues",id:"known-issues",level:2}];function h(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.admonition,{title:"Plot Format Compatibility",type:"info",children:(0,r.jsx)(t.p,{children:"GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting."})}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."}),"\n",(0,r.jsx)(t.h2,{id:"known-issues",children:"Known Issues"}),"\n",(0,r.jsx)(t.p,{children:"Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),o=n(205),a=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,a.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,a]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),f=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{f&&a(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);a(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:o}=e;const a=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=a.indexOf(t),s=o[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=a.indexOf(e.currentTarget)+1;t=a[n]??a[0];break}case"ArrowLeft":{const n=a.indexOf(e.currentTarget)-1;t=a[n]??a[a.length-1];break}}t?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:o.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>a.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(y,{...t,...e}),(0,j.jsx)(b,{...t,...e})]})}function w(e){const t=(0,g.A)();return(0,j.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>o});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/uk/assets/js/runtime~main.02e3173c.js b/uk/assets/js/runtime~main.3705489b.js similarity index 98% rename from uk/assets/js/runtime~main.02e3173c.js rename to uk/assets/js/runtime~main.3705489b.js index 5037bc6aaf7..c5dbcebe835 100644 --- a/uk/assets/js/runtime~main.02e3173c.js +++ b/uk/assets/js/runtime~main.3705489b.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,d,f,t,r={},c={};function b(e){var a=c[e];if(void 0!==a)return a.exports;var d=c[e]={exports:{}};return r[e].call(d.exports,d,d.exports,b),d.exports}b.m=r,e=[],b.O=(a,d,f,t)=>{if(!d){var r=1/0;for(i=0;i=t)&&Object.keys(b.O).every((e=>b.O[e](d[o])))?d.splice(o--,1):(c=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[d,f,t]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var t=Object.create(null);b.r(t);var r={};a=a||[null,d({}),d([]),d(d)];for(var c=2&f&&e;"object"==typeof c&&!~a.indexOf(c);c=d(c))Object.getOwnPropertyNames(c).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,b.d(t,r),t},b.d=(e,a)=>{for(var d in a)b.o(a,d)&&!b.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,d)=>(b.f[d](e,a),a)),[])),b.u=e=>"assets/js/"+({542:"5f67d1d4",548:"596bdb87",555:"ab6648ab",1235:"a7456010",1289:"8e2e6ed7",1444:"0461b9b5",1648:"239df4f1",1780:"eded667b",1906:"8bd68588",2063:"ef69ed49",2172:"a678f7a1",2401:"e9810845",2985:"2db1a985",2995:"384408e2",3043:"e918e14c",3190:"026a745f",3430:"33ff2cd2",3431:"d68a8c22",3462:"afa793d4",3618:"7aa0d96e",3762:"6c390286",4122:"9c3ff3d3",4134:"393be207",4583:"1df93b7f",5207:"fe75fb83",5596:"363b8bde",5742:"aba21aa0",5810:"d553a649",5829:"212e3915",6061:"1f391b9e",6082:"dda451ca",6243:"d2e39746",6293:"c6aee7c6",6615:"1801efba",6701:"4ba4090f",6726:"8f1fe180",6769:"6ced23bc",6969:"14eb3368",7098:"a7bd4aaa",7426:"6eae28d2",7689:"87ed99ec",7728:"958fbda6",7746:"42ad9ff7",7823:"d2ea7a0d",8229:"04431b2b",8348:"31acefd2",8401:"17896441",8586:"6534b575",8604:"39ffcf7a",8716:"d43aee6c",8810:"25e8c0bf",9048:"a94703ab",9325:"8a686245",9360:"2ea3291d",9481:"f5f94a50",9647:"5e95c892",9860:"2e5a6466",9942:"bc11d41e"}[e]||e)+"."+{542:"72b289a3",548:"5699c548",555:"994e6c62",1235:"deb810c9",1289:"0decd0f2",1444:"fac3e245",1648:"6097545e",1688:"af0e6f17",1780:"0ea43ccc",1906:"e4a161f8",2063:"e6c67391",2172:"2b67b6f0",2237:"c851d8b1",2401:"5370c1c3",2440:"ecd0621f",2985:"6181bb79",2995:"b7e9a00f",3043:"f2f3f51e",3190:"1dceaf94",3430:"e917133a",3431:"8d6e618b",3462:"ca1ab5fe",3618:"daf79735",3762:"6836da2a",4122:"9b8db161",4134:"dd66a24b",4324:"fec3e18f",4583:"c0d080f8",5049:"7f13b97c",5207:"6c1018e4",5394:"83d77ce3",5596:"a752df08",5742:"08d6695f",5810:"14fdbf19",5829:"4786b052",6061:"fc18f174",6082:"f6f16499",6243:"8fde2c24",6293:"180db7d9",6615:"99b80aa1",6688:"86f0bb7d",6701:"929ec3f8",6726:"1aa22b0c",6769:"e52cb915",6969:"4f11b87f",7098:"c4e87eeb",7426:"afafc4ba",7689:"aa1c784f",7728:"a2d86a20",7746:"4b220fdb",7823:"3c83778e",8229:"4b36ae61",8348:"76e5d4bd",8401:"3769c7ca",8586:"ad6c3643",8604:"81d7cb3a",8716:"dc2577a0",8810:"2d23e4d7",8913:"0680f2c1",9048:"3a629456",9325:"ae57b2cd",9360:"051b33eb",9462:"be2eb63e",9481:"5d2df06a",9647:"e4c313e0",9860:"d0c2e5df",9942:"95d3e400"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},t="portal:",b.l=(e,a,d,r)=>{if(f[e])f[e].push(a);else{var c,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var t=f[e];if(delete f[e],c.parentNode&&c.parentNode.removeChild(c),t&&t.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),o&&document.head.appendChild(c)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/uk/",b.gca=function(e){return e={17896441:"8401","5f67d1d4":"542","596bdb87":"548",ab6648ab:"555",a7456010:"1235","8e2e6ed7":"1289","0461b9b5":"1444","239df4f1":"1648",eded667b:"1780","8bd68588":"1906",ef69ed49:"2063",a678f7a1:"2172",e9810845:"2401","2db1a985":"2985","384408e2":"2995",e918e14c:"3043","026a745f":"3190","33ff2cd2":"3430",d68a8c22:"3431",afa793d4:"3462","7aa0d96e":"3618","6c390286":"3762","9c3ff3d3":"4122","393be207":"4134","1df93b7f":"4583",fe75fb83:"5207","363b8bde":"5596",aba21aa0:"5742",d553a649:"5810","212e3915":"5829","1f391b9e":"6061",dda451ca:"6082",d2e39746:"6243",c6aee7c6:"6293","1801efba":"6615","4ba4090f":"6701","8f1fe180":"6726","6ced23bc":"6769","14eb3368":"6969",a7bd4aaa:"7098","6eae28d2":"7426","87ed99ec":"7689","958fbda6":"7728","42ad9ff7":"7746",d2ea7a0d:"7823","04431b2b":"8229","31acefd2":"8348","6534b575":"8586","39ffcf7a":"8604",d43aee6c:"8716","25e8c0bf":"8810",a94703ab:"9048","8a686245":"9325","2ea3291d":"9360",f5f94a50:"9481","5e95c892":"9647","2e5a6466":"9860",bc11d41e:"9942"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,d)=>{var f=b.o(e,a)?e[a]:void 0;if(0!==f)if(f)d.push(f[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((d,t)=>f=e[a]=[d,t]));d.push(f[2]=t);var r=b.p+b.u(a),c=new Error;b.l(r,(d=>{if(b.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var t=d&&("load"===d.type?"missing":d.type),r=d&&d.target&&d.target.src;c.message="Loading chunk "+a+" failed.\n("+t+": "+r+")",c.name="ChunkLoadError",c.type=t,c.request=r,f[1](c)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,d)=>{var f,t,r=d[0],c=d[1],o=d[2],n=0;if(r.some((a=>0!==e[a]))){for(f in c)b.o(c,f)&&(b.m[f]=c[f]);if(o)var i=o(b)}for(a&&a(d);n{"use strict";var e,a,d,f,t,r={},c={};function b(e){var a=c[e];if(void 0!==a)return a.exports;var d=c[e]={exports:{}};return r[e].call(d.exports,d,d.exports,b),d.exports}b.m=r,e=[],b.O=(a,d,f,t)=>{if(!d){var r=1/0;for(i=0;i=t)&&Object.keys(b.O).every((e=>b.O[e](d[o])))?d.splice(o--,1):(c=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[d,f,t]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var t=Object.create(null);b.r(t);var r={};a=a||[null,d({}),d([]),d(d)];for(var c=2&f&&e;"object"==typeof c&&!~a.indexOf(c);c=d(c))Object.getOwnPropertyNames(c).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,b.d(t,r),t},b.d=(e,a)=>{for(var d in a)b.o(a,d)&&!b.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,d)=>(b.f[d](e,a),a)),[])),b.u=e=>"assets/js/"+({542:"5f67d1d4",548:"596bdb87",555:"ab6648ab",1235:"a7456010",1289:"8e2e6ed7",1444:"0461b9b5",1648:"239df4f1",1780:"eded667b",1906:"8bd68588",2063:"ef69ed49",2172:"a678f7a1",2401:"e9810845",2985:"2db1a985",2995:"384408e2",3043:"e918e14c",3190:"026a745f",3430:"33ff2cd2",3431:"d68a8c22",3462:"afa793d4",3618:"7aa0d96e",3762:"6c390286",4122:"9c3ff3d3",4134:"393be207",4583:"1df93b7f",5207:"fe75fb83",5596:"363b8bde",5742:"aba21aa0",5810:"d553a649",5829:"212e3915",6061:"1f391b9e",6082:"dda451ca",6243:"d2e39746",6293:"c6aee7c6",6615:"1801efba",6701:"4ba4090f",6726:"8f1fe180",6769:"6ced23bc",6969:"14eb3368",7098:"a7bd4aaa",7426:"6eae28d2",7689:"87ed99ec",7728:"958fbda6",7746:"42ad9ff7",7823:"d2ea7a0d",8229:"04431b2b",8348:"31acefd2",8401:"17896441",8586:"6534b575",8604:"39ffcf7a",8716:"d43aee6c",8810:"25e8c0bf",9048:"a94703ab",9325:"8a686245",9360:"2ea3291d",9481:"f5f94a50",9647:"5e95c892",9860:"2e5a6466",9942:"bc11d41e"}[e]||e)+"."+{542:"72b289a3",548:"5699c548",555:"994e6c62",1235:"deb810c9",1289:"0decd0f2",1444:"fac3e245",1648:"6097545e",1688:"af0e6f17",1780:"0ea43ccc",1906:"e4a161f8",2063:"e6c67391",2172:"2b67b6f0",2237:"c851d8b1",2401:"5370c1c3",2440:"ecd0621f",2985:"6181bb79",2995:"b7e9a00f",3043:"f2f3f51e",3190:"1dceaf94",3430:"e917133a",3431:"8d6e618b",3462:"ca1ab5fe",3618:"daf79735",3762:"6836da2a",4122:"9b8db161",4134:"dd66a24b",4324:"fec3e18f",4583:"c0d080f8",5049:"7f13b97c",5207:"6c1018e4",5394:"83d77ce3",5596:"a752df08",5742:"08d6695f",5810:"14fdbf19",5829:"4786b052",6061:"fc18f174",6082:"f6f16499",6243:"8fde2c24",6293:"180db7d9",6615:"99b80aa1",6688:"86f0bb7d",6701:"929ec3f8",6726:"1aa22b0c",6769:"e52cb915",6969:"4f11b87f",7098:"c4e87eeb",7426:"afafc4ba",7689:"aa1c784f",7728:"a0fc2f4e",7746:"4b220fdb",7823:"3c83778e",8229:"4b36ae61",8348:"76e5d4bd",8401:"3769c7ca",8586:"ad6c3643",8604:"81d7cb3a",8716:"dc2577a0",8810:"2d23e4d7",8913:"0680f2c1",9048:"3a629456",9325:"ae57b2cd",9360:"051b33eb",9462:"be2eb63e",9481:"5d2df06a",9647:"e4c313e0",9860:"d0c2e5df",9942:"95d3e400"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},t="portal:",b.l=(e,a,d,r)=>{if(f[e])f[e].push(a);else{var c,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var t=f[e];if(delete f[e],c.parentNode&&c.parentNode.removeChild(c),t&&t.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),o&&document.head.appendChild(c)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/uk/",b.gca=function(e){return e={17896441:"8401","5f67d1d4":"542","596bdb87":"548",ab6648ab:"555",a7456010:"1235","8e2e6ed7":"1289","0461b9b5":"1444","239df4f1":"1648",eded667b:"1780","8bd68588":"1906",ef69ed49:"2063",a678f7a1:"2172",e9810845:"2401","2db1a985":"2985","384408e2":"2995",e918e14c:"3043","026a745f":"3190","33ff2cd2":"3430",d68a8c22:"3431",afa793d4:"3462","7aa0d96e":"3618","6c390286":"3762","9c3ff3d3":"4122","393be207":"4134","1df93b7f":"4583",fe75fb83:"5207","363b8bde":"5596",aba21aa0:"5742",d553a649:"5810","212e3915":"5829","1f391b9e":"6061",dda451ca:"6082",d2e39746:"6243",c6aee7c6:"6293","1801efba":"6615","4ba4090f":"6701","8f1fe180":"6726","6ced23bc":"6769","14eb3368":"6969",a7bd4aaa:"7098","6eae28d2":"7426","87ed99ec":"7689","958fbda6":"7728","42ad9ff7":"7746",d2ea7a0d:"7823","04431b2b":"8229","31acefd2":"8348","6534b575":"8586","39ffcf7a":"8604",d43aee6c:"8716","25e8c0bf":"8810",a94703ab:"9048","8a686245":"9325","2ea3291d":"9360",f5f94a50:"9481","5e95c892":"9647","2e5a6466":"9860",bc11d41e:"9942"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,d)=>{var f=b.o(e,a)?e[a]:void 0;if(0!==f)if(f)d.push(f[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((d,t)=>f=e[a]=[d,t]));d.push(f[2]=t);var r=b.p+b.u(a),c=new Error;b.l(r,(d=>{if(b.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var t=d&&("load"===d.type?"missing":d.type),r=d&&d.target&&d.target.src;c.message="Loading chunk "+a+" failed.\n("+t+": "+r+")",c.name="ChunkLoadError",c.type=t,c.request=r,f[1](c)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,d)=>{var f,t,r=d[0],c=d[1],o=d[2],n=0;if(r.some((a=>0!==e[a]))){for(f in c)b.o(c,f)&&(b.m[f]=c[f]);if(o)var i=o(b)}for(a&&a(d);n - + diff --git a/uk/develop/auto-sdk/auto-id/index.html b/uk/develop/auto-sdk/auto-id/index.html index b2d3becdcb5..5c4f4a32bbf 100644 --- a/uk/develop/auto-sdk/auto-id/index.html +++ b/uk/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/auto-sdk/consensus/index.html b/uk/develop/auto-sdk/consensus/index.html index 7273388b328..9b1996b54ee 100644 --- a/uk/develop/auto-sdk/consensus/index.html +++ b/uk/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/auto-sdk/drive/index.html b/uk/develop/auto-sdk/drive/index.html index 2a6e018e012..8967a6f988c 100644 --- a/uk/develop/auto-sdk/drive/index.html +++ b/uk/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/auto-sdk/index.html b/uk/develop/auto-sdk/index.html index d95599336bc..2362b468820 100644 --- a/uk/develop/auto-sdk/index.html +++ b/uk/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/auto-sdk/intro/index.html b/uk/develop/auto-sdk/intro/index.html index a2886e20358..25d099ef871 100644 --- a/uk/develop/auto-sdk/intro/index.html +++ b/uk/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/auto-sdk/utils/index.html b/uk/develop/auto-sdk/utils/index.html index 76f877cee3e..f9e5ac8255c 100644 --- a/uk/develop/auto-sdk/utils/index.html +++ b/uk/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/auto-sdk/xdm/index.html b/uk/develop/auto-sdk/xdm/index.html index 2b1831c3a3e..65953831aed 100644 --- a/uk/develop/auto-sdk/xdm/index.html +++ b/uk/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/intro/index.html b/uk/develop/intro/index.html index ce5c849a4de..38e7e7e500d 100644 --- a/uk/develop/intro/index.html +++ b/uk/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/nova/block-explorer/index.html b/uk/develop/nova/block-explorer/index.html index 9db453c2f46..e2f67313a1e 100644 --- a/uk/develop/nova/block-explorer/index.html +++ b/uk/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/nova/faucet/index.html b/uk/develop/nova/faucet/index.html index 0db79870066..e4546e50aac 100644 --- a/uk/develop/nova/faucet/index.html +++ b/uk/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/nova/general/index.html b/uk/develop/nova/general/index.html index 99c501b08cf..c39b48fb02c 100644 --- a/uk/develop/nova/general/index.html +++ b/uk/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/nova/guides/foundry/index.html b/uk/develop/nova/guides/foundry/index.html index abfefa1345b..9d3d452b7c9 100644 --- a/uk/develop/nova/guides/foundry/index.html +++ b/uk/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/nova/guides/hardhat/index.html b/uk/develop/nova/guides/hardhat/index.html index 74168f842e2..fb4c626381d 100644 --- a/uk/develop/nova/guides/hardhat/index.html +++ b/uk/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/nova/guides/local-development/index.html b/uk/develop/nova/guides/local-development/index.html index 0b2ca338a8b..f01400a1ef2 100644 --- a/uk/develop/nova/guides/local-development/index.html +++ b/uk/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/nova/guides/remix/index.html b/uk/develop/nova/guides/remix/index.html index e7cf4fce62c..8bfed2355c8 100644 --- a/uk/develop/nova/guides/remix/index.html +++ b/uk/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/nova/index.html b/uk/develop/nova/index.html index 2c2e02fdbdc..18da61d5cf9 100644 --- a/uk/develop/nova/index.html +++ b/uk/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/nova/introduction/index.html b/uk/develop/nova/introduction/index.html index 3c2f253478c..e756cb0891a 100644 --- a/uk/develop/nova/introduction/index.html +++ b/uk/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/develop/nova/metamask/index.html b/uk/develop/nova/metamask/index.html index ad953615bbe..d43f3782415 100644 --- a/uk/develop/nova/metamask/index.html +++ b/uk/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/advanced-cli/cluster/index.html b/uk/farming/advanced-cli/cluster/index.html index 6d010d8865d..991fbadf0e0 100644 --- a/uk/farming/advanced-cli/cluster/index.html +++ b/uk/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/advanced-cli/install/index.html b/uk/farming/advanced-cli/install/index.html index 031c0ca8674..b2b4c95f164 100644 --- a/uk/farming/advanced-cli/install/index.html +++ b/uk/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/advanced-cli/tips/index.html b/uk/farming/advanced-cli/tips/index.html index a319f19f581..53658e36279 100644 --- a/uk/farming/advanced-cli/tips/index.html +++ b/uk/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/common-problems/index.html b/uk/farming/common-problems/index.html index 20271c2885e..e6808d47de5 100644 --- a/uk/farming/common-problems/index.html +++ b/uk/farming/common-problems/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/guides/gpu-plotter/index.html b/uk/farming/guides/gpu-plotter/index.html index 07eb42b8ba3..3043b353c2a 100644 --- a/uk/farming/guides/gpu-plotter/index.html +++ b/uk/farming/guides/gpu-plotter/index.html @@ -12,14 +12,13 @@ - +

GPU Plotter

Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck.

Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed.

Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU.

-
Plot Format Compatibility

GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting.

Platform Compatibility

Platform🐧 Linux🪟 WindowsNvidiaAMDIntel
Advanced CLI🛠️🔮
Space Acres🔜🔮

🛠️ Limited AMD Support for Linux only is available in recent test builds. The most recent test builds are linked on the forum

See Discord farmer-chat channel for limited support.

@@ -59,8 +58,6 @@

C

Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): --cuda-gpus <gpu_ids>

--cuda-gpus 0,1,3

Farming Cluster

-

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

-

Known Issues

-

Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine.

+

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

\ No newline at end of file diff --git a/uk/farming/guides/grafana-dashboard/index.html b/uk/farming/guides/grafana-dashboard/index.html index e73b5e440ec..d06123578a3 100644 --- a/uk/farming/guides/grafana-dashboard/index.html +++ b/uk/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/guides/index.html b/uk/farming/guides/index.html index 5fa8ba078dd..a99d14c298a 100644 --- a/uk/farming/guides/index.html +++ b/uk/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/guides/port-config/index.html b/uk/farming/guides/port-config/index.html index 882fcf8be7f..26305bddc06 100644 --- a/uk/farming/guides/port-config/index.html +++ b/uk/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/guides/verified-farmer/index.html b/uk/farming/guides/verified-farmer/index.html index 8dad94a6faf..d1312f3f7d4 100644 --- a/uk/farming/guides/verified-farmer/index.html +++ b/uk/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/intro/index.html b/uk/farming/intro/index.html index ea7fd45ac1f..2c74bad9c0c 100644 --- a/uk/farming/intro/index.html +++ b/uk/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/space-acres/install/index.html b/uk/farming/space-acres/install/index.html index a13549c0a4e..9230b74c657 100644 --- a/uk/farming/space-acres/install/index.html +++ b/uk/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/space-acres/translate/index.html b/uk/farming/space-acres/translate/index.html index c0bc860462b..fe471e4e22b 100644 --- a/uk/farming/space-acres/translate/index.html +++ b/uk/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/farming/timekeeper/index.html b/uk/farming/timekeeper/index.html index a639eb91a48..9b6729125d4 100644 --- a/uk/farming/timekeeper/index.html +++ b/uk/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/index.html b/uk/index.html index b20f6d2110c..2b217eaa3e3 100644 --- a/uk/index.html +++ b/uk/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/learn/academy/index.html b/uk/learn/academy/index.html index e6c91c9b64a..5918ea63a00 100644 --- a/uk/learn/academy/index.html +++ b/uk/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/learn/intro/index.html b/uk/learn/intro/index.html index afdd3717490..8f9f519bf10 100644 --- a/uk/learn/intro/index.html +++ b/uk/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/learn/security/index.html b/uk/learn/security/index.html index 8d606bc9cbf..2e6a7a6a489 100644 --- a/uk/learn/security/index.html +++ b/uk/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/markdown-page/index.html b/uk/markdown-page/index.html index 45a4cccc5a5..921fa923f90 100644 --- a/uk/markdown-page/index.html +++ b/uk/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/participate/community/resources/index.html b/uk/participate/community/resources/index.html index 5bcaf3933fc..c9c8d9e4c9d 100644 --- a/uk/participate/community/resources/index.html +++ b/uk/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/participate/community/tools/index.html b/uk/participate/community/tools/index.html index 6d209014056..ab72c115072 100644 --- a/uk/participate/community/tools/index.html +++ b/uk/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/participate/contribute/code-of-conduct/index.html b/uk/participate/contribute/code-of-conduct/index.html index 423dd075095..799f59bbb8c 100644 --- a/uk/participate/contribute/code-of-conduct/index.html +++ b/uk/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/participate/contribute/intro/index.html b/uk/participate/contribute/intro/index.html index 22904d0db3e..e1885f61410 100644 --- a/uk/participate/contribute/intro/index.html +++ b/uk/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/participate/contribute/translate/index.html b/uk/participate/contribute/translate/index.html index dc59f661038..fa0be389a92 100644 --- a/uk/participate/contribute/translate/index.html +++ b/uk/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/staking/intro/index.html b/uk/staking/intro/index.html index 3a39dc810ca..b8bb217b46b 100644 --- a/uk/staking/intro/index.html +++ b/uk/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/staking/operator/deregister/index.html b/uk/staking/operator/deregister/index.html index 8d74e8e5bc7..778bb92e2e1 100644 --- a/uk/staking/operator/deregister/index.html +++ b/uk/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/staking/operator/register/index.html b/uk/staking/operator/register/index.html index f237433fd53..022e249d5d2 100644 --- a/uk/staking/operator/register/index.html +++ b/uk/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/staking/operator/tips/index.html b/uk/staking/operator/tips/index.html index 01e24a8b9a5..3930c23371e 100644 --- a/uk/staking/operator/tips/index.html +++ b/uk/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/staking/stake/index.html b/uk/staking/stake/index.html index 4ed60f7e661..96fbdd6fdbd 100644 --- a/uk/staking/stake/index.html +++ b/uk/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/wallets/polkadot/index.html b/uk/wallets/polkadot/index.html index a53f2cefa8a..7a124e667b4 100644 --- a/uk/wallets/polkadot/index.html +++ b/uk/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/uk/wallets/subwallet/index.html b/uk/wallets/subwallet/index.html index 967444a358f..c39b94fce54 100644 --- a/uk/wallets/subwallet/index.html +++ b/uk/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/404.html b/vi/404.html index c3af719b0a6..f75add7acfb 100644 --- a/vi/404.html +++ b/vi/404.html @@ -12,7 +12,7 @@ - + diff --git a/vi/assets/js/74bde01b.0c1fefbd.js b/vi/assets/js/74bde01b.0c1fefbd.js new file mode 100644 index 00000000000..3243db2f8f9 --- /dev/null +++ b/vi/assets/js/74bde01b.0c1fefbd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[9774],{1185:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const a={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},o=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/vi/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/vi/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/vi/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/vi/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2}];function h(e){const t={a:"a",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>A});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),a=n(205),o=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,o.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,o]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),j=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,a.A)((()=>{j&&o(j)}),[j]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);o(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const j={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:a}=e;const o=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=o.indexOf(t),s=a[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=o.indexOf(e.currentTarget)+1;t=o[n]??o[0];break}case"ArrowLeft":{const n=o.indexOf(e.currentTarget)-1;t=o[n]??o[o.length-1];break}}t?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:a.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>o.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",j.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,f.jsxs)("div",{className:(0,s.A)("tabs-container",j.tabList),children:[(0,f.jsx)(y,{...t,...e}),(0,f.jsx)(b,{...t,...e})]})}function A(e){const t=(0,g.A)();return(0,f.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>a});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/vi/assets/js/74bde01b.94e4250a.js b/vi/assets/js/74bde01b.94e4250a.js deleted file mode 100644 index 6f688e8ab68..00000000000 --- a/vi/assets/js/74bde01b.94e4250a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[9774],{1185:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>u});var r=n(4848),s=n(8453),i=n(1470),l=n(9365);const o={title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},a=void 0,c={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"GPU Plotter",description:"Tips on GPU Plotter",source:"@site/i18n/vi/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/vi/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"GPU Plotter",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["Plotter","Farming","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/vi/farming/guides"},next:{title:"Port Forwarding & Firewall",permalink:"/vi/farming/guides/port-config"}},d={},u=[{value:"Platform Compatibility",id:"platform-compatibility",level:2},{value:"Supported GPUs",id:"supported-gpus",level:2},{value:"Common Plotting Parameters",id:"common-plotting-parameters",level:2},{value:"Farming Cluster",id:"farming-cluster",level:2},{value:"Known Issues",id:"known-issues",level:2}];function h(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck."}),"\n",(0,r.jsx)(t.p,{children:"Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed."}),"\n",(0,r.jsx)(t.p,{children:"Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU."}),"\n",(0,r.jsx)(t.admonition,{title:"Plot Format Compatibility",type:"info",children:(0,r.jsx)(t.p,{children:"GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting."})}),"\n",(0,r.jsx)(t.h2,{id:"platform-compatibility",children:"Platform Compatibility"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Platform"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"Advanced CLI"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f Limited AMD Support for ",(0,r.jsx)(t.strong,{children:"Linux only"})," is available in recent test builds. The most recent test builds are linked on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"})]}),(0,r.jsxs)(t.p,{children:["See Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," channel for limited support."]})]}),"\n",(0,r.jsx)(t.h2,{id:"supported-gpus",children:"Supported GPUs"}),"\n",(0,r.jsxs)(i.A,{queryString:"brand",children:[(0,r.jsxs)(l.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Supported"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx and Newer"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 Series"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(l.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"You must be using the latest test build for AMD support."})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Series/Model"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(i.A,{groupId:"OS",children:[(0,r.jsxs)(l.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," binaries provide ROCm support, with corresponding CLI options similar to CUDA and prefixed with ",(0,r.jsx)(t.code,{children:"--rocm"}),"."]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["In order to install necessary libraries go to Ubuntu native installation \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm installation (Linux)"})," and follow these steps for your Ubuntu version:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Package signing key"}),"\n",(0,r.jsx)(t.li,{children:"Register ROCm packages\nYou don't need a custom driver or full ROCm toolchain to use already compiled application, so skip all other steps."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Next install a single package with ROCm runtime:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"And register the library so that farmer and other apps can find it:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["Then, to allow the user to access GPU for compute purposes, you need to add your user to render group (please never run farmer as root with sudo ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(l.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPUs on Windows (including through WSL) are not currently supported. We hope to add support in the future."})}),(0,r.jsxs)(l.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Cross-compilation no longer requires separate Dockerfiles (which is why they are removed), both native and cross-compilation is supported with a single file"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Container image is now built as multi-platform, meaning no -aarch64 suffix and no awkwardness related to that"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 farmer container image is now compiled with CUDA support (while regular executable isn't)"})}),(0,r.jsxs)(t.p,{children:["Container image now ships with a second executable ",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (see explanation above as to why second binary is needed).\nHere is how it can be used with Docker Compose, you can use this as an inspiration for other use cases:"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(l.A,{value:"intel",label:"Intel",children:(0,r.jsxs)(t.p,{children:["Intel Arc GPUs ",(0,r.jsx)(t.em,{children:"may"})," be supported in the future, but specific compatibility details have not been announced yet."]})})]}),"\n",(0,r.jsx)(t.h2,{id:"common-plotting-parameters",children:"Common Plotting Parameters"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Enable CPU Plotting"})}),"\n",(0,r.jsxs)(t.p,{children:["When a compatible GPU is detected, CPU plotting is automatically disabled by default, but can be re-enabled if needed by specifying number of concurrently encoded sectors: ",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Disable GPU Plotting"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Specify specific GPUs"})}),"\n",(0,r.jsxs)(t.p,{children:["Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): ",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"farming-cluster",children:"Farming Cluster"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."}),"\n",(0,r.jsx)(t.h2,{id:"known-issues",children:"Known Issues"}),"\n",(0,r.jsx)(t.p,{children:"Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine."})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var i=n(4848);function l(e){let{children:t,hidden:n,className:l}=e;return(0,i.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,l),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(6540),s=n(8215),i=n(3104),l=n(6347),o=n(205),a=n(7485),c=n(1682),d=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,c.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function p(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function x(e){let{queryString:t=!1,groupId:n}=e;const s=(0,l.W6)(),i=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,a.aZ)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(s.location.search);t.set(i,e),s.replace({...s.location,search:t.toString()})}),[i,s])]}function m(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,i=h(e),[l,a]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:i}))),[c,u]=x({queryString:n,groupId:s}),[m,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,i]=(0,d.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&i.set(e)}),[n,i])]}({groupId:s}),f=(()=>{const e=c??m;return p({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{f&&a(f)}),[f]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!p({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);a(e),u(e),g(e)}),[u,g,i]),tabValues:i}}var g=n(2303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:l,tabValues:o}=e;const a=[],{blockElementScrollPositionUntilNextRender:c}=(0,i.a_)(),d=e=>{const t=e.currentTarget,n=a.indexOf(t),s=o[n].value;s!==r&&(c(t),l(s))},u=e=>{let t=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const n=a.indexOf(e.currentTarget)+1;t=a[n]??a[0];break}case"ArrowLeft":{const n=a.indexOf(e.currentTarget)-1;t=a[n]??a[a.length-1];break}}t?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:o.map((e=>{let{value:t,label:n,attributes:i}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>a.push(e),onKeyDown:u,onClick:d,...i,className:(0,s.A)("tabs__item",f.tabItem,i?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:i}=e;const l=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===i));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:l.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==i})))})}function v(e){const t=m(e);return(0,j.jsxs)("div",{className:(0,s.A)("tabs-container",f.tabList),children:[(0,j.jsx)(y,{...t,...e}),(0,j.jsx)(b,{...t,...e})]})}function w(e){const t=(0,g.A)();return(0,j.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>l,x:()=>o});var r=n(6540);const s={},i=r.createContext(s);function l(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/vi/assets/js/runtime~main.cb7e0cae.js b/vi/assets/js/runtime~main.f633f223.js similarity index 98% rename from vi/assets/js/runtime~main.cb7e0cae.js rename to vi/assets/js/runtime~main.f633f223.js index 3d913891d5c..1a4c3b9cf75 100644 --- a/vi/assets/js/runtime~main.cb7e0cae.js +++ b/vi/assets/js/runtime~main.f633f223.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,f,t,d,r={},b={};function c(e){var a=b[e];if(void 0!==a)return a.exports;var f=b[e]={exports:{}};return r[e].call(f.exports,f,f.exports,c),f.exports}c.m=r,e=[],c.O=(a,f,t,d)=>{if(!f){var r=1/0;for(i=0;i=d)&&Object.keys(c.O).every((e=>c.O[e](f[o])))?f.splice(o--,1):(b=!1,d0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[f,t,d]},c.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return c.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,c.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var d=Object.create(null);c.r(d);var r={};a=a||[null,f({}),f([]),f(f)];for(var b=2&t&&e;"object"==typeof b&&!~a.indexOf(b);b=f(b))Object.getOwnPropertyNames(b).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,c.d(d,r),d},c.d=(e,a)=>{for(var f in a)c.o(a,f)&&!c.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},c.f={},c.e=e=>Promise.all(Object.keys(c.f).reduce(((a,f)=>(c.f[f](e,a),a)),[])),c.u=e=>"assets/js/"+({640:"4ec08e0f",690:"51675b43",894:"92dabff7",1098:"59a3d8e8",1235:"a7456010",1300:"e39a2c0d",1647:"1248474b",1658:"eb2fec3e",1759:"b66c3048",2092:"2efea74c",2098:"5132e0fe",2119:"c47f0b0d",2580:"690e91b5",2618:"4ef201d1",2799:"0a1f242d",3126:"f7aff5d6",3230:"ff8a604f",3365:"82c4bf5b",3947:"46915a86",4134:"393be207",4279:"1316e6dd",4326:"f46d6d6e",4400:"16dc43b4",4540:"3b59c46e",4583:"1df93b7f",4778:"c9c621af",4788:"a5c9462e",4940:"17815207",5021:"04907f3c",5145:"6959c05e",5254:"417b5a27",5318:"882f11d3",5385:"d4d9970c",5514:"af06e319",5669:"bffb202b",5742:"aba21aa0",6061:"1f391b9e",6081:"9049f22f",6603:"76f82757",6946:"e6d6fd26",6969:"14eb3368",7098:"a7bd4aaa",7341:"58439319",7727:"c066e2bb",7814:"45b265d7",8307:"8dece91e",8397:"630e40a5",8401:"17896441",8444:"b112e7d1",8630:"731a9806",9048:"a94703ab",9351:"92217bde",9453:"9b4e40ea",9593:"cc449986",9647:"5e95c892",9681:"87696bf0",9774:"74bde01b",9991:"8b053c9b"}[e]||e)+"."+{640:"fbd3cb63",690:"a6700b83",894:"630a371a",1098:"d4f0f7b7",1235:"deb810c9",1300:"fde2f7cc",1647:"e5b987ad",1658:"17da5165",1688:"af0e6f17",1759:"84d5cabf",2092:"78c23c64",2098:"5d1ba89c",2119:"04413cd8",2237:"c851d8b1",2440:"ecd0621f",2580:"b4e5a0a7",2618:"24c48a8f",2799:"86447efc",3126:"34959576",3230:"180f5010",3365:"26b5bdfa",3947:"13ced708",4134:"7d091a58",4279:"45508b51",4324:"fec3e18f",4326:"539d3e33",4400:"7e365b4a",4540:"6afe81c3",4583:"c0d080f8",4778:"dcc667d9",4788:"6b32fd1e",4940:"7a2eebbc",5021:"368275b1",5049:"7f13b97c",5145:"ad779366",5254:"fb3eee4f",5318:"586134ff",5385:"ea3229c2",5394:"83d77ce3",5514:"d02fc185",5669:"87ad1cfb",5742:"08d6695f",6061:"fc18f174",6081:"9f0d5aad",6603:"df752af3",6688:"86f0bb7d",6946:"f6cfd4cd",6969:"4f11b87f",7098:"c4e87eeb",7341:"9e6cfa91",7727:"9fca6a8a",7814:"f2efd39a",8307:"ad87ed94",8397:"3c009dc8",8401:"3769c7ca",8444:"798bebda",8630:"6acb3d0f",8913:"0680f2c1",9048:"3a629456",9351:"ea218971",9453:"564cc7ea",9462:"be2eb63e",9593:"3e231fa2",9647:"e4c313e0",9681:"de4e350c",9774:"94e4250a",9991:"f0ff27ba"}[e]+".js",c.miniCssF=e=>{},c.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),c.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},d="portal:",c.l=(e,a,f,r)=>{if(t[e])t[e].push(a);else{var b,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{b.onerror=b.onload=null,clearTimeout(s);var d=t[e];if(delete t[e],b.parentNode&&b.parentNode.removeChild(b),d&&d.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:b}),12e4);b.onerror=l.bind(null,b.onerror),b.onload=l.bind(null,b.onload),o&&document.head.appendChild(b)}},c.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.p="/vi/",c.gca=function(e){return e={17815207:"4940",17896441:"8401",58439319:"7341","4ec08e0f":"640","51675b43":"690","92dabff7":"894","59a3d8e8":"1098",a7456010:"1235",e39a2c0d:"1300","1248474b":"1647",eb2fec3e:"1658",b66c3048:"1759","2efea74c":"2092","5132e0fe":"2098",c47f0b0d:"2119","690e91b5":"2580","4ef201d1":"2618","0a1f242d":"2799",f7aff5d6:"3126",ff8a604f:"3230","82c4bf5b":"3365","46915a86":"3947","393be207":"4134","1316e6dd":"4279",f46d6d6e:"4326","16dc43b4":"4400","3b59c46e":"4540","1df93b7f":"4583",c9c621af:"4778",a5c9462e:"4788","04907f3c":"5021","6959c05e":"5145","417b5a27":"5254","882f11d3":"5318",d4d9970c:"5385",af06e319:"5514",bffb202b:"5669",aba21aa0:"5742","1f391b9e":"6061","9049f22f":"6081","76f82757":"6603",e6d6fd26:"6946","14eb3368":"6969",a7bd4aaa:"7098",c066e2bb:"7727","45b265d7":"7814","8dece91e":"8307","630e40a5":"8397",b112e7d1:"8444","731a9806":"8630",a94703ab:"9048","92217bde":"9351","9b4e40ea":"9453",cc449986:"9593","5e95c892":"9647","87696bf0":"9681","74bde01b":"9774","8b053c9b":"9991"}[e]||e,c.p+c.u(e)},(()=>{var e={5354:0,1869:0};c.f.j=(a,f)=>{var t=c.o(e,a)?e[a]:void 0;if(0!==t)if(t)f.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var d=new Promise(((f,d)=>t=e[a]=[f,d]));f.push(t[2]=d);var r=c.p+c.u(a),b=new Error;c.l(r,(f=>{if(c.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var d=f&&("load"===f.type?"missing":f.type),r=f&&f.target&&f.target.src;b.message="Loading chunk "+a+" failed.\n("+d+": "+r+")",b.name="ChunkLoadError",b.type=d,b.request=r,t[1](b)}}),"chunk-"+a,a)}},c.O.j=a=>0===e[a];var a=(a,f)=>{var t,d,r=f[0],b=f[1],o=f[2],n=0;if(r.some((a=>0!==e[a]))){for(t in b)c.o(b,t)&&(c.m[t]=b[t]);if(o)var i=o(c)}for(a&&a(f);n{"use strict";var e,a,f,t,d,r={},b={};function c(e){var a=b[e];if(void 0!==a)return a.exports;var f=b[e]={exports:{}};return r[e].call(f.exports,f,f.exports,c),f.exports}c.m=r,e=[],c.O=(a,f,t,d)=>{if(!f){var r=1/0;for(i=0;i=d)&&Object.keys(c.O).every((e=>c.O[e](f[o])))?f.splice(o--,1):(b=!1,d0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[f,t,d]},c.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return c.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,c.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var d=Object.create(null);c.r(d);var r={};a=a||[null,f({}),f([]),f(f)];for(var b=2&t&&e;"object"==typeof b&&!~a.indexOf(b);b=f(b))Object.getOwnPropertyNames(b).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,c.d(d,r),d},c.d=(e,a)=>{for(var f in a)c.o(a,f)&&!c.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},c.f={},c.e=e=>Promise.all(Object.keys(c.f).reduce(((a,f)=>(c.f[f](e,a),a)),[])),c.u=e=>"assets/js/"+({640:"4ec08e0f",690:"51675b43",894:"92dabff7",1098:"59a3d8e8",1235:"a7456010",1300:"e39a2c0d",1647:"1248474b",1658:"eb2fec3e",1759:"b66c3048",2092:"2efea74c",2098:"5132e0fe",2119:"c47f0b0d",2580:"690e91b5",2618:"4ef201d1",2799:"0a1f242d",3126:"f7aff5d6",3230:"ff8a604f",3365:"82c4bf5b",3947:"46915a86",4134:"393be207",4279:"1316e6dd",4326:"f46d6d6e",4400:"16dc43b4",4540:"3b59c46e",4583:"1df93b7f",4778:"c9c621af",4788:"a5c9462e",4940:"17815207",5021:"04907f3c",5145:"6959c05e",5254:"417b5a27",5318:"882f11d3",5385:"d4d9970c",5514:"af06e319",5669:"bffb202b",5742:"aba21aa0",6061:"1f391b9e",6081:"9049f22f",6603:"76f82757",6946:"e6d6fd26",6969:"14eb3368",7098:"a7bd4aaa",7341:"58439319",7727:"c066e2bb",7814:"45b265d7",8307:"8dece91e",8397:"630e40a5",8401:"17896441",8444:"b112e7d1",8630:"731a9806",9048:"a94703ab",9351:"92217bde",9453:"9b4e40ea",9593:"cc449986",9647:"5e95c892",9681:"87696bf0",9774:"74bde01b",9991:"8b053c9b"}[e]||e)+"."+{640:"fbd3cb63",690:"a6700b83",894:"630a371a",1098:"d4f0f7b7",1235:"deb810c9",1300:"fde2f7cc",1647:"e5b987ad",1658:"17da5165",1688:"af0e6f17",1759:"84d5cabf",2092:"78c23c64",2098:"5d1ba89c",2119:"04413cd8",2237:"c851d8b1",2440:"ecd0621f",2580:"b4e5a0a7",2618:"24c48a8f",2799:"86447efc",3126:"34959576",3230:"180f5010",3365:"26b5bdfa",3947:"13ced708",4134:"7d091a58",4279:"45508b51",4324:"fec3e18f",4326:"539d3e33",4400:"7e365b4a",4540:"6afe81c3",4583:"c0d080f8",4778:"dcc667d9",4788:"6b32fd1e",4940:"7a2eebbc",5021:"368275b1",5049:"7f13b97c",5145:"ad779366",5254:"fb3eee4f",5318:"586134ff",5385:"ea3229c2",5394:"83d77ce3",5514:"d02fc185",5669:"87ad1cfb",5742:"08d6695f",6061:"fc18f174",6081:"9f0d5aad",6603:"df752af3",6688:"86f0bb7d",6946:"f6cfd4cd",6969:"4f11b87f",7098:"c4e87eeb",7341:"9e6cfa91",7727:"9fca6a8a",7814:"f2efd39a",8307:"ad87ed94",8397:"3c009dc8",8401:"3769c7ca",8444:"798bebda",8630:"6acb3d0f",8913:"0680f2c1",9048:"3a629456",9351:"ea218971",9453:"564cc7ea",9462:"be2eb63e",9593:"3e231fa2",9647:"e4c313e0",9681:"de4e350c",9774:"0c1fefbd",9991:"f0ff27ba"}[e]+".js",c.miniCssF=e=>{},c.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),c.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},d="portal:",c.l=(e,a,f,r)=>{if(t[e])t[e].push(a);else{var b,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{b.onerror=b.onload=null,clearTimeout(s);var d=t[e];if(delete t[e],b.parentNode&&b.parentNode.removeChild(b),d&&d.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:b}),12e4);b.onerror=l.bind(null,b.onerror),b.onload=l.bind(null,b.onload),o&&document.head.appendChild(b)}},c.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.p="/vi/",c.gca=function(e){return e={17815207:"4940",17896441:"8401",58439319:"7341","4ec08e0f":"640","51675b43":"690","92dabff7":"894","59a3d8e8":"1098",a7456010:"1235",e39a2c0d:"1300","1248474b":"1647",eb2fec3e:"1658",b66c3048:"1759","2efea74c":"2092","5132e0fe":"2098",c47f0b0d:"2119","690e91b5":"2580","4ef201d1":"2618","0a1f242d":"2799",f7aff5d6:"3126",ff8a604f:"3230","82c4bf5b":"3365","46915a86":"3947","393be207":"4134","1316e6dd":"4279",f46d6d6e:"4326","16dc43b4":"4400","3b59c46e":"4540","1df93b7f":"4583",c9c621af:"4778",a5c9462e:"4788","04907f3c":"5021","6959c05e":"5145","417b5a27":"5254","882f11d3":"5318",d4d9970c:"5385",af06e319:"5514",bffb202b:"5669",aba21aa0:"5742","1f391b9e":"6061","9049f22f":"6081","76f82757":"6603",e6d6fd26:"6946","14eb3368":"6969",a7bd4aaa:"7098",c066e2bb:"7727","45b265d7":"7814","8dece91e":"8307","630e40a5":"8397",b112e7d1:"8444","731a9806":"8630",a94703ab:"9048","92217bde":"9351","9b4e40ea":"9453",cc449986:"9593","5e95c892":"9647","87696bf0":"9681","74bde01b":"9774","8b053c9b":"9991"}[e]||e,c.p+c.u(e)},(()=>{var e={5354:0,1869:0};c.f.j=(a,f)=>{var t=c.o(e,a)?e[a]:void 0;if(0!==t)if(t)f.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var d=new Promise(((f,d)=>t=e[a]=[f,d]));f.push(t[2]=d);var r=c.p+c.u(a),b=new Error;c.l(r,(f=>{if(c.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var d=f&&("load"===f.type?"missing":f.type),r=f&&f.target&&f.target.src;b.message="Loading chunk "+a+" failed.\n("+d+": "+r+")",b.name="ChunkLoadError",b.type=d,b.request=r,t[1](b)}}),"chunk-"+a,a)}},c.O.j=a=>0===e[a];var a=(a,f)=>{var t,d,r=f[0],b=f[1],o=f[2],n=0;if(r.some((a=>0!==e[a]))){for(t in b)c.o(b,t)&&(c.m[t]=b[t]);if(o)var i=o(c)}for(a&&a(f);n - + diff --git a/vi/develop/auto-sdk/auto-id/index.html b/vi/develop/auto-sdk/auto-id/index.html index b6944570540..d5d4ce24f5f 100644 --- a/vi/develop/auto-sdk/auto-id/index.html +++ b/vi/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/auto-sdk/consensus/index.html b/vi/develop/auto-sdk/consensus/index.html index 2852c2a3820..fa7ab232bd1 100644 --- a/vi/develop/auto-sdk/consensus/index.html +++ b/vi/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/auto-sdk/drive/index.html b/vi/develop/auto-sdk/drive/index.html index a0e3d0f4cdf..b95747e8a5d 100644 --- a/vi/develop/auto-sdk/drive/index.html +++ b/vi/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/auto-sdk/index.html b/vi/develop/auto-sdk/index.html index fd0adcb8946..81205c38d30 100644 --- a/vi/develop/auto-sdk/index.html +++ b/vi/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/auto-sdk/intro/index.html b/vi/develop/auto-sdk/intro/index.html index a606e10c3b7..42e859a14de 100644 --- a/vi/develop/auto-sdk/intro/index.html +++ b/vi/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/auto-sdk/utils/index.html b/vi/develop/auto-sdk/utils/index.html index 67bb26cff9c..556634177f9 100644 --- a/vi/develop/auto-sdk/utils/index.html +++ b/vi/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/auto-sdk/xdm/index.html b/vi/develop/auto-sdk/xdm/index.html index 2b7cb62f9a3..2bdbbdad854 100644 --- a/vi/develop/auto-sdk/xdm/index.html +++ b/vi/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/intro/index.html b/vi/develop/intro/index.html index 0d5fe8de6da..8fc71987e4b 100644 --- a/vi/develop/intro/index.html +++ b/vi/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/nova/block-explorer/index.html b/vi/develop/nova/block-explorer/index.html index a570dfcf30a..50e6625f2b3 100644 --- a/vi/develop/nova/block-explorer/index.html +++ b/vi/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/nova/faucet/index.html b/vi/develop/nova/faucet/index.html index 0414c14202f..40e98542c31 100644 --- a/vi/develop/nova/faucet/index.html +++ b/vi/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/nova/general/index.html b/vi/develop/nova/general/index.html index f99bdd26c23..406ffd40a9c 100644 --- a/vi/develop/nova/general/index.html +++ b/vi/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/nova/guides/foundry/index.html b/vi/develop/nova/guides/foundry/index.html index e7e10c7dc4e..16d31973b6a 100644 --- a/vi/develop/nova/guides/foundry/index.html +++ b/vi/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/nova/guides/hardhat/index.html b/vi/develop/nova/guides/hardhat/index.html index 04cc433d837..cdd8aba5990 100644 --- a/vi/develop/nova/guides/hardhat/index.html +++ b/vi/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/nova/guides/local-development/index.html b/vi/develop/nova/guides/local-development/index.html index 873dc2455f5..daeccff3114 100644 --- a/vi/develop/nova/guides/local-development/index.html +++ b/vi/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/nova/guides/remix/index.html b/vi/develop/nova/guides/remix/index.html index 17a31b629e4..392dad05e42 100644 --- a/vi/develop/nova/guides/remix/index.html +++ b/vi/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/nova/index.html b/vi/develop/nova/index.html index 7bbfe8cc149..fbafb52db67 100644 --- a/vi/develop/nova/index.html +++ b/vi/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/nova/introduction/index.html b/vi/develop/nova/introduction/index.html index 06b304cb209..71796b4bae3 100644 --- a/vi/develop/nova/introduction/index.html +++ b/vi/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/develop/nova/metamask/index.html b/vi/develop/nova/metamask/index.html index 45a939fc169..e67c15383f6 100644 --- a/vi/develop/nova/metamask/index.html +++ b/vi/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/advanced-cli/cluster/index.html b/vi/farming/advanced-cli/cluster/index.html index d43627dd2cf..d2c503dcf27 100644 --- a/vi/farming/advanced-cli/cluster/index.html +++ b/vi/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/advanced-cli/install/index.html b/vi/farming/advanced-cli/install/index.html index f81b78d5d13..19b3905b204 100644 --- a/vi/farming/advanced-cli/install/index.html +++ b/vi/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/advanced-cli/tips/index.html b/vi/farming/advanced-cli/tips/index.html index fc9fe7b48b6..6af7d22f236 100644 --- a/vi/farming/advanced-cli/tips/index.html +++ b/vi/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/common-problems/index.html b/vi/farming/common-problems/index.html index d0926badbc4..8fa668e6679 100644 --- a/vi/farming/common-problems/index.html +++ b/vi/farming/common-problems/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/guides/gpu-plotter/index.html b/vi/farming/guides/gpu-plotter/index.html index ff1dff8a212..10b9e98dc01 100644 --- a/vi/farming/guides/gpu-plotter/index.html +++ b/vi/farming/guides/gpu-plotter/index.html @@ -12,14 +12,13 @@ - +

GPU Plotter

Autonomys utilizes your drive storage, specifically SSD or NVMe drives, to store plots. After the plotting process is finished, these plots are then farmed using your CPU. Farming is not particularly demanding on the CPU, enabling most modern processors to manage a substantial farm size. However, the plot creation process is highly resource intensive, which makes CPU plotting the main bottleneck.

Utilizing GPU plotting allows you to harness the power of compatible GPUs for plot generation and replotting, either in conjunction with or as a substitute for CPU processing. While many modern CPUs can complete the plotting of a sector in less than two minutes, a single high performance GPU can accomplish the same task in under five seconds, greatly improving efficiency and speed.

Although GPU plotting is not mandatory, it provides enhanced energy efficiency and speed compared to relying solely on a CPU.

-
Plot Format Compatibility

GPU plotting employs the new v1 plot format, which is applicable to any plots created with versions released on or after July 5th. In contrast, older software versions generated plots in the v0 format, which is only compatible with CPU plotting.

Platform Compatibility

Platform🐧 Linux🪟 WindowsNvidiaAMDIntel
Advanced CLI🛠️🔮
Space Acres🔜🔮

🛠️ Limited AMD Support for Linux only is available in recent test builds. The most recent test builds are linked on the forum

See Discord farmer-chat channel for limited support.

@@ -59,8 +58,6 @@

C

Specify particular GPUs for plotting rather than using all available GPUs (the default configuration employs all compatible GPUs): --cuda-gpus <gpu_ids>

--cuda-gpus 0,1,3

Farming Cluster

-

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

-

Known Issues

-

Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine.

+

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

\ No newline at end of file diff --git a/vi/farming/guides/grafana-dashboard/index.html b/vi/farming/guides/grafana-dashboard/index.html index 085b6d83a24..21b9b00971b 100644 --- a/vi/farming/guides/grafana-dashboard/index.html +++ b/vi/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/guides/index.html b/vi/farming/guides/index.html index 9872fc9c0e0..b1de5b76141 100644 --- a/vi/farming/guides/index.html +++ b/vi/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/guides/port-config/index.html b/vi/farming/guides/port-config/index.html index 483f6aea0f1..421d6ec2db3 100644 --- a/vi/farming/guides/port-config/index.html +++ b/vi/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/guides/verified-farmer/index.html b/vi/farming/guides/verified-farmer/index.html index bc82d835338..db705a3d855 100644 --- a/vi/farming/guides/verified-farmer/index.html +++ b/vi/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/intro/index.html b/vi/farming/intro/index.html index 06bd3e876e5..c8ee941cea3 100644 --- a/vi/farming/intro/index.html +++ b/vi/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/space-acres/install/index.html b/vi/farming/space-acres/install/index.html index eed3721e085..861bd3729bb 100644 --- a/vi/farming/space-acres/install/index.html +++ b/vi/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/space-acres/translate/index.html b/vi/farming/space-acres/translate/index.html index 171915ee93d..ac76ad1b134 100644 --- a/vi/farming/space-acres/translate/index.html +++ b/vi/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/farming/timekeeper/index.html b/vi/farming/timekeeper/index.html index f0ee0e74edf..aaee0a187ed 100644 --- a/vi/farming/timekeeper/index.html +++ b/vi/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/index.html b/vi/index.html index 5adaf430ab4..b7bc5e0915e 100644 --- a/vi/index.html +++ b/vi/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/learn/academy/index.html b/vi/learn/academy/index.html index d96a6cebe7f..01bdc2597f4 100644 --- a/vi/learn/academy/index.html +++ b/vi/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/learn/intro/index.html b/vi/learn/intro/index.html index e61b36dd98c..d1abfdd481f 100644 --- a/vi/learn/intro/index.html +++ b/vi/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/learn/security/index.html b/vi/learn/security/index.html index 35d031a17a3..243953360be 100644 --- a/vi/learn/security/index.html +++ b/vi/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/markdown-page/index.html b/vi/markdown-page/index.html index b9e1fd06a52..871e7f14758 100644 --- a/vi/markdown-page/index.html +++ b/vi/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/participate/community/resources/index.html b/vi/participate/community/resources/index.html index 8d80ce18396..a8f41033c04 100644 --- a/vi/participate/community/resources/index.html +++ b/vi/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/participate/community/tools/index.html b/vi/participate/community/tools/index.html index d4a021de7ee..f24ed8a90c4 100644 --- a/vi/participate/community/tools/index.html +++ b/vi/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/participate/contribute/code-of-conduct/index.html b/vi/participate/contribute/code-of-conduct/index.html index 96d6c0ee476..fbe2d28a754 100644 --- a/vi/participate/contribute/code-of-conduct/index.html +++ b/vi/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/participate/contribute/intro/index.html b/vi/participate/contribute/intro/index.html index a947afd8432..74b998cc321 100644 --- a/vi/participate/contribute/intro/index.html +++ b/vi/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/participate/contribute/translate/index.html b/vi/participate/contribute/translate/index.html index 08c21103831..779eb6e9ba7 100644 --- a/vi/participate/contribute/translate/index.html +++ b/vi/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/staking/intro/index.html b/vi/staking/intro/index.html index fc4da6f86f0..a313254fbcf 100644 --- a/vi/staking/intro/index.html +++ b/vi/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/staking/operator/deregister/index.html b/vi/staking/operator/deregister/index.html index 671a2e7ecf1..5676f1d62ad 100644 --- a/vi/staking/operator/deregister/index.html +++ b/vi/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/staking/operator/register/index.html b/vi/staking/operator/register/index.html index e0c6af19730..5f54cfb5b65 100644 --- a/vi/staking/operator/register/index.html +++ b/vi/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/staking/operator/tips/index.html b/vi/staking/operator/tips/index.html index cf3388dea98..223bfb14ca9 100644 --- a/vi/staking/operator/tips/index.html +++ b/vi/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/staking/stake/index.html b/vi/staking/stake/index.html index b3094d1ac88..f298ba0b758 100644 --- a/vi/staking/stake/index.html +++ b/vi/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/wallets/polkadot/index.html b/vi/wallets/polkadot/index.html index 2782bd2801c..d7989ce8ad6 100644 --- a/vi/wallets/polkadot/index.html +++ b/vi/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/vi/wallets/subwallet/index.html b/vi/wallets/subwallet/index.html index 79d92adaa2f..62f19da0753 100644 --- a/vi/wallets/subwallet/index.html +++ b/vi/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/wallets/polkadot/index.html b/wallets/polkadot/index.html index f5cd156cacc..cc1174b6f01 100644 --- a/wallets/polkadot/index.html +++ b/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/wallets/subwallet/index.html b/wallets/subwallet/index.html index 67e6d49fefe..7c4b374d67c 100644 --- a/wallets/subwallet/index.html +++ b/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/404.html b/zh/404.html index 5b4d9ead859..c67c8a112a8 100644 --- a/zh/404.html +++ b/zh/404.html @@ -12,7 +12,7 @@ - + diff --git a/zh/assets/js/a9920f74.53c598e4.js b/zh/assets/js/a9920f74.53c598e4.js deleted file mode 100644 index 0791b11b464..00000000000 --- a/zh/assets/js/a9920f74.53c598e4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[1299],{4674:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>o,contentTitle:()=>d,default:()=>x,frontMatter:()=>c,metadata:()=>a,toc:()=>u});var r=n(4848),s=n(8453),l=n(1470),i=n(9365);const c={title:"\u663e\u5361\u7ed8\u56fe\u5668",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["\u7ed8\u56fe","\u8015\u4f5c","GPU"]},d=void 0,a={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"\u663e\u5361\u7ed8\u56fe\u5668",description:"Tips on GPU Plotter",source:"@site/i18n/zh/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/zh/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"\u663e\u5361\u7ed8\u56fe\u5668",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["\u7ed8\u56fe","\u8015\u4f5c","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/zh/farming/guides"},next:{title:"\u7aef\u53e3\u8f6c\u53d1\u548c\u9632\u706b\u5899",permalink:"/zh/farming/guides/port-config"}},o={},u=[{value:"\u5e73\u53f0\u517c\u5bb9\u6027",id:"\u5e73\u53f0\u517c\u5bb9\u6027",level:2},{value:"\u652f\u6301\u7684\u663e\u5361",id:"\u652f\u6301\u7684\u663e\u5361",level:2},{value:"\u5e38\u89c1\u7ed8\u56fe\u53c2\u6570",id:"\u5e38\u89c1\u7ed8\u56fe\u53c2\u6570",level:2},{value:"\u8015\u79cd\u96c6\u7fa4",id:"\u8015\u79cd\u96c6\u7fa4",level:2},{value:"\u5df2\u77e5\u95ee\u9898",id:"\u5df2\u77e5\u95ee\u9898",level:2}];function h(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys \u4f7f\u7528\u60a8\u7684\u786c\u76d8\u5b58\u50a8\uff0c\u7279\u522b\u662fSSD\u6216NVMe \u786c\u76d8\u6765\u5b58\u50a8\u6570\u636e\u5757\u3002\u7ed8\u56fe\u8fc7\u7a0b\u7ed3\u675f\u540e\uff0c\u5c06\u4f7f\u7528\u60a8\u7684 CPU \u8015\u79cd\u8fd9\u4e9b\u6570\u636e\u5757\u3002\u8015\u79cd\u5bf9\u5904\u7406\u5668\u7684\u8981\u6c42\u5e76\u4e0d\u7279\u522b\u9ad8\uff0c\u8fd9\u4f7f\u5f97\u5927\u591a\u6570\u73b0\u4ee3\u5904\u7406\u5668\u90fd\u80fd\u591f\u7ba1\u7406\u76f8\u5f53\u5927\u89c4\u6a21\u7684\u519c\u573a\u3002\u7136\u800c\uff0c\u7ed8\u56fe\u5236\u4f5c\u8fc7\u7a0b\u8d44\u6e90\u9ad8\u5ea6\u5bc6\u96c6\uff0c\u8fd9\u4f7f\u5f97\u5904\u7406\u5668\u7ed8\u56fe\u6210\u4e3a\u4e3b\u8981\u7684\u74f6\u9888\u3002"}),"\n",(0,r.jsx)(t.p,{children:"\u4f7f\u7528\u663e\u5361\u7ed8\u56fe\u4f7f\u60a8\u80fd\u591f\u5229\u7528\u517c\u5bb9\u7684\u663e\u5361\u7b97\u529b\u6765\u751f\u6210\u6570\u636e\u5757\u548c\u91cd\u65b0\u7ed8\u56fe\uff0c \u4e0e\u5904\u7406\u5668\u540c\u65f6\u4f7f\u7528\u6216\u505a\u4e3a\u5904\u7406\u5668\u7684\u66ff\u4ee3\u54c1\u3002\u867d\u7136\u8bb8\u591a\u73b0\u4ee3\u7684\u5904\u7406\u5668\u53ef\u4ee5\u5728\u4e0d\u5230\u4e24\u5206\u949f\u7684\u65f6\u95f4\u5185\u5b8c\u6210\u4e00\u4e2a\u6247\u533a\u7684\u7ed8\u5236\uff0c\u4e00\u4e2a\u9ad8\u6027\u80fd\u663e\u5361\u5728\u4e94\u79d2\u949f\u5185\u53ef\u4ee5\u5b8c\u6210\u540c\u6837\u7684\u4efb\u52a1\uff0c\u5927\u5927\u63d0\u9ad8\u6548\u7387\u548c\u901f\u5ea6\u3002"}),"\n",(0,r.jsx)(t.p,{children:"\u867d\u7136\u663e\u5361\u7ed8\u56fe\u4e0d\u662f\u5f3a\u5236\u6027\u7684\uff0c\u4f46\u4e0e\u5355\u7eaf\u4f9d\u9760\u5904\u7406\u5668\u76f8\u6bd4\uff0c\u5b83\u63d0\u4f9b\u4e86\u66f4\u9ad8\u7684\u80fd\u6548\u548c\u901f\u5ea6\u3002"}),"\n",(0,r.jsx)(t.admonition,{title:"\u7ed8\u5236\u683c\u5f0f\u517c\u5bb9\u6027",type:"info",children:(0,r.jsx)(t.p,{children:"GPU \u7ed8\u56fe\u4f7f\u7528\u65b0\u7684 v1 \u6570\u636e\u5757\u683c\u5f0f\uff0c\u6b64\u683c\u5f0f\u5e94\u7528\u4e8e7\u67085\u65e5\u6216\u4e4b\u540e\u53d1\u5e03\u7248\u672c\u7684\u4efb\u4f55\u6570\u636e\u5757\u3002 \u76f8\u6bd4\u4e4b\u4e0b\uff0c\u8f83\u65e7\u7684\u8f6f\u4ef6\u7248\u672c\u751f\u6210\u4e86v0\u683c\u5f0f\u7684\u6570\u636e\u5757\uff0c\u8fd9\u53ea\u4e0e CPU \u6570\u636e\u5757\u517c\u5bb9\u3002"})}),"\n",(0,r.jsx)(t.h2,{id:"\u5e73\u53f0\u517c\u5bb9\u6027",children:"\u5e73\u53f0\u517c\u5bb9\u6027"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"\u5e73\u53f0"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"\u9ad8\u7ea7\u547d\u4ee4\u884c"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f \u90e8\u5206 AMD \u652f\u6301**\u4ec5\u9650Linux ** \u5728\u6700\u8fd1\u7684\u6d4b\u8bd5\u7248\u672c\u4e2d\u53ef\u4ee5\u4f7f\u7528\u3002\u6700\u65b0\u7684\u6d4b\u8bd5\u7248\u672c\u94fe\u63a5\u5728",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"\u8bba\u575b"})]}),(0,r.jsxs)(t.p,{children:["\u89c1Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," \u9891\u9053\u83b7\u5f97\u90e8\u5206\u652f\u6301\u3002"]})]}),"\n",(0,r.jsx)(t.h2,{id:"\u652f\u6301\u7684\u663e\u5361",children:"\u652f\u6301\u7684\u663e\u5361"}),"\n",(0,r.jsxs)(l.A,{queryString:"brand",children:[(0,r.jsxs)(i.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"\u7cfb\u5217/\u578b\u53f7"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\u652f\u6301"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx \u548c\u66f4\u65b0\u7684"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 \u7cfb\u5217"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(i.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"\u60a8\u5fc5\u987b\u4f7f\u7528\u6700\u65b0\u7684\u6d4b\u8bd5\u7248\u672c\u4ee5\u652f\u6301AMD\u3002"})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"\u7cfb\u5217/\u578b\u53f7"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(l.A,{groupId:"OS",children:[(0,r.jsxs)(i.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," \u4e8c\u8fdb\u5236\u6587\u4ef6\u63d0\u4f9bROCm \u652f\u6301\uff0c\u5e76\u63d0\u4f9b\u4e0e CUDA\u7c7b\u4f3c\u7684\u547d\u4ee4\u884c\u9009\u9879\uff0c\u5e76\u4ee5",(0,r.jsx)(t.code,{children:"--rocm"}),"\u4e3a\u524d\u7f00\u3002"]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["\u4e3a\u4e86\u5b89\u88c5\u5fc5\u8981\u7684\u5e93\uff0c\u8bf7\u5230 Ubuntu \u672c\u673a\u5b89\u88c5 \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm install (Linux)"}),"\uff0c\u5e76\u5728\u60a8\u7684 Ubuntu \u7248\u672c\u4e2d\u6309\u7167\u8fd9\u4e9b\u6b65\u9aa4\u8fdb\u884c\uff1a"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"\u5305\u7b7e\u540d\u5bc6\u94a5"}),"\n",(0,r.jsx)(t.li,{children:"\u6ce8\u518c ROCm \u5305\n\u4f60\u4e0d\u9700\u8981\u81ea\u5b9a\u4e49\u9a71\u52a8\u7a0b\u5e8f\u6216\u5b8c\u6574\u7684 ROCm \u5de5\u5177\u94fe\u6765\u4f7f\u7528\u5df2\u7f16\u8bd1\u7684\u5e94\u7528\u7a0b\u5e8f\uff0c\u56e0\u6b64\u8df3\u8fc7\u6240\u6709\u5176\u4ed6\u6b65\u9aa4\u3002"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"\u63a5\u4e0b\u6765\u5b89\u88c5\u4e00\u4e2a\u5e26ROCm \u8fd0\u884c\u65f6\u7684\u8f6f\u4ef6\u5305\uff1a"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"\u6ce8\u518c\u5e93\uff0c\u4ee5\u4fbf\u519c\u6c11\u53ef\u6267\u884c\u7a0b\u5e8f\u548c\u5176\u4ed6\u5e94\u7528\u80fd\u591f\u627e\u5230\u5b83\uff1a"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["\u7136\u540e\uff0c\u4e3a\u4e86\u5145\u8bb8\u7528\u6237\u4f7f\u7528\u663e\u5361\u7528\u4e8e\u8ba1\u7b97\uff0c\u4f60\u9700\u8981\u628a\u4f60\u7684\u7528\u6237\u52a0\u5165 render \u7528\u6237\u7ec4 (\u8bf7\u6c38\u8fdc\u4e0d\u8981\u4f7f\u7528sudo\u4ee5root\u8eab\u4efd\u8fd0\u884c\u519c\u6c11\u4e8c\u8fdb\u5236\u7a0b\u5e8f ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(i.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPU \u5728 Windows \u4e0a(\u5305\u62ec\u901a\u8fc7 WSL) \u76ee\u524d\u4e0d\u652f\u6301\u3002\u6211\u4eec\u5e0c\u671b\u5728\u672a\u6765\u6dfb\u52a0\u652f\u6301\u3002"})}),(0,r.jsxs)(i.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"\u4ea4\u53c9\u7f16\u8bd1\u4e0d\u518d\u9700\u8981\u5355\u72ec\u7684 Dockerfiles(\u56e0\u6b64\u5b83\u4eec\u88ab\u5220\u9664)\uff0c\u4e00\u4e2a\u6587\u4ef6\u540c\u65f6\u652f\u6301\u672c\u5730\u548c\u4ea4\u53c9\u7f16\u8bd1"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"\u5bb9\u5668\u955c\u50cf\u73b0\u5728\u6784\u5efa\u4e3a\u591a\u5e73\u53f0\uff0c\u610f\u5473\u7740\u6ca1\u6709-aarch64\u540e\u7f00\u548c\u4e0e\u4e4b\u76f8\u5173\u7684\u9ebb\u70e6"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 \u519c\u6c11\u5bb9\u5668\u955c\u50cf\u73b0\u5728\u7f16\u8bd1\u65f6\u5373\u652f\u6301 CUDA (\u4f46\u5e38\u89c4\u53ef\u6267\u884c\u6587\u4ef6\u4e0d\u662f)"})}),(0,r.jsxs)(t.p,{children:["\u5bb9\u5668\u56fe\u50cf\u73b0\u5728\u63d0\u4f9b\u7b2c\u4e8c\u4e2a\u53ef\u6267\u884c\u7684",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (\u89c1\u4e0a\u6587\u5173\u4e8e\u4e3a\u4f55\u9700\u8981\u7b2c\u4e8c\u4e2a\u4e8c\u8fdb\u5236\u6587\u4ef6\u7684\u89e3\u91ca)\u3002\n\u4ee5\u540e\u662f\u5982\u4f55\u5728 Docker Compose \u4e0b\u4f7f\u7528\u7684\u6f14\u793a, \u4f60\u53ef\u4ee5\u5c06\u5b83\u4f5c\u4e3a\u5176\u4ed6\u4f7f\u7528\u6848\u4f8b\u7684\u7075\u611f\uff1a"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(i.A,{value:"intel",label:"Intel",children:(0,r.jsx)(t.p,{children:"\u672a\u6765\u53ef\u80fd\u4f1a\u652f\u6301Intel Arc \u663e\u5361\uff0c\u4f46\u5177\u4f53\u7684\u517c\u5bb9\u6027\u7ec6\u8282\u5c1a\u672a\u516c\u5e03\u3002"})})]}),"\n",(0,r.jsx)(t.h2,{id:"\u5e38\u89c1\u7ed8\u56fe\u53c2\u6570",children:"\u5e38\u89c1\u7ed8\u56fe\u53c2\u6570"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"\u542f\u7528\u663e\u5361\u7ed8\u56fe"})}),"\n",(0,r.jsxs)(t.p,{children:["\u5f53\u68c0\u6d4b\u5230\u517c\u5bb9\u7684\u663e\u5361\u65f6\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u4f1a\u81ea\u52a8\u7981\u7528 CPU \u7ed8\u56fe\uff0c\u4f46\u5982\u679c\u9700\u8981\uff0c\u53ef\u4ee5\u901a\u8fc7\u6307\u5b9a\u5e76\u53d1\u7f16\u7801\u6247\u533a\u7684\u6570\u91cf\u6765\u91cd\u65b0\u542f\u7528\uff1a\n",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"\u7981\u7528\u663e\u5361\u7ed8\u56fe"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"\u6307\u5b9a\u5177\u4f53\u663e\u5361"})}),"\n",(0,r.jsxs)(t.p,{children:["\u6307\u5b9a\u7279\u5b9a\u7684\u663e\u5361\u7528\u4e8e\u7ed8\u56fe\u800c\u4e0d\u662f\u4f7f\u7528\u6240\u6709\u53ef\u7528\u7684\u663e\u5361 (\u9ed8\u8ba4\u914d\u7f6e\u4f7f\u7528\u6240\u6709\u517c\u5bb9\u7684\u663e\u5361):\n",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"\u8015\u79cd\u96c6\u7fa4",children:"\u8015\u79cd\u96c6\u7fa4"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."}),"\n",(0,r.jsx)(t.h2,{id:"\u5df2\u77e5\u95ee\u9898",children:"\u5df2\u77e5\u95ee\u9898"}),"\n",(0,r.jsx)(t.p,{children:"Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine."})]})}function x(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>i});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var l=n(4848);function i(e){let{children:t,hidden:n,className:i}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,i),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>A});var r=n(6540),s=n(8215),l=n(3104),i=n(6347),c=n(205),d=n(7485),a=n(1682),o=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,a.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function x(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function p(e){let{queryString:t=!1,groupId:n}=e;const s=(0,i.W6)(),l=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(s.location.search);t.set(l,e),s.replace({...s.location,search:t.toString()})}),[l,s])]}function j(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,l=h(e),[i,d]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!x({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:l}))),[a,u]=p({queryString:n,groupId:s}),[j,m]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,l]=(0,o.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&l.set(e)}),[n,l])]}({groupId:s}),g=(()=>{const e=a??j;return x({value:e,tabValues:l})?e:null})();(0,c.A)((()=>{g&&d(g)}),[g]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!x({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),u(e),m(e)}),[u,m,l]),tabValues:l}}var m=n(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:i,tabValues:c}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const t=e.currentTarget,n=d.indexOf(t),s=c[n].value;s!==r&&(a(t),i(s))},u=e=>{let t=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const n=d.indexOf(e.currentTarget)+1;t=d[n]??d[0];break}case"ArrowLeft":{const n=d.indexOf(e.currentTarget)-1;t=d[n]??d[d.length-1];break}}t?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:c.map((e=>{let{value:t,label:n,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>d.push(e),onKeyDown:u,onClick:o,...l,className:(0,s.A)("tabs__item",g.tabItem,l?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:l}=e;const i=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=i.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:i.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==l})))})}function v(e){const t=j(e);return(0,f.jsxs)("div",{className:(0,s.A)("tabs-container",g.tabList),children:[(0,f.jsx)(y,{...t,...e}),(0,f.jsx)(b,{...t,...e})]})}function A(e){const t=(0,m.A)();return(0,f.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>c});var r=n(6540);const s={},l=r.createContext(s);function i(e){const t=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(l.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/zh/assets/js/a9920f74.b5ceffd2.js b/zh/assets/js/a9920f74.b5ceffd2.js new file mode 100644 index 00000000000..482e912581c --- /dev/null +++ b/zh/assets/js/a9920f74.b5ceffd2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkportal=self.webpackChunkportal||[]).push([[1299],{4674:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>o,contentTitle:()=>d,default:()=>x,frontMatter:()=>c,metadata:()=>a,toc:()=>u});var r=n(4848),s=n(8453),l=n(1470),i=n(9365);const c={title:"\u663e\u5361\u7ed8\u56fe\u5668",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["\u7ed8\u56fe","\u8015\u4f5c","GPU"]},d=void 0,a={id:"farming-&-staking/farming/additional-guides/gpu-plotter",title:"\u663e\u5361\u7ed8\u56fe\u5668",description:"Tips on GPU Plotter",source:"@site/i18n/zh/docusaurus-plugin-content-docs/current/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",sourceDirName:"farming-&-staking/farming/additional-guides",slug:"/farming/guides/gpu-plotter",permalink:"/zh/farming/guides/gpu-plotter",draft:!1,unlisted:!1,editUrl:"https://github.com/autonomys/subspace-docs/edit/main/docs/farming-&-staking/farming/additional-guides/gpu-plotter.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"\u663e\u5361\u7ed8\u56fe\u5668",sidebar_position:1,description:"Tips on GPU Plotter",slug:"/farming/guides/gpu-plotter",keywords:["\u7ed8\u56fe","\u8015\u4f5c","GPU"]},sidebar:"tutorialSidebar",previous:{title:"Additional Guides",permalink:"/zh/farming/guides"},next:{title:"\u7aef\u53e3\u8f6c\u53d1\u548c\u9632\u706b\u5899",permalink:"/zh/farming/guides/port-config"}},o={},u=[{value:"\u5e73\u53f0\u517c\u5bb9\u6027",id:"\u5e73\u53f0\u517c\u5bb9\u6027",level:2},{value:"\u652f\u6301\u7684\u663e\u5361",id:"\u652f\u6301\u7684\u663e\u5361",level:2},{value:"\u5e38\u89c1\u7ed8\u56fe\u53c2\u6570",id:"\u5e38\u89c1\u7ed8\u56fe\u53c2\u6570",level:2},{value:"\u8015\u79cd\u96c6\u7fa4",id:"\u8015\u79cd\u96c6\u7fa4",level:2}];function h(e){const t={a:"a",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"Autonomys \u4f7f\u7528\u60a8\u7684\u786c\u76d8\u5b58\u50a8\uff0c\u7279\u522b\u662fSSD\u6216NVMe \u786c\u76d8\u6765\u5b58\u50a8\u6570\u636e\u5757\u3002\u7ed8\u56fe\u8fc7\u7a0b\u7ed3\u675f\u540e\uff0c\u5c06\u4f7f\u7528\u60a8\u7684 CPU \u8015\u79cd\u8fd9\u4e9b\u6570\u636e\u5757\u3002\u8015\u79cd\u5bf9\u5904\u7406\u5668\u7684\u8981\u6c42\u5e76\u4e0d\u7279\u522b\u9ad8\uff0c\u8fd9\u4f7f\u5f97\u5927\u591a\u6570\u73b0\u4ee3\u5904\u7406\u5668\u90fd\u80fd\u591f\u7ba1\u7406\u76f8\u5f53\u5927\u89c4\u6a21\u7684\u519c\u573a\u3002\u7136\u800c\uff0c\u7ed8\u56fe\u5236\u4f5c\u8fc7\u7a0b\u8d44\u6e90\u9ad8\u5ea6\u5bc6\u96c6\uff0c\u8fd9\u4f7f\u5f97\u5904\u7406\u5668\u7ed8\u56fe\u6210\u4e3a\u4e3b\u8981\u7684\u74f6\u9888\u3002"}),"\n",(0,r.jsx)(t.p,{children:"\u4f7f\u7528\u663e\u5361\u7ed8\u56fe\u4f7f\u60a8\u80fd\u591f\u5229\u7528\u517c\u5bb9\u7684\u663e\u5361\u7b97\u529b\u6765\u751f\u6210\u6570\u636e\u5757\u548c\u91cd\u65b0\u7ed8\u56fe\uff0c \u4e0e\u5904\u7406\u5668\u540c\u65f6\u4f7f\u7528\u6216\u505a\u4e3a\u5904\u7406\u5668\u7684\u66ff\u4ee3\u54c1\u3002\u867d\u7136\u8bb8\u591a\u73b0\u4ee3\u7684\u5904\u7406\u5668\u53ef\u4ee5\u5728\u4e0d\u5230\u4e24\u5206\u949f\u7684\u65f6\u95f4\u5185\u5b8c\u6210\u4e00\u4e2a\u6247\u533a\u7684\u7ed8\u5236\uff0c\u4e00\u4e2a\u9ad8\u6027\u80fd\u663e\u5361\u5728\u4e94\u79d2\u949f\u5185\u53ef\u4ee5\u5b8c\u6210\u540c\u6837\u7684\u4efb\u52a1\uff0c\u5927\u5927\u63d0\u9ad8\u6548\u7387\u548c\u901f\u5ea6\u3002"}),"\n",(0,r.jsx)(t.p,{children:"\u867d\u7136\u663e\u5361\u7ed8\u56fe\u4e0d\u662f\u5f3a\u5236\u6027\u7684\uff0c\u4f46\u4e0e\u5355\u7eaf\u4f9d\u9760\u5904\u7406\u5668\u76f8\u6bd4\uff0c\u5b83\u63d0\u4f9b\u4e86\u66f4\u9ad8\u7684\u80fd\u6548\u548c\u901f\u5ea6\u3002"}),"\n",(0,r.jsx)(t.h2,{id:"\u5e73\u53f0\u517c\u5bb9\u6027",children:"\u5e73\u53f0\u517c\u5bb9\u6027"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"\u5e73\u53f0"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83d\udc27 Linux"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\ud83e\ude9f Windows"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Nvidia"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"AMD"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Intel"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/subspace/releases",children:"\u9ad8\u7ea7\u547d\u4ee4\u884c"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udee0\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://github.com/autonomys/space-acres/releases",children:"Space Acres"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd1c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\ud83d\udd2e"})]})]})]}),"\n",(0,r.jsxs)("div",{className:"small-print",children:[(0,r.jsxs)(t.p,{children:["\ud83d\udee0\ufe0f \u90e8\u5206 AMD \u652f\u6301**\u4ec5\u9650Linux ** \u5728\u6700\u8fd1\u7684\u6d4b\u8bd5\u7248\u672c\u4e2d\u53ef\u4ee5\u4f7f\u7528\u3002\u6700\u65b0\u7684\u6d4b\u8bd5\u7248\u672c\u94fe\u63a5\u5728",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"\u8bba\u575b"})]}),(0,r.jsxs)(t.p,{children:["\u89c1Discord ",(0,r.jsx)(t.a,{href:"https://discord.com/channels/864285291518361610/1062507270539321485",children:"farmer-chat"})," \u9891\u9053\u83b7\u5f97\u90e8\u5206\u652f\u6301\u3002"]})]}),"\n",(0,r.jsx)(t.h2,{id:"\u652f\u6301\u7684\u663e\u5361",children:"\u652f\u6301\u7684\u663e\u5361"}),"\n",(0,r.jsxs)(l.A,{queryString:"brand",children:[(0,r.jsxs)(i.A,{value:"nvidia",label:"Nvidia",queryString:"nvidia",default:!0,children:[(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"\u7cfb\u5217/\u578b\u53f7"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"\u652f\u6301"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RTX 20xx \u548c\u66f4\u65b0\u7684"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"GTX 16 \u7cfb\u5217"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"})]})]})]}),(0,r.jsx)("div",{className:"small-print",children:(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["Nvidia ",(0,r.jsx)(t.a,{href:"https://developer.nvidia.com/cuda-downloads",children:"drivers"})," version 550 or later are required. Installing the CUDA Toolkit is not required."]})})})]}),(0,r.jsxs)(i.A,{value:"amd",label:"AMD",children:[(0,r.jsx)(t.p,{children:(0,r.jsxs)(t.em,{children:["There are many challenges to overcome regarding AMD ROCm support. There is much more information on this topic on the ",(0,r.jsx)(t.a,{href:"https://forum.autonomys.xyz/t/rocm-gpu-support-amd/4440",children:"forum"}),"."]})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"\u60a8\u5fc5\u987b\u4f7f\u7528\u6700\u65b0\u7684\u6d4b\u8bd5\u7248\u672c\u4ee5\u652f\u6301AMD\u3002"})}),(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"\u7cfb\u5217/\u578b\u53f7"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Ubuntu"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Windows"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7900 XTX"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 7600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6800"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2754"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 6600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2705"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700 XT"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5700"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"RX 5600"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"AMD BC-250"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u274c"})]})]})]}),(0,r.jsxs)(l.A,{groupId:"OS",children:[(0,r.jsxs)(i.A,{value:"linux",label:"\ud83d\udc27 Ubuntu",default:!0,children:[(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.code,{children:"subspace-farmer-rocm-*"})," \u4e8c\u8fdb\u5236\u6587\u4ef6\u63d0\u4f9bROCm \u652f\u6301\uff0c\u5e76\u63d0\u4f9b\u4e0e CUDA\u7c7b\u4f3c\u7684\u547d\u4ee4\u884c\u9009\u9879\uff0c\u5e76\u4ee5",(0,r.jsx)(t.code,{children:"--rocm"}),"\u4e3a\u524d\u7f00\u3002"]}),(0,r.jsxs)(t.ol,{children:["\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["\u4e3a\u4e86\u5b89\u88c5\u5fc5\u8981\u7684\u5e93\uff0c\u8bf7\u5230 Ubuntu \u672c\u673a\u5b89\u88c5 \u2014 ",(0,r.jsx)(t.a,{href:"https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.2/install/native-install/ubuntu.html",children:"ROCm install (Linux)"}),"\uff0c\u5e76\u5728\u60a8\u7684 Ubuntu \u7248\u672c\u4e2d\u6309\u7167\u8fd9\u4e9b\u6b65\u9aa4\u8fdb\u884c\uff1a"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"\u5305\u7b7e\u540d\u5bc6\u94a5"}),"\n",(0,r.jsx)(t.li,{children:"\u6ce8\u518c ROCm \u5305\n\u4f60\u4e0d\u9700\u8981\u81ea\u5b9a\u4e49\u9a71\u52a8\u7a0b\u5e8f\u6216\u5b8c\u6574\u7684 ROCm \u5de5\u5177\u94fe\u6765\u4f7f\u7528\u5df2\u7f16\u8bd1\u7684\u5e94\u7528\u7a0b\u5e8f\uff0c\u56e0\u6b64\u8df3\u8fc7\u6240\u6709\u5176\u4ed6\u6b65\u9aa4\u3002"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"\u63a5\u4e0b\u6765\u5b89\u88c5\u4e00\u4e2a\u5e26ROCm \u8fd0\u884c\u65f6\u7684\u8f6f\u4ef6\u5305\uff1a"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo apt-get install --no-install-recommends hip-runtime-amd\n"})}),"\n",(0,r.jsx)(t.p,{children:"\u6ce8\u518c\u5e93\uff0c\u4ee5\u4fbf\u519c\u6c11\u53ef\u6267\u884c\u7a0b\u5e8f\u548c\u5176\u4ed6\u5e94\u7528\u80fd\u591f\u627e\u5230\u5b83\uff1a"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:'echo "/opt/rocm/lib" | sudo tee /etc/ld.so.conf.d/rocm.conf > /dev/null\nsudo ldconfig\n'})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsxs)(t.p,{children:["\u7136\u540e\uff0c\u4e3a\u4e86\u5145\u8bb8\u7528\u6237\u4f7f\u7528\u663e\u5361\u7528\u4e8e\u8ba1\u7b97\uff0c\u4f60\u9700\u8981\u628a\u4f60\u7684\u7528\u6237\u52a0\u5165 render \u7528\u6237\u7ec4 (\u8bf7\u6c38\u8fdc\u4e0d\u8981\u4f7f\u7528sudo\u4ee5root\u8eab\u4efd\u8fd0\u884c\u519c\u6c11\u4e8c\u8fdb\u5236\u7a0b\u5e8f ","\ud83d\ude4f"," ):"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"sudo usermod -a -G render $LOGNAME\n"})}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["\n",(0,r.jsx)(t.p,{children:"Now you'll need to log out of your user profile and log back in or simply reboot for group changes to take effect and you're ready to go."}),"\n"]}),"\n"]})]}),(0,r.jsx)(i.A,{value:"windows",label:"\ud83e\ude9f Windows",children:(0,r.jsx)(t.p,{children:"AMD GPU \u5728 Windows \u4e0a(\u5305\u62ec\u901a\u8fc7 WSL) \u76ee\u524d\u4e0d\u652f\u6301\u3002\u6211\u4eec\u5e0c\u671b\u5728\u672a\u6765\u6dfb\u52a0\u652f\u6301\u3002"})}),(0,r.jsxs)(i.A,{value:"docker",label:"\ud83d\udc33 Docker",children:[(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"\u4ea4\u53c9\u7f16\u8bd1\u4e0d\u518d\u9700\u8981\u5355\u72ec\u7684 Dockerfiles(\u56e0\u6b64\u5b83\u4eec\u88ab\u5220\u9664)\uff0c\u4e00\u4e2a\u6587\u4ef6\u540c\u65f6\u652f\u6301\u672c\u5730\u548c\u4ea4\u53c9\u7f16\u8bd1"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"\u5bb9\u5668\u955c\u50cf\u73b0\u5728\u6784\u5efa\u4e3a\u591a\u5e73\u53f0\uff0c\u610f\u5473\u7740\u6ca1\u6709-aarch64\u540e\u7f00\u548c\u4e0e\u4e4b\u76f8\u5173\u7684\u9ebb\u70e6"})}),(0,r.jsx)(t.p,{children:(0,r.jsx)(t.em,{children:"Aarch64 \u519c\u6c11\u5bb9\u5668\u955c\u50cf\u73b0\u5728\u7f16\u8bd1\u65f6\u5373\u652f\u6301 CUDA (\u4f46\u5e38\u89c4\u53ef\u6267\u884c\u6587\u4ef6\u4e0d\u662f)"})}),(0,r.jsxs)(t.p,{children:["\u5bb9\u5668\u56fe\u50cf\u73b0\u5728\u63d0\u4f9b\u7b2c\u4e8c\u4e2a\u53ef\u6267\u884c\u7684",(0,r.jsx)(t.code,{children:"/subspace-farmer-rocm"})," (\u89c1\u4e0a\u6587\u5173\u4e8e\u4e3a\u4f55\u9700\u8981\u7b2c\u4e8c\u4e2a\u4e8c\u8fdb\u5236\u6587\u4ef6\u7684\u89e3\u91ca)\u3002\n\u4ee5\u540e\u662f\u5982\u4f55\u5728 Docker Compose \u4e0b\u4f7f\u7528\u7684\u6f14\u793a, \u4f60\u53ef\u4ee5\u5c06\u5b83\u4f5c\u4e3a\u5176\u4ed6\u4f7f\u7528\u6848\u4f8b\u7684\u7075\u611f\uff1a"]}),(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-text",children:"services:\n famer:\n image: ghcr.io/autonomys/farmer:TAG\n # Beginning of ROCm-specific options\n devices:\n - /dev/kfd:/dev/kfd\n # This will make all GPUs accessible, you can also limit this\n # to individual devices like `/dev/dri/renderD128`\n - /dev/dri:/dev/dri\n security_opt:\n - seccomp:unconfined\n # `root` user can be replaced with ID of the user on the host system\n # that is in `render` group, needed to access `/dev/kfd` device\n user: root\n entrypoint: /subspace-farmer-rocm\n # End of ROCm-specific options\n ...the rest of typical options you'd normally use\n"})})]})]})]}),(0,r.jsx)(i.A,{value:"intel",label:"Intel",children:(0,r.jsx)(t.p,{children:"\u672a\u6765\u53ef\u80fd\u4f1a\u652f\u6301Intel Arc \u663e\u5361\uff0c\u4f46\u5177\u4f53\u7684\u517c\u5bb9\u6027\u7ec6\u8282\u5c1a\u672a\u516c\u5e03\u3002"})})]}),"\n",(0,r.jsx)(t.h2,{id:"\u5e38\u89c1\u7ed8\u56fe\u53c2\u6570",children:"\u5e38\u89c1\u7ed8\u56fe\u53c2\u6570"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"\u542f\u7528\u663e\u5361\u7ed8\u56fe"})}),"\n",(0,r.jsxs)(t.p,{children:["\u5f53\u68c0\u6d4b\u5230\u517c\u5bb9\u7684\u663e\u5361\u65f6\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u4f1a\u81ea\u52a8\u7981\u7528 CPU \u7ed8\u56fe\uff0c\u4f46\u5982\u679c\u9700\u8981\uff0c\u53ef\u4ee5\u901a\u8fc7\u6307\u5b9a\u5e76\u53d1\u7f16\u7801\u6247\u533a\u7684\u6570\u91cf\u6765\u91cd\u65b0\u542f\u7528\uff1a\n",(0,r.jsx)(t.code,{children:"--cpu-sector-encoding-concurrency "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cpu-sector-encoding-concurrency 2\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"\u7981\u7528\u663e\u5361\u7ed8\u56fe"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",metastring:'title="Linux"',children:' --cuda-gpus ""\n'})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-powershell",metastring:'title="Windows"',children:"--cuda-gpus 99\n"})}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"\u6307\u5b9a\u5177\u4f53\u663e\u5361"})}),"\n",(0,r.jsxs)(t.p,{children:["\u6307\u5b9a\u7279\u5b9a\u7684\u663e\u5361\u7528\u4e8e\u7ed8\u56fe\u800c\u4e0d\u662f\u4f7f\u7528\u6240\u6709\u53ef\u7528\u7684\u663e\u5361 (\u9ed8\u8ba4\u914d\u7f6e\u4f7f\u7528\u6240\u6709\u517c\u5bb9\u7684\u663e\u5361):\n",(0,r.jsx)(t.code,{children:"--cuda-gpus "})]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-bash",children:"--cuda-gpus 0,1,3\n"})}),"\n",(0,r.jsx)(t.h2,{id:"\u8015\u79cd\u96c6\u7fa4",children:"\u8015\u79cd\u96c6\u7fa4"}),"\n",(0,r.jsx)(t.p,{children:"When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher."})]})}function x(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},9365:(e,t,n)=>{n.d(t,{A:()=>i});n(6540);var r=n(8215);const s={tabItem:"tabItem_Ymn6"};var l=n(4848);function i(e){let{children:t,hidden:n,className:i}=e;return(0,l.jsx)("div",{role:"tabpanel",className:(0,r.A)(s.tabItem,i),hidden:n,children:t})}},1470:(e,t,n)=>{n.d(t,{A:()=>A});var r=n(6540),s=n(8215),l=n(3104),i=n(6347),c=n(205),d=n(7485),a=n(1682),o=n(679);function u(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:n}=e;return(0,r.useMemo)((()=>{const e=t??function(e){return u(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:s}}=e;return{value:t,label:n,attributes:r,default:s}}))}(n);return function(e){const t=(0,a.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,n])}function x(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function p(e){let{queryString:t=!1,groupId:n}=e;const s=(0,i.W6)(),l=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,d.aZ)(l),(0,r.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(s.location.search);t.set(l,e),s.replace({...s.location,search:t.toString()})}),[l,s])]}function j(e){const{defaultValue:t,queryString:n=!1,groupId:s}=e,l=h(e),[i,d]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!x({value:t,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:l}))),[a,u]=p({queryString:n,groupId:s}),[j,g]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[s,l]=(0,o.Dv)(n);return[s,(0,r.useCallback)((e=>{n&&l.set(e)}),[n,l])]}({groupId:s}),m=(()=>{const e=a??j;return x({value:e,tabValues:l})?e:null})();(0,c.A)((()=>{m&&d(m)}),[m]);return{selectedValue:i,selectValue:(0,r.useCallback)((e=>{if(!x({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);d(e),u(e),g(e)}),[u,g,l]),tabValues:l}}var g=n(2303);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=n(4848);function y(e){let{className:t,block:n,selectedValue:r,selectValue:i,tabValues:c}=e;const d=[],{blockElementScrollPositionUntilNextRender:a}=(0,l.a_)(),o=e=>{const t=e.currentTarget,n=d.indexOf(t),s=c[n].value;s!==r&&(a(t),i(s))},u=e=>{let t=null;switch(e.key){case"Enter":o(e);break;case"ArrowRight":{const n=d.indexOf(e.currentTarget)+1;t=d[n]??d[0];break}case"ArrowLeft":{const n=d.indexOf(e.currentTarget)-1;t=d[n]??d[d.length-1];break}}t?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},t),children:c.map((e=>{let{value:t,label:n,attributes:l}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:r===t?0:-1,"aria-selected":r===t,ref:e=>d.push(e),onKeyDown:u,onClick:o,...l,className:(0,s.A)("tabs__item",m.tabItem,l?.className,{"tabs__item--active":r===t}),children:n??t},t)}))})}function b(e){let{lazy:t,children:n,selectedValue:l}=e;const i=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=i.find((e=>e.props.value===l));return e?(0,r.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:i.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==l})))})}function v(e){const t=j(e);return(0,f.jsxs)("div",{className:(0,s.A)("tabs-container",m.tabList),children:[(0,f.jsx)(y,{...t,...e}),(0,f.jsx)(b,{...t,...e})]})}function A(e){const t=(0,g.A)();return(0,f.jsx)(v,{...e,children:u(e.children)},String(t))}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>c});var r=n(6540);const s={},l=r.createContext(s);function i(e){const t=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(l.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/zh/assets/js/runtime~main.3be9ac9c.js b/zh/assets/js/runtime~main.9366ed20.js similarity index 97% rename from zh/assets/js/runtime~main.3be9ac9c.js rename to zh/assets/js/runtime~main.9366ed20.js index 0c5c37e5693..d01282777d9 100644 --- a/zh/assets/js/runtime~main.3be9ac9c.js +++ b/zh/assets/js/runtime~main.9366ed20.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,f,d,t,r={},c={};function b(e){var a=c[e];if(void 0!==a)return a.exports;var f=c[e]={exports:{}};return r[e].call(f.exports,f,f.exports,b),f.exports}b.m=r,e=[],b.O=(a,f,d,t)=>{if(!f){var r=1/0;for(i=0;i=t)&&Object.keys(b.O).every((e=>b.O[e](f[o])))?f.splice(o--,1):(c=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[f,d,t]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var t=Object.create(null);b.r(t);var r={};a=a||[null,f({}),f([]),f(f)];for(var c=2&d&&e;"object"==typeof c&&!~a.indexOf(c);c=f(c))Object.getOwnPropertyNames(c).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,b.d(t,r),t},b.d=(e,a)=>{for(var f in a)b.o(a,f)&&!b.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,f)=>(b.f[f](e,a),a)),[])),b.u=e=>"assets/js/"+({67:"246b0099",1051:"c4adda54",1235:"a7456010",1299:"a9920f74",1485:"0ac64da7",2904:"8f66e27e",2989:"bdd9f60e",3024:"b0888f6e",3506:"99c6e3f2",3552:"b2a1b465",3577:"d5f3a463",3682:"c5c993f7",4039:"0caadbe8",4134:"393be207",4223:"4bac219f",4332:"75122f20",4545:"2d52d47d",4580:"666562f2",4583:"1df93b7f",4649:"070e8e4e",4679:"d77865d9",4832:"cadf5aed",4993:"90543902",5079:"6b2f73c3",5368:"18f8c722",5582:"87255d86",5622:"ad7c4703",5709:"fb5bfad4",5712:"56ae784e",5742:"aba21aa0",5849:"3b1b97f6",6061:"1f391b9e",6235:"5cb26121",6528:"ba11bf3c",6566:"7b00294a",6605:"fd88ef41",6847:"4104baf8",6969:"14eb3368",7048:"f1e7ca13",7098:"a7bd4aaa",7188:"285f32e8",7649:"f06d8a94",7678:"7812d9ce",7910:"78cca72d",8018:"301338cd",8401:"17896441",8445:"114fbca4",8732:"f52d6109",9034:"c00d4aa2",9048:"a94703ab",9060:"9dfeb711",9220:"ca9ace4e",9483:"9c27cfb8",9521:"5e1c30c8",9619:"4a0438dd",9647:"5e95c892",9662:"e67538e6",9697:"d8ef6997"}[e]||e)+"."+{67:"dfd8652c",1051:"deaba514",1235:"deb810c9",1299:"53c598e4",1485:"ea0d47bb",1688:"af0e6f17",2237:"c851d8b1",2440:"ecd0621f",2904:"51f15b93",2989:"ae08ebba",3024:"7a1b2b29",3506:"357a9a55",3552:"5c0de0f1",3577:"3c03776a",3682:"f711d047",4039:"14dd34c0",4134:"5b48e3e0",4223:"ca125573",4324:"fec3e18f",4332:"07b32e3e",4545:"6da9a288",4580:"757808df",4583:"c0d080f8",4649:"7f4b04df",4679:"5ef162de",4832:"2b3bf29d",4993:"1978d686",5049:"7f13b97c",5079:"e6e30c56",5368:"800e12bc",5394:"83d77ce3",5582:"f781d430",5622:"a110a2e3",5709:"089b9ae2",5712:"a5c88c25",5742:"08d6695f",5849:"7d6b6463",6061:"fc18f174",6235:"3007a501",6528:"ab550dd5",6566:"a4e992d5",6605:"3c8c2866",6688:"86f0bb7d",6847:"66caa455",6969:"4f11b87f",7048:"6c2dd971",7098:"c4e87eeb",7188:"0323dfd9",7649:"bef28feb",7678:"f25f2f82",7910:"96aa5bee",8018:"ffef012d",8401:"3769c7ca",8445:"242e71c6",8732:"c8f6fcb9",8913:"0680f2c1",9034:"31ef1f02",9048:"3a629456",9060:"6220e055",9220:"faac463d",9462:"be2eb63e",9483:"19b6a9dd",9521:"2b4a1e89",9619:"37d1b0fa",9647:"e4c313e0",9662:"a683ec2b",9697:"708fd74f"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},t="portal:",b.l=(e,a,f,r)=>{if(d[e])d[e].push(a);else{var c,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var t=d[e];if(delete d[e],c.parentNode&&c.parentNode.removeChild(c),t&&t.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),o&&document.head.appendChild(c)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/zh/",b.gca=function(e){return e={17896441:"8401",90543902:"4993","246b0099":"67",c4adda54:"1051",a7456010:"1235",a9920f74:"1299","0ac64da7":"1485","8f66e27e":"2904",bdd9f60e:"2989",b0888f6e:"3024","99c6e3f2":"3506",b2a1b465:"3552",d5f3a463:"3577",c5c993f7:"3682","0caadbe8":"4039","393be207":"4134","4bac219f":"4223","75122f20":"4332","2d52d47d":"4545","666562f2":"4580","1df93b7f":"4583","070e8e4e":"4649",d77865d9:"4679",cadf5aed:"4832","6b2f73c3":"5079","18f8c722":"5368","87255d86":"5582",ad7c4703:"5622",fb5bfad4:"5709","56ae784e":"5712",aba21aa0:"5742","3b1b97f6":"5849","1f391b9e":"6061","5cb26121":"6235",ba11bf3c:"6528","7b00294a":"6566",fd88ef41:"6605","4104baf8":"6847","14eb3368":"6969",f1e7ca13:"7048",a7bd4aaa:"7098","285f32e8":"7188",f06d8a94:"7649","7812d9ce":"7678","78cca72d":"7910","301338cd":"8018","114fbca4":"8445",f52d6109:"8732",c00d4aa2:"9034",a94703ab:"9048","9dfeb711":"9060",ca9ace4e:"9220","9c27cfb8":"9483","5e1c30c8":"9521","4a0438dd":"9619","5e95c892":"9647",e67538e6:"9662",d8ef6997:"9697"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,f)=>{var d=b.o(e,a)?e[a]:void 0;if(0!==d)if(d)f.push(d[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((f,t)=>d=e[a]=[f,t]));f.push(d[2]=t);var r=b.p+b.u(a),c=new Error;b.l(r,(f=>{if(b.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var t=f&&("load"===f.type?"missing":f.type),r=f&&f.target&&f.target.src;c.message="Loading chunk "+a+" failed.\n("+t+": "+r+")",c.name="ChunkLoadError",c.type=t,c.request=r,d[1](c)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,f)=>{var d,t,r=f[0],c=f[1],o=f[2],n=0;if(r.some((a=>0!==e[a]))){for(d in c)b.o(c,d)&&(b.m[d]=c[d]);if(o)var i=o(b)}for(a&&a(f);n{"use strict";var e,a,f,d,t,r={},c={};function b(e){var a=c[e];if(void 0!==a)return a.exports;var f=c[e]={exports:{}};return r[e].call(f.exports,f,f.exports,b),f.exports}b.m=r,e=[],b.O=(a,f,d,t)=>{if(!f){var r=1/0;for(i=0;i=t)&&Object.keys(b.O).every((e=>b.O[e](f[o])))?f.splice(o--,1):(c=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[f,d,t]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var t=Object.create(null);b.r(t);var r={};a=a||[null,f({}),f([]),f(f)];for(var c=2&d&&e;"object"==typeof c&&!~a.indexOf(c);c=f(c))Object.getOwnPropertyNames(c).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,b.d(t,r),t},b.d=(e,a)=>{for(var f in a)b.o(a,f)&&!b.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,f)=>(b.f[f](e,a),a)),[])),b.u=e=>"assets/js/"+({67:"246b0099",1051:"c4adda54",1235:"a7456010",1299:"a9920f74",1485:"0ac64da7",2904:"8f66e27e",2989:"bdd9f60e",3024:"b0888f6e",3506:"99c6e3f2",3552:"b2a1b465",3577:"d5f3a463",3682:"c5c993f7",4039:"0caadbe8",4134:"393be207",4223:"4bac219f",4332:"75122f20",4545:"2d52d47d",4580:"666562f2",4583:"1df93b7f",4649:"070e8e4e",4679:"d77865d9",4832:"cadf5aed",4993:"90543902",5079:"6b2f73c3",5368:"18f8c722",5582:"87255d86",5622:"ad7c4703",5709:"fb5bfad4",5712:"56ae784e",5742:"aba21aa0",5849:"3b1b97f6",6061:"1f391b9e",6235:"5cb26121",6528:"ba11bf3c",6566:"7b00294a",6605:"fd88ef41",6847:"4104baf8",6969:"14eb3368",7048:"f1e7ca13",7098:"a7bd4aaa",7188:"285f32e8",7649:"f06d8a94",7678:"7812d9ce",7910:"78cca72d",8018:"301338cd",8401:"17896441",8445:"114fbca4",8732:"f52d6109",9034:"c00d4aa2",9048:"a94703ab",9060:"9dfeb711",9220:"ca9ace4e",9483:"9c27cfb8",9521:"5e1c30c8",9619:"4a0438dd",9647:"5e95c892",9662:"e67538e6",9697:"d8ef6997"}[e]||e)+"."+{67:"dfd8652c",1051:"deaba514",1235:"deb810c9",1299:"b5ceffd2",1485:"ea0d47bb",1688:"af0e6f17",2237:"c851d8b1",2440:"ecd0621f",2904:"51f15b93",2989:"ae08ebba",3024:"7a1b2b29",3506:"357a9a55",3552:"5c0de0f1",3577:"3c03776a",3682:"f711d047",4039:"14dd34c0",4134:"5b48e3e0",4223:"ca125573",4324:"fec3e18f",4332:"07b32e3e",4545:"6da9a288",4580:"757808df",4583:"c0d080f8",4649:"7f4b04df",4679:"5ef162de",4832:"2b3bf29d",4993:"1978d686",5049:"7f13b97c",5079:"e6e30c56",5368:"800e12bc",5394:"83d77ce3",5582:"f781d430",5622:"a110a2e3",5709:"089b9ae2",5712:"a5c88c25",5742:"08d6695f",5849:"7d6b6463",6061:"fc18f174",6235:"3007a501",6528:"ab550dd5",6566:"a4e992d5",6605:"3c8c2866",6688:"86f0bb7d",6847:"66caa455",6969:"4f11b87f",7048:"6c2dd971",7098:"c4e87eeb",7188:"0323dfd9",7649:"bef28feb",7678:"f25f2f82",7910:"96aa5bee",8018:"ffef012d",8401:"3769c7ca",8445:"242e71c6",8732:"c8f6fcb9",8913:"0680f2c1",9034:"31ef1f02",9048:"3a629456",9060:"6220e055",9220:"faac463d",9462:"be2eb63e",9483:"19b6a9dd",9521:"2b4a1e89",9619:"37d1b0fa",9647:"e4c313e0",9662:"a683ec2b",9697:"708fd74f"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},t="portal:",b.l=(e,a,f,r)=>{if(d[e])d[e].push(a);else{var c,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(s);var t=d[e];if(delete d[e],c.parentNode&&c.parentNode.removeChild(c),t&&t.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),o&&document.head.appendChild(c)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/zh/",b.gca=function(e){return e={17896441:"8401",90543902:"4993","246b0099":"67",c4adda54:"1051",a7456010:"1235",a9920f74:"1299","0ac64da7":"1485","8f66e27e":"2904",bdd9f60e:"2989",b0888f6e:"3024","99c6e3f2":"3506",b2a1b465:"3552",d5f3a463:"3577",c5c993f7:"3682","0caadbe8":"4039","393be207":"4134","4bac219f":"4223","75122f20":"4332","2d52d47d":"4545","666562f2":"4580","1df93b7f":"4583","070e8e4e":"4649",d77865d9:"4679",cadf5aed:"4832","6b2f73c3":"5079","18f8c722":"5368","87255d86":"5582",ad7c4703:"5622",fb5bfad4:"5709","56ae784e":"5712",aba21aa0:"5742","3b1b97f6":"5849","1f391b9e":"6061","5cb26121":"6235",ba11bf3c:"6528","7b00294a":"6566",fd88ef41:"6605","4104baf8":"6847","14eb3368":"6969",f1e7ca13:"7048",a7bd4aaa:"7098","285f32e8":"7188",f06d8a94:"7649","7812d9ce":"7678","78cca72d":"7910","301338cd":"8018","114fbca4":"8445",f52d6109:"8732",c00d4aa2:"9034",a94703ab:"9048","9dfeb711":"9060",ca9ace4e:"9220","9c27cfb8":"9483","5e1c30c8":"9521","4a0438dd":"9619","5e95c892":"9647",e67538e6:"9662",d8ef6997:"9697"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,f)=>{var d=b.o(e,a)?e[a]:void 0;if(0!==d)if(d)f.push(d[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((f,t)=>d=e[a]=[f,t]));f.push(d[2]=t);var r=b.p+b.u(a),c=new Error;b.l(r,(f=>{if(b.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var t=f&&("load"===f.type?"missing":f.type),r=f&&f.target&&f.target.src;c.message="Loading chunk "+a+" failed.\n("+t+": "+r+")",c.name="ChunkLoadError",c.type=t,c.request=r,d[1](c)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,f)=>{var d,t,r=f[0],c=f[1],o=f[2],n=0;if(r.some((a=>0!==e[a]))){for(d in c)b.o(c,d)&&(b.m[d]=c[d]);if(o)var i=o(b)}for(a&&a(f);n - + diff --git a/zh/develop/auto-sdk/auto-id/index.html b/zh/develop/auto-sdk/auto-id/index.html index 34fea3aa6a4..8f9753d62ef 100644 --- a/zh/develop/auto-sdk/auto-id/index.html +++ b/zh/develop/auto-sdk/auto-id/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/auto-sdk/consensus/index.html b/zh/develop/auto-sdk/consensus/index.html index 2331b1cfcfc..de3b4ed95c0 100644 --- a/zh/develop/auto-sdk/consensus/index.html +++ b/zh/develop/auto-sdk/consensus/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/auto-sdk/drive/index.html b/zh/develop/auto-sdk/drive/index.html index 8648076e85f..d6825cb7a3d 100644 --- a/zh/develop/auto-sdk/drive/index.html +++ b/zh/develop/auto-sdk/drive/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/auto-sdk/index.html b/zh/develop/auto-sdk/index.html index 7d8686662e3..569b483d0fa 100644 --- a/zh/develop/auto-sdk/index.html +++ b/zh/develop/auto-sdk/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/auto-sdk/intro/index.html b/zh/develop/auto-sdk/intro/index.html index 5ec7cab5eef..2a67bc9a4e8 100644 --- a/zh/develop/auto-sdk/intro/index.html +++ b/zh/develop/auto-sdk/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/auto-sdk/utils/index.html b/zh/develop/auto-sdk/utils/index.html index 418bce4201f..8ff944309ac 100644 --- a/zh/develop/auto-sdk/utils/index.html +++ b/zh/develop/auto-sdk/utils/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/auto-sdk/xdm/index.html b/zh/develop/auto-sdk/xdm/index.html index 5b6ec48ca6a..ed5d4fae396 100644 --- a/zh/develop/auto-sdk/xdm/index.html +++ b/zh/develop/auto-sdk/xdm/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/intro/index.html b/zh/develop/intro/index.html index 7769d449539..af3173169e4 100644 --- a/zh/develop/intro/index.html +++ b/zh/develop/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/nova/block-explorer/index.html b/zh/develop/nova/block-explorer/index.html index 55d521de1a0..fdbbf6a186f 100644 --- a/zh/develop/nova/block-explorer/index.html +++ b/zh/develop/nova/block-explorer/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/nova/faucet/index.html b/zh/develop/nova/faucet/index.html index 2a5a0a1c917..c29f9af4f28 100644 --- a/zh/develop/nova/faucet/index.html +++ b/zh/develop/nova/faucet/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/nova/general/index.html b/zh/develop/nova/general/index.html index a2a4b0d757d..43d37cbd049 100644 --- a/zh/develop/nova/general/index.html +++ b/zh/develop/nova/general/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/nova/guides/foundry/index.html b/zh/develop/nova/guides/foundry/index.html index 7a5aca58463..d8af04e06cc 100644 --- a/zh/develop/nova/guides/foundry/index.html +++ b/zh/develop/nova/guides/foundry/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/nova/guides/hardhat/index.html b/zh/develop/nova/guides/hardhat/index.html index 80203814635..84457737d61 100644 --- a/zh/develop/nova/guides/hardhat/index.html +++ b/zh/develop/nova/guides/hardhat/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/nova/guides/local-development/index.html b/zh/develop/nova/guides/local-development/index.html index af53b79104e..5aa67c768cb 100644 --- a/zh/develop/nova/guides/local-development/index.html +++ b/zh/develop/nova/guides/local-development/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/nova/guides/remix/index.html b/zh/develop/nova/guides/remix/index.html index 5abb2455320..372ac9147a5 100644 --- a/zh/develop/nova/guides/remix/index.html +++ b/zh/develop/nova/guides/remix/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/nova/index.html b/zh/develop/nova/index.html index a49d4de5907..8d1e007279d 100644 --- a/zh/develop/nova/index.html +++ b/zh/develop/nova/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/nova/introduction/index.html b/zh/develop/nova/introduction/index.html index 5163df3cf48..773e70a0f72 100644 --- a/zh/develop/nova/introduction/index.html +++ b/zh/develop/nova/introduction/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/develop/nova/metamask/index.html b/zh/develop/nova/metamask/index.html index 9972b2675ff..f4c9008143f 100644 --- a/zh/develop/nova/metamask/index.html +++ b/zh/develop/nova/metamask/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/advanced-cli/cluster/index.html b/zh/farming/advanced-cli/cluster/index.html index 74dbe8f2a0e..6ef37afb2c4 100644 --- a/zh/farming/advanced-cli/cluster/index.html +++ b/zh/farming/advanced-cli/cluster/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/advanced-cli/install/index.html b/zh/farming/advanced-cli/install/index.html index daedd3ac964..e098a839808 100644 --- a/zh/farming/advanced-cli/install/index.html +++ b/zh/farming/advanced-cli/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/advanced-cli/tips/index.html b/zh/farming/advanced-cli/tips/index.html index 8a35ec35971..4bc1b818843 100644 --- a/zh/farming/advanced-cli/tips/index.html +++ b/zh/farming/advanced-cli/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/common-problems/index.html b/zh/farming/common-problems/index.html index 9b81663c501..2aff9f75ea5 100644 --- a/zh/farming/common-problems/index.html +++ b/zh/farming/common-problems/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/guides/gpu-plotter/index.html b/zh/farming/guides/gpu-plotter/index.html index 5f5678fab50..f2dec3bd7d5 100644 --- a/zh/farming/guides/gpu-plotter/index.html +++ b/zh/farming/guides/gpu-plotter/index.html @@ -12,19 +12,18 @@ - +

显卡绘图器

Autonomys 使用您的硬盘存储,特别是SSD或NVMe 硬盘来存储数据块。绘图过程结束后,将使用您的 CPU 耕种这些数据块。耕种对处理器的要求并不特别高,这使得大多数现代处理器都能够管理相当大规模的农场。然而,绘图制作过程资源高度密集,这使得处理器绘图成为主要的瓶颈。

使用显卡绘图使您能够利用兼容的显卡算力来生成数据块和重新绘图, 与处理器同时使用或做为处理器的替代品。虽然许多现代的处理器可以在不到两分钟的时间内完成一个扇区的绘制,一个高性能显卡在五秒钟内可以完成同样的任务,大大提高效率和速度。

虽然显卡绘图不是强制性的,但与单纯依靠处理器相比,它提供了更高的能效和速度。

-
绘制格式兼容性

GPU 绘图使用新的 v1 数据块格式,此格式应用于7月5日或之后发布版本的任何数据块。 相比之下,较旧的软件版本生成了v0格式的数据块,这只与 CPU 数据块兼容。

平台兼容性

平台🐧 Linux🪟 WindowsNvidiaAMDIntel
高级命令行🛠️🔮
Space Acres🔜🔮

🛠️ 部分 AMD 支持**仅限Linux ** 在最近的测试版本中可以使用。最新的测试版本链接在论坛

见Discord farmer-chat 频道获得部分支持。

支持的显卡

-
系列/型号支持
RTX 20xx 和更新的
GTX 16 系列

Nvidia drivers version 550 or later are required. Installing the CUDA Toolkit is not required.

常见绘图参数

启用显卡绘图

-

当检测到兼容的显卡时,默认情况下会自动禁用 CPU 绘图,但如果需要,可以通过指定并发编码扇区的数量来重新启用: +

当检测到兼容的显卡时,默认情况下会自动禁用 CPU 绘图,但如果需要,可以通过指定并发编码扇区的数量来重新启用: --cpu-sector-encoding-concurrency <sectors>

--cpu-sector-encoding-concurrency 2

禁用显卡绘图

@@ -60,9 +59,7 @@

常见绘

指定特定的显卡用于绘图而不是使用所有可用的显卡 (默认配置使用所有兼容的显卡): --cuda-gpus <gpu_ids>

--cuda-gpus 0,1,3
-

耕种集群

-

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

-

已知问题

-

Many times you will not use all of the compute power of your GPU. While this will be addressed in the future, a workaround when running a farming cluster is to run multiple instances of the plotter on the same machine.

+

耕种集群

+

When utilizing Farming Cluster, particularly with multiple or fast GPUs, you might encounter limitations due to your network's bandwidth. High performance GPUs can easily surpass the capacity of a 1G connection. While this won't cause the process to fail, it may result in your GPU idling as it waits for data to transfer. To optimize performance in such scenarios, consider upgrading to networking solutions of 2.5G, 10G, or higher.

\ No newline at end of file diff --git a/zh/farming/guides/grafana-dashboard/index.html b/zh/farming/guides/grafana-dashboard/index.html index b44df232b3c..a18cc436b80 100644 --- a/zh/farming/guides/grafana-dashboard/index.html +++ b/zh/farming/guides/grafana-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/guides/index.html b/zh/farming/guides/index.html index bbe159f39ac..37b4a849bb1 100644 --- a/zh/farming/guides/index.html +++ b/zh/farming/guides/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/guides/port-config/index.html b/zh/farming/guides/port-config/index.html index 15b29ddbafe..c936b5a83f3 100644 --- a/zh/farming/guides/port-config/index.html +++ b/zh/farming/guides/port-config/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/guides/verified-farmer/index.html b/zh/farming/guides/verified-farmer/index.html index 235bee273c6..668b4e49396 100644 --- a/zh/farming/guides/verified-farmer/index.html +++ b/zh/farming/guides/verified-farmer/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/intro/index.html b/zh/farming/intro/index.html index 6ef55212c59..ce403df3c4a 100644 --- a/zh/farming/intro/index.html +++ b/zh/farming/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/space-acres/install/index.html b/zh/farming/space-acres/install/index.html index 2e70b3e0d56..f7a558fec31 100644 --- a/zh/farming/space-acres/install/index.html +++ b/zh/farming/space-acres/install/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/space-acres/translate/index.html b/zh/farming/space-acres/translate/index.html index 7d5e3e469f9..4740b3d3cf1 100644 --- a/zh/farming/space-acres/translate/index.html +++ b/zh/farming/space-acres/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/farming/timekeeper/index.html b/zh/farming/timekeeper/index.html index b0b777c9b31..9ca80fe6bbf 100644 --- a/zh/farming/timekeeper/index.html +++ b/zh/farming/timekeeper/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/index.html b/zh/index.html index a634b522596..57900e77b5b 100644 --- a/zh/index.html +++ b/zh/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/learn/academy/index.html b/zh/learn/academy/index.html index aed3e6c66fd..cd920b70f4b 100644 --- a/zh/learn/academy/index.html +++ b/zh/learn/academy/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/learn/intro/index.html b/zh/learn/intro/index.html index 2138f5b6815..091c5d7b2e8 100644 --- a/zh/learn/intro/index.html +++ b/zh/learn/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/learn/security/index.html b/zh/learn/security/index.html index 8b1cd31c26d..b5caf780a75 100644 --- a/zh/learn/security/index.html +++ b/zh/learn/security/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/markdown-page/index.html b/zh/markdown-page/index.html index 3e26057f735..f4e63a5c959 100644 --- a/zh/markdown-page/index.html +++ b/zh/markdown-page/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/participate/community/resources/index.html b/zh/participate/community/resources/index.html index 59409c57756..3c6645531ce 100644 --- a/zh/participate/community/resources/index.html +++ b/zh/participate/community/resources/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/participate/community/tools/index.html b/zh/participate/community/tools/index.html index cf180a7722d..23f9a62cc96 100644 --- a/zh/participate/community/tools/index.html +++ b/zh/participate/community/tools/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/participate/contribute/code-of-conduct/index.html b/zh/participate/contribute/code-of-conduct/index.html index ca1f42254d4..a6a1f65f2bc 100644 --- a/zh/participate/contribute/code-of-conduct/index.html +++ b/zh/participate/contribute/code-of-conduct/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/participate/contribute/intro/index.html b/zh/participate/contribute/intro/index.html index b67fa538b22..8b79dc78681 100644 --- a/zh/participate/contribute/intro/index.html +++ b/zh/participate/contribute/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/participate/contribute/translate/index.html b/zh/participate/contribute/translate/index.html index 6be872e3e4d..2e7b8a6978c 100644 --- a/zh/participate/contribute/translate/index.html +++ b/zh/participate/contribute/translate/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/staking/intro/index.html b/zh/staking/intro/index.html index ac0d405c621..812590ef30f 100644 --- a/zh/staking/intro/index.html +++ b/zh/staking/intro/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/staking/operator/deregister/index.html b/zh/staking/operator/deregister/index.html index 838e0434b63..abf30e183cf 100644 --- a/zh/staking/operator/deregister/index.html +++ b/zh/staking/operator/deregister/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/staking/operator/register/index.html b/zh/staking/operator/register/index.html index 361e9227bf7..1a43dbd7a0b 100644 --- a/zh/staking/operator/register/index.html +++ b/zh/staking/operator/register/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/staking/operator/tips/index.html b/zh/staking/operator/tips/index.html index a3e28911447..371e1b45a14 100644 --- a/zh/staking/operator/tips/index.html +++ b/zh/staking/operator/tips/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/staking/stake/index.html b/zh/staking/stake/index.html index d5ed7f6cf8a..36e345ee934 100644 --- a/zh/staking/stake/index.html +++ b/zh/staking/stake/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/wallets/polkadot/index.html b/zh/wallets/polkadot/index.html index e324d5860a2..beb95b87bbc 100644 --- a/zh/wallets/polkadot/index.html +++ b/zh/wallets/polkadot/index.html @@ -12,7 +12,7 @@ - + diff --git a/zh/wallets/subwallet/index.html b/zh/wallets/subwallet/index.html index ce53859d040..a412b9646cd 100644 --- a/zh/wallets/subwallet/index.html +++ b/zh/wallets/subwallet/index.html @@ -12,7 +12,7 @@ - +