挖一挖
单车变摩托

POST GPU 优化设置的Spacemesh

1、全球第二大交易所OKX欧意

国区邀请链接: https://www.ixwstvqa.com/zh-hans/join/1837888   币种多,交易量大!

国际邀请链接:https://www.okx.com/join/1837888 注册简单,币种多,交易量大!操作简单安全!

2、全球最大交易所币安

国区邀请链接:https://accounts.suitechsui.cc/zh-CN/register?ref=16003031 支持86手机号码,直接注册。

国际邀请链接https://accounts.binance.com/zh-CN/register?ref=16003031开放注册了,国人实测能用!

3、老牌交易所比特儿现改名叫芝麻开门 :https://www.gatexx.net
/signup/XgRDAQ8?ref_type=103
 
注册成功之后务必在网页端完成 手机号码绑定,推荐在APP端实名认证初级+高级更方便上传。网页端也可以实名认证。

4、火必所有用户现在可用了,但是要重新注册账号火币地址https://www.huobi.com

币安最新国区域名,哪个能用用哪个,网页,手机APP都行。

买好币上KuCoinhttps://www.kucoin.com/r/af/1f7w3CoinMarketCap前五的交易所,注册友好操简单快捷!

TraderWagon币安带单:https://www.traderwagon.com/zh-CN/register?ref=zoh4gfu

Bybit最高 $1,020 等您领取 $20 体验金和价值最高 $1,000 的福利卡:https://partner.bybit.com/b/49808

当前功能

一个 C 库,为通用 CPU 以及 CUDA 和 Vulkan 计算处理器实现 POST API 设置方法。

运行时系统要求

Windows 10/11、macOS 或 Linux。 以下一项或多项:

  • 具有 CUDA 支持的 GPU 和驱动程序(最低计算兼容性 5.0,最大计算兼容性 9),例如现代 Nvidia GPU 和 Nvidia 驱动程序版本 R525 或更高版本。
  • GPU 和支持 Vulkan 1.3 的驱动程序,例如现代 AMD、Apple M1 处理器和英特尔 GPU。
  • x86-64 CPU,如 AMD 或英特尔 CPU。
  • ARM 64位CPU,如Apple Silicon或Ampere Altra
  • 支持离散和板载 GPU,只要它们支持最低 CUDA 或 Vulkan 运行时版本。

我们目前为 Windows、Mac 和 Ubuntu 22.04 提供发布二进制文件和构建说明,但该库可以在其他 Linux 发行版上构建,以便在这些系统上使用。

GPU 内存要求

最低图形处理器内存

  • 每个 CUDA 核心 16 KiB 用于 CUDA
  • 每个计算单元 4 MiB,适用于 Vulkan

推荐的显卡内存

  • 2080 兆字节

运行时 Linux 要求

在具有混合 Nvidia GPU 设置的 Linux 平台上,请使用 Nvidia 驱动程序 R525 或更高版本。已知较旧的存在兼容性问题。非混合卡已确认适用于 R520 和旧版本。


构建系统要求

所有平台

  • 用于构建 CUDA 支持:NVIDIA Cuda Toolkit 11、支持 CUDA 的 NVIDIA GPU 和 Nvdia 驱动程序版本 R525 或更高版本。
    • 如果在 Linux 上构建,您应该参考发行版首选方法安装(如果可用)
  • 用于构建 Vulkan 支持:Vulkan SDK 1.3 和具有 Vulkan 1.3 运行时支持的 GPU。

Windows

  • Windows 10/11。
  • Microsoft Visual Studio 2022
  • 在首次尝试生成库时,如果出现提示,您可能还需要安装特定版本的 Windows SDK。

乌班图

  • Ubuntu 22.04
  • Cmake, GCC 11+

其他 Linux 发行版

  • Cmake, GCC 11+

苹果操作系统

  • Xcode
  • Xcode 命令行开发工具
  • Cmake, GCC 11+

macOS 开发环境设置

  1. 使用命令行开发工具安装最新版本的 Xcode。
  2. 从 https://vulkan.lunarg.com/sdk/home#mac 下载适用于 macOS 的 Vulkan 1.3 sdk 安装程序
  3. 使用 Vulkan 安装程序安装 Vulkan SDK。
  4. 将目录更改为安装 SDK 的文件夹(默认),并使用$ cd $HOME/VulkanSDK/1.3.xxx$ sudo ./install_vulkan.py
  5. 将 Vulkan env 变量添加到您的文件中,并将根位置设置为硬盘驱动器上的 sdk 目录。例如,如果安装了 Vulkan sdk 1.2.154,那么 env var 应该像这样设置:.bash_profile
