DGX Spark 系统已知的问题

日期:05-10  点击:属于:技术资料

本主题概述了 DGX Spark 系统已知的问题。

请使用随附的电源适配器以获得最佳性能

为获得最佳性能,请使用 DGX Spark 系统随附的电源适配器。使用其他适配器可能会降低性能、导致无法启动或意外关机。

nvidia-smi报告“内存使用:不支持” 

在集成显卡(iGPU)平台上,nvidia-smi即使列出了每个进程的GPU内存,也会显示“内存使用:不支持”。这是预期行为,因为集成显卡没有专用的帧缓冲内存。

DGX Spark 上的 CUDA 支持

在软件更新发布时,您的 DGX Spark 设备上的 CUDA 版本已验证与您的系统硬件兼容。最新功能和性能改进可通过 NVIDIA NGC 容器(例如 PyTorch、vLLM 和 TensorRT-LLM)获得。

统一内存架构内存资源报告指南

NVIDIA 正积极与第三方生态系统合作伙伴携手,将他们的软件引入 DGX Spark。例如,我们已就如何在基于统一内存架构 (UMA) 的系统上实现内存管理提供了指导,以帮助确保可用资源的报告准确无误。

DGX Spark 系统采用统一内存架构 (UMA),其中 GPU 与 CPU 和其他计算引擎共享系统内存 (DRAM)。这种设计降低了延迟,并允许将更多内存用于 GPU 工作负载。在 UMA 系统中,CPU 可以动态管理 DRAM 内容,包括通过在 DRAM 和系统交换区 (SWAP) 之间交换页面来释放内存。但是,APIcudaMemGetInfo并未考虑可能从 SWAP 中回收的内存。因此,报告的内存大小cudaMemGetInfo可能小于实际可分配内存,因为 CPU 可以通过将额外的 DRAM 页面移动到 SWAP 来释放这些页面。

为了更准确地估算 DGX Spark 平台上可分配的设备内存量,CUDA 应用程序开发人员应考虑通过 SWAP 回收 DRAM 的可能性,而不应仅仅依赖cudaMemGetInfo返回的值。以下提供了一个使用 C 标准库的示例实现:

#include <stdio.h>
int getAvailableMemory(long *availableMemoryKb, long *freeSwapKb) {    
FILE *meminfoFile = NULL;    
char lineBuffer[256];    
long hugeTlbTotalPages = -1;    
long hugeTlbFreePages = -1;    
long hugeTlbPageSize = -1;    
if (availableMemoryKb == NULL || freeSwapKb == NULL) {        
return 1;    
}    
meminfoFile = fopen("/proc/meminfo", "r");    
if (meminfoFile == NULL) {        
return 1;    }    
*availableMemoryKb = -1;    
*freeSwapKb = -1;    
while (fgets(lineBuffer, sizeof(lineBuffer), meminfoFile)) {        
long value;        
if (sscanf(lineBuffer, "MemAvailable: %ld kB", &value) == 1) {            
*availableMemoryKb = value;        
} else if (sscanf(lineBuffer, "SwapFree: %ld kB", &value) == 1) {           
 *freeSwapKb = value;        
 } else if (sscanf(lineBuffer, "HugePages_Total: %ld", &value) == 1) {            
 hugeTlbTotalPages = value;        
 } else if (sscanf(lineBuffer, "HugePages_Free: %ld", &value) == 1) {           
  hugeTlbFreePages = value;        
  } else if (sscanf(lineBuffer, "Hugepagesize: %ld kB", &value) == 1) {            
  hugeTlbPageSize = value;        }        
  if (*availableMemoryKb != -1 &&            
  *freeSwapKb != -1 &&            
  hugeTlbTotalPages != -1 &&            
  hugeTlbFreePages != -1 &&            
  hugeTlbPageSize != -1) {            
  break;        }    }    
  fclose(meminfoFile);    if (hugeTlbTotalPages != 0 && hugeTlbTotalPages != -1) {        
  *availableMemoryKb = hugeTlbFreePages * hugeTlbPageSize;        
  
  // Hugetlbfs pages are not swappable.        
  *freeSwapKb = 0;    }    return 0;}

为了方便调试,您可以手动使用以下命令刷新缓冲区缓存:

sudo sh -c 'sync; echo 3 > /proc/sys/vm/drop_caches'

清除缓存后,请重启应用程序。

连接的HDMI显示器在长时间无操作后进入深度睡眠模式,无法唤醒

在某些情况下,长时间不使用后,连接的HDMI显示器可能会进入深度睡眠模式,即使按下键盘按键或移动鼠标也无法唤醒。如果发生这种情况,请按显示器上的物理按钮将其唤醒。


关于我们
扫一扫,关注我们最新消息扫一扫,关注我们最新消息
联系我们
025-66073091

工作时间:周一至周五 9:00-18:00

联系人:NVIDIA

手机:18915339688

NVIDIA CN
本站以NVIDIA(英伟达)全系列产品为核心,聚焦品牌旗下各类硬件、软件及解决方案的全面、深度介绍,致力于为广大用户打造一个专业、易懂的NVIDIA产品信息聚合平台。
无论是深耕行业的专业从业者、追求极致体验的硬件爱好者,还是初次接触NVIDIA产品的新手用户,都能在这里获取实用的产品资讯,解锁NVIDIA科技的核心魅力。
NVIDIA CN 版权所有 NVIDIA