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都行。
买好币上KuCoin:https://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 开发环境设置
- 使用命令行开发工具安装最新版本的 Xcode。
- 从 https://vulkan.lunarg.com/sdk/home#mac 下载适用于 macOS 的 Vulkan 1.3 sdk 安装程序
- 使用 Vulkan 安装程序安装 Vulkan SDK。
- 将目录更改为安装 SDK 的文件夹(默认),并使用
$ cd $HOME/VulkanSDK/1.3.xxx
$ sudo ./install_vulkan.py
- 将 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上构建
- 在 Visual Studio 2022 中打开项目文件夹:。
File -> Open -> Folder
- 设置项目设置。
x64-Release
- 建:。
CMake -> Rebuild All
- 运行测试:
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
运行测试应用
苹果操作系统配置
- 由于测试应用程序未经过公证,因此您可能需要通过或右键单击打开它并单击 来启用它。
spctl --add /path/to/gpu-setup-test
open
- 设置执行权限(如果尚未设置),例如,
chmod a+x gpu-setup-test
- 将测试应用的路径添加到动态库搜索路径,例如,
export DYLD_LIBRARY_PATH=.
Linux配置
- 设置执行权限(如果尚未设置),例如,
chmod a+x gpu-setup-test
- 将测试应用的路径添加到动态库搜索路径,例如,
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
);
连接
- 从此存储库中的 github 版本下载适用于你的平台的发布项目,或从源代码生成项目。
- 将所有项目复制到项目资源目录。这些文件应包含在应用的运行时资源中。
- 使用 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