export VULKAN_SDK_VERSION="1.3.xxx"                   # Replace xxx with actual version
export VULKAN_ROOT_LOCATION="$HOME/VulkanSDK/1.3.xxx" # adapt to install location on your machine
export VULKAN_SDK="$VULKAN_ROOT_LOCATION/macOS"
export VK_ICD_FILENAMES="$VULKAN_SDK/share/vulkan/icd.d/MoltenVK_icd.json"
export VK_LAYER_PATH="$VULKAN_SDK/share/vulkan/explicit_layers.d"
export PATH="/usr/local/opt/python/libexec/bin:$VULKAN_SDK/bin:$PATH"
export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$VULKAN_SDK/lib/"

构建配置

默认构建配置:

Windows和 Linux

SPACEMESHCUDA   "Build with CUDA support"   default: ON
SPACEMESHVULKAN "Build with Vulkan support" default: ON

macOS 内部版本配置

SPACEMESHCUDA   "Build with CUDA support"   default: OFF
SPACEMESHVULKAN "Build with Vulkan support" default: ON

要在Windows或Linux上构建完全支持CUDA和Vulkan的库,请使用带有Nvidia GPU和驱动程序的系统。否则,请关闭 CUDA 支持并仅针对 Vulkan 构建。在macOS上构建仅支持Vulkan。

在Windows上构建

  1. 在 Visual Studio 2022 中打开项目文件夹:。File -> Open -> Folder
  2. 设置项目设置。x64-Release
  3. 建:。CMake -> Rebuild All
  4. 运行测试:CMake -> Debug from Build Folder -> gpu-setup-test.exe

Ubuntu 或 macOS

如果使用 VULKAN,请确保克隆 zlib 子模块:

git submodule update --init

使用默认配置配置生成:

cmake -B build

要禁用 CUDA 使用:

cmake -B build -DSPACEMESHCUDA=OFF

要禁用 VULKAN 使用,请执行以下操作:

cmake -B build -DSPACEMESHVULKAN=OFF

构建项目:

cmake --build build

运行测试:

./build/test/gpu-setup-test -t
./build/test/gpu-setup-test -u
./build/test/gpu-setup-test -b

运行测试应用

苹果操作系统配置

  1. 由于测试应用程序未经过公证,因此您可能需要通过或右键单击打开它并单击 来启用它。spctl --add /path/to/gpu-setup-testopen
  2. 设置执行权限(如果尚未设置),例如,chmod a+x gpu-setup-test
  3. 将测试应用的路径添加到动态库搜索路径,例如,export DYLD_LIBRARY_PATH=.

Linux配置

  1. 设置执行权限(如果尚未设置),例如,chmod a+x gpu-setup-test
  2. 将测试应用的路径添加到动态库搜索路径,例如,export LD_LIBRARY_PATH=.

从控制台运行以打印使用情况:

$ gpu-setup-test
Usage:
--list               or -l                 print available providers
--benchmark          or -b                 run benchmark
--core               or -c                 test the core library use case
--test               or -t                 run basic test
--test-vector-check                        run a CPU test and compare with test-vector
--test-pow           or -tp                test pow computation
--test-leafs-pow     or -tlp               test pow computation while computing leafs
--unit-tests         or -u                 run unit tests
--integration-tests  or -i                 run integration tests
--label-size         or -s <1-256>         set label size [1-256]
--labels-count       or -n <1-32M>         set labels count [up to 32M]
--reference-provider or -r <id>            the result of this provider will be used as a reference [default - CPU]
--print              or -p                 print detailed data comparison report for incorrect results
--pow-diff           or -d <0-256>         count of leading zero bits in target D value [default - 16]
--srand-seed         or -ss <unsigned int> set srand seed value for POW test: 0 - use zero id/seed [default], -1 - use random value
--solution-idx       or -si <unsigned int> set solution index for POW test: index will be compared to be the found solution for Pow [default - unset]

混合 CUDA 和 Vulkan

默认情况下,如果检测到 CUDA GPU,该库不会检测到支持的 Vulkan GPU。可以使用两个环境变量更改此行为:

SPACEMESH_DUAL_ENABLED
 empty or 0 - default behavior
 1 - detect Vulkan GPUs even if CUDA GPUs are detected
SPACEMESH_PROVIDERS_DISABLED
 empty - default behavior
 "cuda" - do not detect CUDA GPUs
 "vulkan" - do not detect Vulkan GPUs

运行时提供程序建议

