显卡 内存分配 linux,玩转笔记本显卡共享显存设置

随着游戏复杂性的提升,新一代3D游戏对显卡显存的要求越来越高。移动显卡的显存容量却跟不上时代的步伐,尤其是一些低端移动显卡的显存容量还停留在128MB,在运行一些需要大量贴图的游戏时,显存容量成为了系统瓶颈,影响了游戏的整体效果。

值得庆幸的是,目前笔记本的集成显卡及移动独立显卡都支持动态显存调节技术,可以将更多系统内存共享为显存来提升性能。下面,就让我们一起来学习笔记本显卡显存的调节。

Intel移动显卡篇

目前,多数笔记本采用Intel的集成显卡,而其中大部分是集成GMA950/X3100显卡。下面我们先来谈谈这两款产品的显存分配问题。GMA950/X3100虽然规格不一样,但它们都采用英特尔的动态内存管理技术(Dynamic Video Memory Technology,简称DVMT)来管理显存,只不过GMA 950支持DVMT 3.0,而GMA X3100支持DVMT 4.0,两者可以调用的内存容量有所区别: GMA 950最高可调用224MB内存来充当显存,而GMA X3100最大可以调用384MB的系统内存。

要为显卡分配显存需要进入BIOS的“OnBoard VGA share momory”选项中设置(不同品牌的本本,选项名称可能有所出入,有的本本没有这个选项),自己可以根据需要为显卡划分共享内存。在这里,共有三个DVMT模式:“Fixed”模式、“DVMT”模式、“Fixed+DVMT”模式。其中“Fixed”模式,一部分固定容量的系统内存将被分配到图形核心;而 “DVMT”模式则由显示核心自动根据实际需要使用系统内存;“Fixed+DVMT”模式,则是固定为显卡划分一定的内存与动态共享内存相结合的模式,比如在这种模式下图形处理器可独占64MB的固定内存 (包括第一部分中专为GPU配备的内存空间),并动态共享64MB内存。如果你本本的内存较大的话,比如1GB以上,可以设置为DVMT,让系统自动分配显存容量的大小,从而在针对不同的应用中都可以有不错的表现。

集成显卡是否能共享到最大显存容量要由你本本的物理内存及操作系统来决定。在Windows XP下,当系统内存小于512MB时,GMA950、GMA X3100都只能调用128MB内存来当显存,但当内存在512MB以上时,GMA950则可以实现最大显存容量;而GMA X3100在系统内存在512MB~1GB之间时最大可以调用256MB内存,在内存为1GB以上时最大可以调用384MB内存(图1)。Vista系统中加入一项动态增加显存的技术,在Vista的DVMT模式下,动态共享内存是随着内存容量的增加而自动增加的,并不由我们所控制,大家可以参考下表:

为了避免显卡过多调用内存导致系统性能下降,我们建议大家采用“Fixed+DVMT”模式,为显卡划分128MB的固定内存,另外动态共享128MB(这需要主板BIOS的支持,目前不少本本BIOS都默认为DVMT模式)。

AMD-ATI移动显卡篇

AMD-ATI在它的移动整合芯片组中也拥有相当灵活的共享显存设置,它采用HyperMemory技术,其原理与英特尔的DVMT差不多,只不过HyperMemory支持板载显存,可以直接在本本主板上集成一定容量的物理显存(可支持16MB、32MB、64MB、128MB、256MB)提供给整合的图形核心,因此在性能及灵活性上更胜一筹。例如Radeon Xpress 1150、Radeon Xpress 1250都支持HyperMemory动态显存技术,其显存配置方案也有三种模式:

“SIDEPORT”模式,在这种模式下,整合图形核心会使用板载物理显存,这要看你的本本是否配有物理显存。

“UMA”模式,在此模式下,整合图形核心完全通过动态分配的方式共享系统内存。其中分配的内存大小可以在BIOS中进行设置,最高可调用显存由物理内存及操作系统决定。

“UMA+SIDEPORT”模式,在此模式下整合图形核心将会一起使用板载显存+共用的系统内存作为显存,这时显卡就会有足够容量的内存可以使用,并有较快的速度。

Radeon Xpress 1150、Radeon Xpress 1250可调用的内存也随着系统及内存的不同而有着不同的配置方案,比如在Vista下,如果你的本本配备2GB内存,最高可以调用895MB的内存,比高端的独立显卡显存还要多!

如果你要对集成显卡显存进行设置的话,可以在进入BIOS后找到“Internal Graphics Configuration”,进入集成显卡的设置界面,用户在这里可以对显存的分配进行设定。

如果你本本的主板板载有显存,那么建议大家在开启板载显存后,选择“UMA+SIDEPORT”模式(图3),再根据需要单独从内存中划分128MB或256MB来与板载显存搭配(比如板载的显存在128MB以上,则划分的内存就设为128MB),这样可以让显示系统的性能稳定维持在一个比较好的状态下

由于低端整合图形核心性能较低,划分256MB以上内存作为显存是完全没有必要的,调用的内存过大,反而会导致系统性能的下降。而由于共享系统内存,所以系统内存的频率决定了显存的频率高低,当系统内存频率不同时,显存的频率取决于其中配备的较低频率的内存。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用 CUDA 加速深度学习训练时,共享GPU内存是一种常见的技术,它可以有效地减少显存的使用,提高GPU利用率。下面是使用共享GPU内存的一些方法: 1. 使用 PyTorch 中的 `pin_memory` 和 `DataLoader` 函数:在 PyTorch 中,可以使用 `pin_memory` 函数将数据加载到主机内存中,然后使用 `DataLoader` 函数将数据加载到 GPU 内存中,并使用 `num_workers` 参数指定共享的 CPU 内存数。 ```python import torch.utils.data as data train_dataset = MyDataset() train_loader = data.DataLoader(train_dataset, batch_size=64, shuffle=True, num_workers=4, pin_memory=True) ``` 2. 使用 PyTorch 中的 `SharedMemory` 函数:在 PyTorch 中,可以使用 `SharedMemory` 函数创建共享内存,并将数据加载到共享内存中,然后使用 `DataLoader` 函数将数据加载到 GPU 内存中。 ```python import torch.multiprocessing as mp def load_data_to_shared_memory(): shared_memory = mp.shared_memory.SharedMemory(size=10000) data = torch.zeros(100, dtype=torch.float32, pin_memory=True) data_ptr = data.storage().data_ptr() shared_memory_ptr = shared_memory.buf shared_data = torch.tensor(shared_memory_ptr, size=(100,), dtype=torch.float32) shared_data.copy_(data) train_dataset = MyDataset() load_data_to_shared_memory() train_loader = data.DataLoader(train_dataset, batch_size=64, shuffle=True, num_workers=4, pin_memory=True) ``` 3. 使用 TensorFlow 中的 `tf.data` 函数:在 TensorFlow 中,可以使用 `tf.data` 函数将数据加载到 CPU 内存中,并使用 `map` 函数将数据加载到 GPU 内存中。 ```python import tensorflow as tf def preprocess(image, label): # 在 GPU 内存中处理数据 return image, label train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train)).batch(64) train_dataset = train_dataset.map(preprocess).shuffle(10000).repeat() ``` 总的来说,共享GPU内存是一种有效的技术,可以提高GPU利用率,减少显存的使用。在实际应用中,可以根据具体情况选择合适的方法,以便更好地利用GPU资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值