Gigahorse 是一款用于压缩 k32 绘图的 madMAX GPU 绘图仪,可以完全在 256G 的 RAM 中或部分在 128G 的 RAM 中。
也支持其他 K 大小,例如 k29 – k34,理论上任何 K 大小(如果为其编译)。RAM 要求随 K 大小而变化,因此 k33 需要 512G,k30 只需要 64G,以此类推。
对于 k30+,至少需要 8 GB VRAM,使用-S 3
或-S 2
减少 VRAM 使用(以性能为代价)。所需的最小 VRAM 为 4 GB。
支持的 GPU 有:
所有计算能力为 5.2 (Maxwell 2.0)、6.0、6.1 (Pascal)、7.0 (Volta)、7.5 (Turing) 和 8.0、8.6、8.9 (Ampere) 的 GPU。
其中包括:GTX 1000系列、GTX 1600系列、RTX 2000系列、RTX 3000系列和RTX 4000系列
购买新 GPU 时,建议购买 Turing 或更新的 GPU。
Usage:
cuda_plot [OPTION...]
-C, --level arg Compression level (default = 1, min = 1, max = 9)
-x, --port arg Network port (default = 8444, chives = 9699, MMX = 11337)
-n, --count arg Number of plots to create (default = 1, -1 = infinite)
-g, --device arg CUDA device (default = 0)
-r, --ndevices arg Number of CUDA devices (default = 1)
-t, --tmpdir arg Temporary directory for plot storage (default = $PWD)
-2, --tmpdir2 arg Temporary directory 2 for hybrid mode (default = @RAM)
-d, --finaldir arg Final destinations (default = , remote = @HOST)
-z, --dstport arg Destination port for remote copy (default = 1337)
-w, --waitforcopy Wait for copy to start next plot
-p, --poolkey arg Pool Public Key (48 bytes)
-c, --contract arg Pool Contract Address (62 chars)
-f, --farmerkey arg Farmer Public Key (48 bytes)
-Z, --unique Make unique plot (default = false)
-S, --streams arg Number of parallel streams (default = 4, must be >= 2)
-M, --memory arg Max shared / pinned memory in GiB (default =
重要提示:-t
只存储最终的绘图文件,以缓存它以供最终副本使用。
重要提示:-2
部分 RAM 模式应该是 SSD,而不是 RAM 磁盘。
重要提示:-M
在 Windows 上需要限制最大 GPU 共享内存,请参见下文。
注意:由于内存分配,第一个图会很慢。因此-n -1
,推荐使用 Gigahorse 进行绘图。
-2
)GPU 绘图仪内部使用 RAM,不需要 RAM 磁盘。所需要的只是一个-t
驱动器来缓存最终副本的图。
完整 RAM 模式和远程复制的示例:
cuda_plot_kxx -x 11337 -n -1 -C 7 -t /mnt/ssd/ -d @REMOTE_HOST -p -f
REMOTE_HOST
可以是主机名或 IP 地址,@
需要前缀来表示远程复制模式。
具有完整 RAM 模式和本地目标的示例:
cuda_plot_kxx -x 11337 -n -1 -C 7 -t /mnt/ssd/ -d /mnt/hdd1/ -d /mnt/hdd2/ -p -f
-2
)要启用部分 RAM 模式,请为 指定一个 SSD 驱动器-2
。
部分 RAM 模式和远程复制的示例:
cuda_plot_kxx -x 11337 -n -1 -C 7 -t /mnt/ssd/ -2 /mnt/fast_ssd/ -d @REMOTE_HOST -p -f
REMOTE_HOST
可以是主机名或 IP 地址,@
需要前缀来表示远程复制模式。
部分 RAM 模式和本地目标的示例:
cuda_plot_kxx -x 11337 -n -1 -C 7 -t /mnt/slow_ssd/ -2 /mnt/fast_ssd/ -d /mnt/hdd1/ -d /mnt/hdd2/ -p -f
tmpdir2
k32 需要大约 150G – 180G 的可用空间,具体取决于压缩级别。
如果空间不足,绘图仪将自动暂停(并恢复)绘图tmpdir
,这可能在复制操作不够快时发生。但是,当多个实例共享同一驱动器时,此可用空间检查将失败。在这种情况下,建议对驱动器进行分区并为每个绘图仪提供自己的空间。
在远程复制的情况下,当远程主机出现故障或接收器 ( chia_plot_sink
) 重新启动时,绘图仪将自动暂停和恢复操作。
在 Windows 上,可以分配多少固定内存是有限制的,通常是可用 RAM 的一半。选择 GPU 上的性能选项卡时,您可以在 TaskManger 中将限制检查为“共享 GPU 内存”。
因此,需要通过 限制最大固定内存-M
。例如,如果您的限制是 128 GB,则需要指定-M 128
. 不幸的是,这会稍微降低绘图仪的速度,请考虑使用 Linux 以获得最佳性能。
我创建了一个名为远程复制工具的工具chia_plot_sink
,它通过网络从一个或多个绘图仪接收绘图,并将它们并行分发到给定的目录列表中。
用法:
chia_plot_sink -- /mnt/disk0/ /mnt/disk1/ ...
chia_plot_sink -- /mnt/disk*/
此处可以省略尾部斜线。默认使用端口 1337。当然,该工具也可以在本地主机上使用。
Ctrl+C 将等待所有活动复制操作完成,同时不接受新连接。
在复制过程中,文件有一个*.tmp
扩展名,因此在发生崩溃的情况下,它们可以在以后轻松删除。
CPU 负载非常小,一个像样的四核就可以了(2 GHz 或更高)。在部分 RAM 模式的情况下,SSD 速度将成为瓶颈,除非您在 RAID 0 中有 3-4 个快速 SSD。基于 MLC 的 SSD 效果最好,如三星 970 PRO,持续的顺序写入速度是最重要的指标。部分 RAM 模式仅推荐用于不支持 256G RAM 的现有设置。对于 DDR3 / DDR4,全 RAM 模式总是更便宜、更快。
在 PCIe 3.0 系统上,瓶颈将是 PCIe 带宽,DDR3-1600 四通道足够快(不需要 DDR4,双通道系统除外)。在 PCIe 3.0 系统上,RTX 3060 或 3060 Ti 就足够了,任何更大的东西都不会更快。在 PCIe 4.0 系统上,当与更大的 GPU 配对时,RAM 带宽将成为瓶颈。
要充分利用 RTX 3090,您需要 PCIe 4.0 以及 256G 四通道 DDR4-3200 内存(或更好)。
具有多个插槽和/或具有利用多芯片模块 (MCM) 设计(例如 Threadripper 和 EPYC)或 Cluster-on-Die (CoD) 技术(例如高核数 Broadwell-EP)的处理器的系统可以通常配置有统一内存访问 (UMA) 拓扑——系统上的所有内存都显示为一个可寻址空间——或非统一内存访问 (NUMA) 拓扑——系统上的内存显示为两个或多个可寻址空间,称为节点。每个 NUMA 节点可能还包含处理器内核、共享缓存和 I/O(PCIe 通道)。
确定系统配置方式、存在多少 NUMA 节点以及为每个节点分配了哪些处理器、缓存和 I/O 的最快和最简单的方法是安装hwloc
(或hwloc-nox
在非 GUI 系统上)并运行lstopo
. 以下是为 NUMA 拓扑配置的双路 (2P) 系统示例,其中包含一些 PCIe 设备和每个节点中存在的一半系统内存:
UMA 拓扑对于用户和应用程序来说更容易使用,因为系统看起来和感觉起来就像一台大型计算机,但只要数据必须在处理器之间传输,性能就会受到影响——想象一下连接到一个插槽的 PCIe 设备读取和写入内存区域连接到不同的套接字——并且只有有限的工具可以用来缓解这种情况。NUMA 拓扑更难使用,因为您必须知道一切都在哪里,并专门调整您的工作负载以将它们保持在本地,但如果使用可用工具正确完成,延迟和带宽可以大大改善。
如果您的系统可针对 UMA 或 NUMA 拓扑进行配置,您通常可以在系统 BIOS 中进行配置。一些系统有专门用于启用或禁用 NUMA 的选项;某些系统要求您为 UMA 启用内存通道交错或为 NUMA 禁用内存通道交错。一些系统为您提供了一些灵活性来选择您想要的 NUMA 节点数。例如,许多 EPYC 系统允许您完全禁用 NUMA 或选择每个插槽的 NUMA 节点数。
建议在多路机器的情况下为每个 CPU 运行一个 GPU,同时确保将每个 GPU 与直接连接的正确 CPU 相匹配,并将内存分配限制为本地 RAM。
例子:
numactl -N 0 -m 0 ./cuda_plot_k32 -g 0 ...
numactl -N 1 -m 1 ./cuda_plot_k32 -g 1 ...
如果你有一台多路机器,只有一个GPU,但你希望绘图仪能够访问系统上的所有内存,你可以配置它优先从本地节点分配内存(最好是包含GPU的节点,存储设备等)在从其他节点分配内存之前:
例子:
numactl -N 0 --preferred=0 ./cuda_plot_k32 ...
我的测试机器是 HP Z420 工作站,配备单个至强 E5-2695 v2、256G (8x32G) DDR3-1600 内存、1 TB 三星 970 PRO SSD、10G 光纤网卡和 RTX 3060 Ti。它的建造成本仅为 1500 美元左右。
k32 和全 RAM 模式的绘图时间约为 190 秒,或 7+ 级(-D
启用)约为 170 秒。k32 和部分 RAM 模式的绘图时间约为 280 秒,或 7+ 级约为 250 秒,使用 1 TB 三星 970 PROtmpdir
和tmpdir2
(-D
启用,一半的 RAM 填充零)。使用 1 TB Samsung 970 PROtmpdir2
和 1 TB Sabrent Rocket 4.0 和 1 TB Sabrent Rocket 4.0 为tmpdir
(-D
启用,限于 PCIe 3.0,一半RAM 中填满了零)。
附
件
下
载
文件名称:mmx-cuda-plotter
更新日期:最近
文件大小:
提示:如遇问题或者链接失效请联系站长,欢迎打赏本站以及广告合作!
点击下载