该库在运行时支持多个计算提供程序。为获得最佳性能,请根据您的操作系统和 GPU 使用以下提供程序:

OS / GPU Windows Linux macOS
Nvidia CUDA CUDA Vulkan
AMD Vulkan Vulkan Vulkan
Intel Vulkan Vulkan Vulkan
Apple M1 Vulkan Vulkan Vulkan

应用程序接口

计算叶子和/或 pow 解决方案:

int scryptPositions(
   uint32_t provider_id,      // POST compute provider ID
   const uint8_t *id,         // 32 bytes
   uint64_t start_position,   // e.g. 0
   uint64_t end_position,     // e.g. 49,999
   uint32_t hash_len_bits,    // (1...256) for each hash output, the number of prefix bits (not bytes) to copy into the buffer
   const uint8_t *salt,       // 32 bytes
   uint32_t options,          // compute leafs and/or compute pow
   uint8_t *out,              // memory buffer large enough to include hash_len_bits * number of requested hashes
   uint32_t N,                // scrypt N
   uint32_t R,                // scrypt r
   uint32_t P,                // scrypt p
   uint8_t *D,                // Target D for the POW computation. 256 bits.
   uint64_t *idx_solution,    // index of output where output < D if POW compute was on. MAX_UINT64 otherwise.
   uint64_t *hashes_computed, // The number of hashes computed, should be equal to the number of requested hashes.
   uint64_t *hashes_per_sec   // Performance
);

支持的加密参数

该 API 目前仅支持以下 N、P、R scrypt 参数。

  • 支持的 N 值:1 – 28835
  • 支持的 R 值:1
  • 支持的 P 值:1

获取系统的 GPU 功能。例如 CUDA 和/或 NVIDIA 或 NONE:

int stats();

停止所有 GPU 工作,并且不再用任何结果填充传入的缓冲区:

int stop(
 uint32_t ms_timeout   // timeout in milliseconds
);

如果正在进行停止,则返回非零值:

SPACEMESHAPI int spacemesh_api_stop_inprogress();

返回 POS 计算提供程序信息:

SPACEMESHAPI int spacemesh_api_get_providers(
 PostComputeProvider *providers, // out providers info buffer, if NULL - returns count of available providers
 int max_providers// buffer size
);

连接

  1. 从此存储库中的 github 版本下载适用于你的平台的发布项目,或从源代码生成项目。
  2. 将所有项目复制到项目资源目录。这些文件应包含在应用的运行时资源中。
  3. 使用 api.h 从代码链接库。

测试

在 Spacemesh 全节点中对基本库用例进行集成测试,以生成空间证明并找到 pow 解决方案:

/build/test/.gpu-setup-test -c -n 100663296 -d 20

免责声明:这些是社区提交的基准,尚未经过验证。您的里程可能会有所不同。该库也可能有错误,处于alpha质量,并且gpu-post算法可能会在Spacemesh 0.2测试网发布之前发生变化。

gpu-setup-test -b -n 2000000

1、全球第二大交易所OKX欧意

国区邀请链接: https://www.ixwstvqa.com/zh-hans/join/1837888   币种多,交易量大!

国际邀请链接:https://www.okx.com/join/1837888 注册简单,币种多,交易量大!操作简单安全!

2、全球最大交易所币安

国区邀请链接:https://accounts.suitechsui.cc/zh-CN/register?ref=16003031 支持86手机号码,直接注册。

国际邀请链接https://accounts.binance.com/zh-CN/register?ref=16003031开放注册了,国人实测能用!

3、老牌交易所比特儿现改名叫芝麻开门 :https://www.gatexx.net
/signup/XgRDAQ8?ref_type=103
 
注册成功之后务必在网页端完成 手机号码绑定,推荐在APP端实名认证初级+高级更方便上传。网页端也可以实名认证。

4、火必所有用户现在可用了,但是要重新注册账号火币地址https://www.huobi.com

币安最新国区域名,哪个能用用哪个,网页,手机APP都行。

买好币上KuCoinhttps://www.kucoin.com/r/af/1f7w3CoinMarketCap前五的交易所,注册友好操简单快捷!

TraderWagon币安带单:https://www.traderwagon.com/zh-CN/register?ref=zoh4gfu

Bybit最高 $1,020 等您领取 $20 体验金和价值最高 $1,000 的福利卡:https://partner.bybit.com/b/49808

赞(0)
未经允许不得转载:Qubic挖矿教程网 » POST GPU 优化设置的Spacemesh
欧意OKX币安Binance芝麻开门GATE