用GPU运行caffe gpu dot,显存8G,够用,但却发生溢出。

使用GPU在caffe上进行CNN训练
使用GPU在caffe上进行CNN训练
[摘要:1.设置装备摆设caffe情况
[请参考此篇专客:http://blog.csdn.net/ws_20100/article/details/
本篇先容若何正在caffe情况下,完成&图象对图象&的卷积神经收集的练习。
1.配置caffe环境
[请参考此篇博客:http://blog.csdn.net/ws_20100/article/details/
本篇介绍如何在caffe环境下,实现&图像对图像&的卷积神经网络的训练。
2.文件结构
在配置好的caffe文件夹中,进入examples目录,创建CNN文件夹,并进入文件夹
$ cd caffe-master/examples/
$ mkdir CNN
在CNN文件夹下面创建子文件夹
$ mkdir model snapshot TestPhotos TestLabels TrainPhotos TrainLabels
model用于以后存储卷积核矩阵和偏置向量;
snapshot用于存储训练中备份的caffe模型,每一段时间存储一次,防止断电等一些情况;
TrainPhotos、TrainLabels分别存储训练集输入和监督样本;
TestPhotos、TestLabels分别存储测试集输入和监督样本,不直接参与到训练中。
然后,将训练所用的输入样本和监督样本分别放入到TrainPhotos和TrainLabels中去。注意,样本文件名无所谓,但是排列次序必须一一对应。同样,将测试所用的输入样本和监督样本分别放入到TestPhotos和TestLabels中去。
3.产生训练和测试数据
1.)产生路径文件
在CNN文件夹下面(以下均是在此文件夹下)创建两个路径文件。
$ vim train.txt
输入内容:
examples/CNN/train.h5
:wq保存文档。
$ vim test.txt
输入内容:
examples/CNN/test.h5
:wq保存文档。
2.)产生训练数据
$ vim generate_train.m
输入内容:(把输入图像切成11*11的像素块,监督图像为3*3的像素块(由网络结构和卷积核大小决定),步长为1个像素)
%% settings
folder_input = 'TrainPhotos';
folder_label = 'TrainLabels';
savepath = 'train.h5';
size_input = 11;
size_label = 3; % size_input - 12
stride = 1;
%% initialization
data = zeros(size_input, size_input, 1, 1);
label = zeros(size_label, size_label, 1, 1);
padding = abs(size_input - size_label) / 2;
count = 0;
%% read data
filepaths_input = dir(fullfile(folder_input,'*.jpg'));
filepaths_label = dir(fullfile(folder_label,'*.jpg'));
if (length(filepaths_input)==length(filepaths_label))
length = length(filepaths_input);
error('The Number of Input is NOT equal to the Number of Label.');
%% generate data
for i = 1 : length
im_input = imread(fullfile(folder_input,filepaths_input(i).name));
im_input = rgb2ycbcr(im_input);
im_input = im2double(im_input(:, :, 1));
im_label = imread(fullfile(folder_label,filepaths_label(i).name));
im_label = im2double(im_label(:, :, 1));
if size(im_input) == size(im_label)
[hei,wid] = size(im_input);
error('The size of input and label are not equal.');
for x = 1 : stride : hei-size_input+1
for y = 1 :stride : wid-size_input+1
subim_input = im_input(x : x+size_input-1, y : y+size_input-1);
subim_label = im_label(x+padding : x+padding+size_label-1, y+padding : y+padding+size_label-1);
count = count + 1;
data(:, :, 1, count) = subim_
label(:, :, 1, count) = subim_
%% randomized the data and label
order = randperm(count);
data = data(:, :, 1, order);
label = label(:, :, 1, order);
%% writing to HDF5
chunksz = 128;
created_flag =
totalct = 0;
for batchno = 1:floor(count/chunksz)
last_read=(batchno-1)*
batchdata = data(:,:,1,last_read+1:last_read+chunksz);
batchlabs = label(:,:,1,last_read+1:last_read+chunksz);
startloc = struct('dat',[1,1,1,totalct+1], 'lab', [1,1,1,totalct+1]);
curr_dat_sz = store2hdf5(savepath, batchdata, batchlabs, ~created_flag, startloc, chunksz);
created_flag =
totalct = curr_dat_sz(end);
h5disp(savepath);
终端下输入:
$ matlab -nodesktop -nosplash -logfile generate_train.log
-r generate_train
产生训练数据train.h5。
3.)产生测试数据
$ vim generate_test.m
generate_test.m只需要将generate_test.m文件开头改为:
%% settings
folder_input = 'TestPhotos';
folder_label = 'TestLabels';
savepath = 'test.h5';
size_input = 11;
size_label = 3;
stride = 30;
将最后一段改成:
%% writing to HDF5
chunksz = 2;
created_flag =
totalct = 0;
for batchno = 1:floor(count/chunksz)
last_read=(batchno-1)*
batchdata = data(:,:,1,last_read+1:last_read+chunksz);
batchlabs = label(:,:,1,last_read+1:last_read+chunksz);
startloc = struct('dat',[1,1,1,totalct+1], 'lab', [1,1,1,totalct+1]);
curr_dat_sz = store2hdf5(savepath, batchdata, batchlabs, ~created_flag, startloc, chunksz);
created_flag =
totalct = curr_dat_sz(end);
h5disp(savepath);
终端下输入:
$ matlab -nodesktop -nosplash -logfile generate_test.log -r generate_test
产生测试数据test.h5。仅仅用于判断训练到达什么地步。
4.建立训练文件
1.)建立solver文件
$ vim CNN_solver.prototxt
此为运行的配置文件,输入以下内容:
# The train/test net protocol buffer definition
net: &examples/CNN/CNN_net.prototxt&
test_iter: 556
# Carry out testing every 500 training iterations.
test_interval: 500
# The base learning rate, momentum and the weight decay of the network.
base_lr: 0.0001
momentum: 0.9
weight_decay: 0
# The learning rate policy
lr_policy: &fixed&
# Display every 100 iterations
display: 100
# The maximum number of iterations
# snapshot intermediate results
snapshot: 500
snapshot_prefix: &examples/CNN/snapshot/CNN&
# solver mode: CPU or GPU
solver_mode: GPU
:wq保存退出。
2.)建立net文件
$ vim CNN_net.prototxt
此为网络结构配置文件,可以配置网络层数,节点数,卷积核等参数。输入以下内容:
name: &CNN&
name: &data&
type: &HDF5Data&
top: &data&
top: &label&
hdf5_data_param {
source: &examples/CNN/train.txt&
batch_size: 128
include: { phase: TRAIN }
name: &data&
type: &HDF5Data&
top: &data&
top: &label&
hdf5_data_param {
source: &examples/CNN/test.txt&
batch_size: 2
include: { phase: TEST }
name: &conv1&
type: &Convolution&
bottom: &data&
top: &conv1&
lr_mult: 1
lr_mult: 0.1
convolution_param {
num_output: 128
kernel_size: 5
weight_filler {
type: &gaussian&
std: 0.001
bias_filler {
type: &constant&
name: &relu1&
type: &ReLU&
bottom: &conv1&
top: &conv1&
name: &conv2&
type: &Convolution&
bottom: &conv1&
top: &conv2&
lr_mult: 1
lr_mult: 0.1
convolution_param {
num_output: 64
kernel_size: 3
weight_filler {
type: &gaussian&
std: 0.001
bias_filler {
type: &constant&
name: &relu2&
type: &ReLU&
bottom: &conv2&
top: &conv2&
name: &conv3&
type: &Convolution&
bottom: &conv2&
top: &conv3&
lr_mult: 0.1
lr_mult: 0.1
convolution_param {
num_output: 1
kernel_size: 3
weight_filler {
type: &gaussian&
std: 0.001
bias_filler {
type: &constant&
name: &loss&
type: &EuclideanLoss&
bottom: &conv3&
bottom: &label&
top: &loss&
:wq保存退出。
$ vim train.sh
输入以下shell:
#!/bin/bash
./build/tools/caffe train --solver examples/CNN/CNN_solver.prototxt 2&&1 | tee examples/CNN/CNN.log
增加运行权限:
$ chmod +x train.sh
运行脚本文件:
$ ./train.sh
时间可能会运行几天,也可以提前退出(Ctrl+C),因为在snapshot中有中间备份存储。
6.保存滤波器
1.)创建mat文件
$ cp CNN_net.prototxt CNN_mat.prototxt
将CNN_mat.prototxt文件开头两个layer段改为:
name: &CNN&
input: &data&
input_dim: 1
input_dim: 1
input_dim: 11
input_dim: 11
input: &label&
input_dim: 1
input_dim: 1
input_dim: 3
input_dim: 3
:wq保存即可。
2.)创建M文件
$ vim saveFilters.m
输入以下内容:(第7行可以更改需要转换的caffemodel文件名)
caffe.reset_all();
%% settings
%folder = 'examples/CNN/';
folder = './';
model = [folder 'CNN_mat.prototxt'];
weights = [folder 'snapshot/CNN_iter_550000.caffemodel'];
savepath = [folder 'model/x.mat'];
layers = 3;
%% load model using mat_caffe
net = caffe.Net(model,weights,'test');
%% reshap parameters
weights_conv = cell(layers,1);
for idx = 1 : layers
conv_filters = net.layers(['conv' num2str(idx)]).params(1).get_data();
[~,fsize,channel,fnum] = size(conv_filters);
if channel == 1
weights = double(ones(fsize^2, fnum));
weights = double(ones(channel, fsize^2, fnum));
for i = 1 : channel
for j = 1 : fnum
temp = conv_filters(:,:,i,j);
if channel == 1
weights(:,j) = temp(:);
weights(i,:,j) = temp(:);
weights_conv{idx} =
%% save parameters
weights_conv1 = weights_conv{1};
weights_conv2 = weights_conv{2};
weights_conv3 = weights_conv{3};
biases_conv1 = double(net.layers('conv1').params(2).get_data());
biases_conv2 = double(net.layers('conv2').params(2).get_data());
biases_conv3 = double(net.layers('conv3').params(2).get_data());
save(savepath,'weights_conv1','biases_conv1','weights_conv2','biases_conv2','weights_conv3','biases_conv3');
3.)运行M文件
matlab -nodesktop -nosplash -logfile saveFilters.log -r
saveFilters
此时,在model中会生成x.mat文件。
已经知道了x.mat文件中,有三层卷积层的卷积核矩阵weights_conv*和偏置向量biases_conv*。
编写一个demo_net.m文件,使用这些参数构建卷积网络结构,对输入图像(矩阵)进行处理,即可得到结果。
不同应用有不同的源码,这里省略该文件源码。
本文可能叙述不全面,如有错误,欢迎指正!
感谢关注 Ithao123精品文库频道,是专门为互联网人打造的学习交流平台,全面满足互联网人工作与学习需求,更多互联网资讯尽在 IThao123!
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
随着国内互联网的发展,产品经理岗位需求大幅增加,在国内,从事产品工作的大部分岗位为产品经理,其实现实中,很多从事产品工作的岗位是不能称为产品经理,主要原因是对产品经理的职责不明确,那产品经理的职责有哪些,本专题将详细介绍产品经理的主要职责
Swift是Apple在WWDC2014所发布的一门编程语言,用来撰写OS X和iOS应用程序[1]。在设计Swift时.就有意和Objective-C共存,Objective-C是Apple操作系统在导入Swift前使用的编程语言
Swift是供iOS和OS X应用编程的新编程语言,基于C和Objective-C,而却没有C的一些兼容约束。Swift采用了安全的编程模式和添加现代的功能来使得编程更加简单、灵活和有趣。界面则基于广受人民群众爱戴的Cocoa和Cocoa Touch框架,展示了软件开发的新方向。
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
IThao123周刊caffe for linux
-----------------更新-----------------------------
参考链接,感谢原作者!
http://blog.csdn.net/enjoyyl/article/details/
.cn/s/blog_51fad6900102wlmx.html
笔者在双系统ubuntu14.04下成功安装了cuda,现重新整理安装cuda步骤,及cuDNN安装步骤
一、安装cuda
1.安装元数据库,更新apt-get,并且安装CUDA
$ sudo dpkg --install cuda-repo--..deb
$ sudo apt-get update
$ sudo apt-get install cuda
2.重启系统来加载NVIDIA驱动
$ sudo reboot
3.通过修改PATH和LD_LIBRARY_PATH变量建立开发环境
$ export PATH=/usr/local/cuda-7.5/bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH
4.安装一个samples的可写拷贝,然后建立并且运行nbody例子
$ cuda-install-samples-7.5.sh ~
$ cd ~/NVIDIA_CUDA-Samples_7.5/5_Simulations/nbody
如得到以下界面,则表示cuda以及显卡驱动都安装完成了。
二、安装cuDNN
1.解压:cd到“cudnn-7.0-linux-x64-v3.0-rc.tgz”所在目录,将文件解压,如下:
gzip -d cudnn-7.0-linux-x64-v3.0-rc.tgz
tar xf cudnn-7.0-linux-x64-v3.0-rc.tar
2.copy文件至CUDA安装目录:解压后,在你的目录下生成一个“cuda”文件夹,对于cuDNN6.5的版本解压后生成“cudnn-6.5-linux-x64-v2”文件。使用如下命令copy,注意第二个有个-a参数,否则,拷贝过去的文件失去了链接。(cd 到 cuda 所在目录)
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp -a cuda/lib64/libcudnn* /usr/local/cuda/lib64
这时,cuDNN安装完成。
-----------------更新----------------------------
有个问题,虚拟机不支持显卡,之前没意识到。。。所以要装cuda用GPU的童鞋还是装个双系统吧~
-------------------原帖分割线------------------------------
本文参考以下链接,它们给予我巨大帮助!非常感谢原作者!
http://blog.csdn.net/ubunfans/article/details/
/os/727.html
http://blog.csdn.net/anycell/article/details/6655421
http://m.blog.csdn.net/article/details?id=
这篇文章,我旨在做一个总结,把我这次成功安装的流程罗列出以便我以后安装有个参考。当然,如果能帮助到更多人,那就再好不过了。
本文所需资料百度云链接:/s/1c1LKLjy 密码:35wt
一、版本及说明
版本:linux系统:Vmware下的 Ubuntu14.04(64位)&
虚拟机分配内存:8G
虚拟机分配存储:40G
说明:笔者一开始是打算安装GPU版本的caffe,但是无奈,安装CUDA SAMPLE后跑“./deviceQuery”命令总是出现错误,暂时没法解决,所以决定先不用GPU,先配置出CPU版本,以后再试GPU版。那这样的话,我经过多次按照GPU的帖子和CPU的帖子出错后,突发奇想(也是被逼的。。),一开始是参考仅CPU的帖子,然后出问题了,转而用GPU的方法,CUDA安装失败,然后再在GPU方法中嵌入CPU方法,可以说是
误打误撞 终于完成。所以,总结出来,以防忘记,整合细节如下。
1、安装caffe
& & & (1)下载caffe
# sudo git clone /BVLC/caffe.git
& & & (2)安装第三方库
# sudo apt-get install libatlas-base-dev
# sudo apt-get install libprotobuf-dev
# sudo apt-get install libleveldb-dev
# sudo apt-get install libsnappy-dev
# sudo apt-get install libopencv-dev
# sudo apt-get install libboost-all-dev
# sudo apt-get install libhdf5-serial-dev
# sudo apt-get install libgflags-dev
# sudo apt-get install libgoogle-glog-dev
# sudo apt-get install liblmdb-dev
# sudo apt-get install protobuf-compiler
2、安装opencv
# cd caffe
# sudo git clone /jayrambhia/Install-OpenCV
# cd Install-OpenCV/Ubuntu
# sudo sh dependencies.sh
# sudo sh opencv2_4_10.sh
3、编译caffe
//打开到刚刚git下来的caffe
cp Makefile.config.example Makefile.config //make指令只能make Makefile.config
sudo gedit Makefile.config
//打开Makefile.config文件
然后我们把:#CPU_ONLY:=1,那一行的注释符号去掉:CPU_ONLY:=1。修改时,执行以下语句:
# sudo vi /etc/Makefile.config注意vi命令的使用方法,(:wq)保存退出。
4、测试 caffe(运行caffe程序时,必须cd 到 caffe目录下)
下载mnist数据:
# cd caffe
# sudo sh data/mnist/get_mnist.sh
# sudo sh examples/mnist/create_mnist.sh
运行时,没有GPU,则需要修改配置文件lenet_solver.prototxt:
# sudo vi examples/mnist/lenet_solver.prototxt
将最后一行的solver_mode:GPU改为solver_mode:CPU
配置好后,就可以运行了
# sudo sh examples/mnist/train_lenet.sh
注释:第 4 步我都做了,但是以下这两步 我并没有成功,然后直接转到下面的步骤!# sudo sh examples/mnist/create_mnist.sh# sudo sh examples/mnist/train_lenet.sh
-----------------------------------------------------我是安装CUDA分割线-----------------------------------------------------
注意: 以下几步是安装CUDA相关的步骤,笔者这里想试图使用GPU但是安装失败了,但是此次配置caffe确有经过此几步,而且更重要的是,下面步骤有几步操作原贴是没有的我整合了百度的结果,因此肯定要记录下来。
那其实,我觉得单纯CPU应该不需要这几步,因为不太懂,就先按我的原步骤记录下来为妙...
5、使用GPU所要做的步骤
& (1)安装CUDA 7.0(地址在上面的百度云分享里)
切换到下载的deb所在目录(方法:cd deb所在目录)我这里是直接放到主文件夹下。然后执行下列命令:
sudo dpkg -i cuda-repo-ubuntu-local_7.0-28_amd64.deb
sudo apt-get update
sudo apt-get install cuda
//原贴这里 sudo reboot 重启 但是 笔者每次重启后会出现一个问题,就是重新登入的时候 密码正确,然而还是进不了桌面...多次求助无解,有知道的童鞋求告知,谢谢!
//因此,笔者这里并没有重启。当然,笔者这里没用到CUDA,因此重不重启其实不所谓啦~~
& (2)安装cuDNN
下载cudnn-7.0-linux-x64-v4.0-rc.tgz(在最上面的网盘里有)下好后放在home下:
tar -zxvf cudnn-7.0-linux-x64-v4.0-rc.tgz
sudo cp lib64/lib* /usr/local/cuda/lib64/
sudo cp include/cudnn.h /usr/local/cuda/include/
更新软连接
cd /usr/local/cuda/lib64/
sudo chmod +r libcudnn.so.4.0.4
sudo ln -sf libcudnn.so.4.0.4 libcudnn.so.4
sudo ln -sf libcudnn.so.4 libcudnn.so
sudo ldconfig
&(3)设置环境变量
在/etc/profile中添加CUDA环境变量:
sudo gedit /etc/profile增加以下两条:
PATH=/usr/local/cuda/bin:$PATH
export PATH保存(输入&:wq& 回车)后,执行下列命令使环境变量立即生效:
source /etc/profile
*同时需要添加lib库路径: 在 /etc/ld.so.conf.d/加入文件cuda.conf,
&内容:/usr/local/cuda/lib64
这一步得:
①获取root权限:
sudo passwd://创建密码,输入两遍
su//进入root权限,输入之前创建的密码
②在ld.so.conf.d下创建文件:
touch cuda.conf③在cuda.conf中写入内容:
echo &/usr/local/cuda/lib64& && /etc/ld.so.conf.d/cuda.conf
保存后,执行下列命令使之立刻生效:(笔者这一步出来问题。。)
sudo ldconfig& & (4)安装CUDA SAMPLE
cd /usr/local/cuda/samples
sudo make all -j4//-j4表示四核
全部编译完成后:
cd /usr/local/cuda/samples/bin/x86_64/linux/release
./deviceQuery成功最后会有PASS & 我FAIL了- - &
强注释:那其实到这都是要用GPU时的操作,笔者这里没用GPU,所以这几步就是个过场,所以出了错误也没多大关系。先写到这里,后续搞明白了再更。
-------------------------------以上为cuda安装步骤-----------------------------------------------
6、安装caffe所需要的python环境 Anaconda
& & (1)下载链接一样,在文章之前的链接里。
切换到文件所在目录(与前面一样,具体不再详细说明。),执行:
bash Anaconda2-4.2.0-Linux-x86_64.sh//这个过程默认就好& &(2)添加Anaconda Library Path
在/etc/ld.so.conf.d最后加入以下路径(NOTE:下边的username要替换)
/home/username/anaconda2/lib我是用3(3)方法写入的,同样写入到cuda.conf
& &(3)在~/.bashrc最后添加下边路径
注:这一步我也木弄好,所以就复制粘贴过来了,求轻拍。。。
7、最后!编译:成败在此一举!
make all -j4
make test -j4
make runtest
笔者终于成功了,虽然仅仅是CPU,还是蛮高兴!一步一步来嘛!发张成功图,祝ubuntu下配置caffe的童鞋都能速度成功!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:595次
排名:千里之外& 也谈显存:容量为什么愈发不够用了(by少少) ...
查看: 7484|回复: 98
UID1926197主题阅读权限70帖子精华1积分7952金钱10795 荣誉28 人气254 在线时间13350 小时评议0
Lv.7游侠白金会员, 积分 7952, 距离下一级还需 7048 积分
帖子精华1积分7952金钱10795 荣誉28 人气254 评议0
这个帖子并非专业帖,主要用的是日常生活中的活生生的比喻来解释一些枯燥的名词,当然这样在专业性上就悲剧了 ,大家多包涵。
先开门见山:
显存用来干什么的??许多人马上就想到了:存图像的.............游戏里我们看的见山呀、水呀、人呀,一幅幅展现在显示器上的图片存在里面呢(继续会想到:场景越大,显存需求越大.............oocczzxx省略几万字)。
其实没那么多麻烦:显存(内存)就是用来存数据的,包括GPU(CPU)未处理、正在处理、已经处理完的数据的。
把这些数据比作海量的水,那么显存(内存)就是个大水槽,GPU(CPU)其实就是个PUMP,它工作是一边抽(数据),一边排(数据),这是个吞吐过程,其间这个水泵不是光干水(数据)循环,还要干水(数据)处理。
这是原理图,有了这张图,“位宽”、“频率”、“带宽”什么的好讲多了(没大家想的那么麻烦):
21:03:34 上传
水(数据)循环过程中,抽水、排水的(单位时间)水流量大小,就是“带宽”。
它的大小由两个因素决定:抽水、排水管的粗细(这个就是“位宽”)和排水、抽水的水流速度(这个就是“频率”)。
现实显卡带宽计算公式:显卡带宽=显存频率X显存位宽/8
从我这张GPU-z截图上可以看出:我的这张卡带宽是117.6GB/s,怎么来的:显存速度2.1GHZ,显存位宽是448bit,2.1*448/8=117.6,就是这么来的:
21:03:34 上传
我的卡是260+,这里在拖个人下水:4870。为什么要拖它下水??这家伙用的“只”是256bit的显存位宽,但惊人的是它总带宽和260+不相上下的,为什么??因为DDR5!!
4870的水管不算粗,但它暴力在水流速度比260+快非常多,两下相抵,两者的带宽打平了。(算一下:显存4G速度的4870,显卡带宽=4*256/8=128!!)
今天来问大家一个感受:科技进步可以从速度进步上展现出来,我们都看得见,3年前我们还在用256bit位宽、ddr3的显卡,但现在感觉448bit、ddr5都也不怎么够用呀..........难道数据上的提高只是用来看得??.........先别急,继续往下看:
“容量”:再来看水槽的大小,这个有什么讲究??
大家玩gta4,都要遇到一个重要的问题:“显存占用”,有了这个名词,就要讲到:“显存溢出”-----------水槽太小了,装不下那么多数据了。(当然这还得看是什么游戏,你怎么设置,因人而异)
普通来说,我们玩游戏,显卡是一张图一张图(我们叫一帧)渲染出来的,我们最终看到的是连续的画面,那么这一张(一帧)图要占多少显存??
有个简单的算法:每帧所需显存=图形分辨率×色彩精度/8,有了这个好可以讨论显存为什么不够用,分辨率的提高如何是显存杀手中的一员。
目前高清显示器已经成普及之势,分辨率便是FULL HD(全高清)分辨率,我想用这个分辨率玩游戏得不止本少一人。然而越高的分辨率,显存占用越大。
色彩精度,也就是我们俗称的几位色,也称多少色,熟悉的名词有6万5千色(16位色),就是可同时显示6万5千种颜色;1千6百万色(24位色);43亿色(32位色)。如今早都是32位色了。(颜色是红绿蓝三原色+明暗度互相调调出来的。理论上有无数种色彩)
如果是分辨率下的32位色的一张图,大小是/8,大约是8MB。
GPU在处理完一帧数据,后一帧的数据也在显存里面(等待处理了),这就是双重缓冲,而且为了画面不出现停顿,还需要一帧的空间!!这就是三重缓冲,这样就做到处理前、处理中、处理后的数据各占独立储存地址,不用抢地盘了。
3重缓冲下这个数值就要乘3,所需显存=图形分辨率×3(3重缓冲)x色彩精度/8,分辨率、32位色算下来就是约24MB显存。
24MB就可以打发掉一个游戏了??
早了,有很多东西和现在的画面无关,但来不及用到时才去从硬盘上读取,要预先装显存里(数量也很惊人的)。
这还没完,开了抗锯齿就更无语了(提高抗锯齿对显存的消耗比提高分辨率更甚)。
抗锯齿技术是先把图像渲染的很大一张,然后缩小到你的屏幕上,我们看图片都有经验,大图如果不清晰有锯齿,缩小了看就好了(同样道理小图很清晰,但放大了全是锯齿、马赛克)。2倍抗锯齿,渲染的图片大小达到惊人的1920*2& &*& &1080*2(三重缓冲需要96MB显存).............4倍抗锯齿就更无敌了,1920*4& &*& &1080*4(384MB................),8xaa(1536MB..............直接把我显存暴了..........狂汗)................
(低分辨率的好处:如果是分辨率那可以稍稍安心,不开AA占15MB,开2XAA占60MB,4XAA占240MB........可以比FULL HD分辨率省很多显存。)
工程技术人员一看开了抗锯齿显存需求量超标严重,说:“不行,不能这么搞,这么搞大家都死在显存溢出上了”,于是将全屏幕抗锯齿改为边缘抗锯齿(因为锯齿只出现在你看见的多边形物体的边缘),边缘处仍使用放大渲染,实际输出时缩小。其他地方就免了,这样既能看不见锯齿,显存也不至于被天天暴(毕竟有边缘的地方的面积只占一整幅图片的一部分),这样16xaa才有可能!
抗锯齿有FSAA、SSAA、MSAA、CSAA等很多种,为防眼睛看花,不用细看。
SSAA就是我说的前一种,全屏放大再缩回去.........MSAA和CSAA就是我说的后一种,只对边缘处理,但资源节约,这是明摆的,就是能节约不到什么虽样............(游戏选项里的4xAA是标准的MSAA、16xQ是CSAA,对桌面级来说最高的设置)
抗锯齿测试我玩过(在CRYSIS),而且开了超级取样后的CRYSIS,4X、8XQ、16XQ都玩过。
16XQ一开,CRYSIS显存经常被暴.........有景物缺失的情况出现,帧数也最低。
4X下情况最好,帧数最高(虽然提高不了几帧).........但也会有景物缺失的情况(不严重)。
所以只要高分辨率,再开了抗锯齿显存被暴很正常.........大家不要觉得奇怪........新技术说节约显存,其实也没节约到哪去
(以下为新加项目:不过我失败了...........)
本来用RivaTuner测显存占用的........... vidMem.dll不支持win7.....(not under vista and win7),看不了显存了
但本少贼心不死,我网上搜...........
分辨率 noAA
18:45:27 上传
18:45:27 上传
18:45:27 上传
引用地址:
那楼楼主的结论:弹头-热衷画质(最高画质):显存占用量高达546M,此时本地512M显存全部耗尽,已调用34M内存作为动态显存使用。
显存占用率测试:《孤岛危机》
18:45:27 上传
测试方法:直接运行Crysis游戏专用的BenchMark Tool。
18:45:27 上传
18:45:27 上传
引用地址:
那楼楼主的结论:在分辨率下,《Crysis》的显存占用率稳定在550M左右,最高的时候接近570M。而到了分辨率下,显存占用率突破600M大关。看来,Crysis这款游戏不仅仅对核心要求很高,对显存的要求也非常高啊。从测试结果可以得出结论,玩《Crysis》是需要1GB显存的。如果在DX10模式下,对显存的要求肯定还会再提升。
也终于找到了Crysis的高分辨率开aa的显存占用量,可惜也吃到苍蝇了..........两下对不上号.........估计是哪杆枪把危机 和 惊魂2搞混了.........
引用地址:
18:45:27 上传
18:47:23 上传
反正我显卡的显存被暴了................
下面继续,回到话题:
对于天生显存小的显卡,显存已经是杯水车薪,再开了高分辨率+AA就更不够呀(显存攀升的太厉害了)!!!有什么办法可以挽救一下??说的容易..............这个是硬伤,对显存容量小(水槽小)的显卡,光提高带宽(就是光提高显存位宽和显存频率),解决不了实际问题。提高显存位宽和显存频率的意义在提高GPU的单位时间数据吞吐量,这样能在同一时间,更多的水被抽过水泵、被处理(实际还要看GPU的处理能力,不是只要往里面塞,它就能全处理掉),但水槽还那么大,该溢出还是会溢出。
所以高分辨率、高aa下,GPU也一定要强!!开了抗锯齿GPU一次渲染的图像,像素大的惊人,GPU不好什么都白搭...............网上测试gtx250 512MB版速度和1G版基本一个虽样,就是这个道理。
还有人问:显存位宽搞那么大有必要吗??120GB/s,都可以让1G大小的显存一秒内被GPU“过”上120遍了...........
那我想问你:你不会认为GPU只满足于一秒和显存“过”上120遍吧??GPU这个变态佬对于数据需求的饥渴程度,连CPU都比不过...........那几百个流水处理器(SP unit)摆在那干什么??钓鱼??(流水处理器负责构建多边形、往上面贴图、上色,反反复复复复反反)
总结(为选购显卡的朋友):
有些人只推显存大、有些人则只推位宽和显存速度,其实这两者都非常重要!!
A社4系列部分低端卡上了DDR5,却只用128bit位宽,被很多人视作脑残,其实不然,经过计算ddr3 256bit 和ddr5 128bit的总带宽是旗鼓相当的,可以说不妨碍性能。
N卡不玩这个,N卡某些生产商,在显存大小上做文章,8500GT、8600GT、9400GT、9500GT等低端卡,动不动就1G显存..............但用的却是要么128bit的ddr3,要么是速度超慢的ddr2.............大家一定小心,这种卡带宽小的要死,GPU的吞吐量小,水槽做大了又有何用??浪费!!!
为了高分辨率、开高aa的朋友,也别光听显存大就ok了(有些牌子的大容量显卡就以抗锯齿这个招牌来打广告),显存的确必须大,可是GPU也一定要强!!前面说过了,开了抗锯齿GPU一次渲染的图像,像素大的惊人,SP如果不多、GPU频率如果不快,都白搭.............水槽再大,水处理速度太慢,不行。
[ 本帖最后由 linkshiao 于
20:30 编辑 ]
写的不错,也学习了
总评分:&金钱 + 40&
荷兰队之晨光 芒茫暗夜精灵 龙鹰 旅行者
UID692174主题阅读权限80帖子精华1积分25871金钱16541 荣誉47 人气168 在线时间6983 小时评议0
Lv.8游侠钻石会员, 积分 25871, 距离下一级还需 4129 积分
帖子精华1积分25871金钱16541 荣誉47 人气168 评议0
沙发....................
好 占到了......LZ的图例画得很有教科书的感觉 呵呵~
当下大于1G是NC了.....512M刚刚好 384M也凑活.....256M虚了~ 更别说192M那种悲剧卡 给个GDDR5+512bit也是白搭~
[ 本帖最后由 mango36 于
21:07 编辑 ]
毛都长齐了.....嗯~
软软抽什么的最萌了...
常盘台ACE☆御坂美琴Only My Railgun
UID1606170主题阅读权限90帖子精华1积分109313金钱317365 荣誉439 人气25088 在线时间65535 小时评议0
帖子精华1积分109313金钱317365 荣誉439 人气25088 评议0
少少说得很在理,很形象,图文并茂啊,进来学习一下(其实咱啥都看不懂)。。。
UID1926197主题阅读权限70帖子精华1积分7952金钱10795 荣誉28 人气254 在线时间13350 小时评议0
Lv.7游侠白金会员, 积分 7952, 距离下一级还需 7048 积分
帖子精华1积分7952金钱10795 荣誉28 人气254 评议0
这个抗锯齿让我想起了2年前用7900gs(256MB)玩CRYSIS,进去开了4XAA.................结果大悲剧...........(不开还能挪一下,开了就真的挪都没得挪了)
[ 本帖最后由 linkshiao 于
21:57 编辑 ]
UID1982474主题阅读权限30帖子精华0积分228金钱968 荣誉0 人气1 在线时间216 小时评议0
Lv.3游侠中级会员, 积分 228, 距离下一级还需 272 积分
帖子精华0积分228金钱968 荣誉0 人气1 评议0
很好,进来学习学习~看完眼很痛,很就没在显示器上看这么长的文章。。。
ASRock P67 Extreme4
贼船Vengeance G*2
Antec TPN650
DELL U2410
荷兰队之晨光 芒茫暗夜精灵 龙鹰 旅行者
UID692174主题阅读权限80帖子精华1积分25871金钱16541 荣誉47 人气168 在线时间6983 小时评议0
Lv.8游侠钻石会员, 积分 25871, 距离下一级还需 4129 积分
帖子精华1积分25871金钱16541 荣誉47 人气168 评议0
人气好低..............LZ好可怜~[伤心啊]
毛都长齐了.....嗯~
软软抽什么的最萌了...
UID1441327主题阅读权限50帖子精华0积分1057金钱326 荣誉0 人气0 在线时间90 小时评议0
Lv.5游侠白银会员, 积分 1057, 距离下一级还需 943 积分
帖子精华0积分1057金钱326 荣誉0 人气0 评议0
现在260+ 和4870 1G是正宗的中档卡,1000+的价钱,要基本玩好游戏就别往下档次找
果然,LP终究还是比GOW高一点点--
UID3182439主题阅读权限40帖子精华0积分980金钱2789 荣誉1 人气8 在线时间1429 小时评议0
Lv.4游侠高级会员, 积分 980, 距离下一级还需 20 积分
帖子精华0积分980金钱2789 荣誉1 人气8 评议0
其实高端显卡,GPU,显存位宽,显存速度,显存大小是配套的,比如GTX 260+,896M显存组成448位的位宽。
而相对低端的显卡,其实显存大小倒不要太在意了,因为实际上受制于GPU和显存位宽的影响,所以再大的显存也发挥不了作用!
荷兰队之晨光 芒茫暗夜精灵 龙鹰 旅行者
UID692174主题阅读权限80帖子精华1积分25871金钱16541 荣誉47 人气168 在线时间6983 小时评议0
Lv.8游侠钻石会员, 积分 25871, 距离下一级还需 4129 积分
帖子精华1积分25871金钱16541 荣誉47 人气168 评议0
回复 #7 reg-neo 的帖子
4870 1G中档了...........4850掩面成为低档..........[伤心啊]
毛都长齐了.....嗯~
软软抽什么的最萌了...
UID616050主题阅读权限70帖子精华0积分6831金钱6165 荣誉3 人气7 在线时间2333 小时评议0
Lv.7游侠白金会员, 积分 6831, 距离下一级还需 8169 积分
帖子精华0积分6831金钱6165 荣誉3 人气7 评议0
很形象很生动..............
UID1926197主题阅读权限70帖子精华1积分7952金钱10795 荣誉28 人气254 在线时间13350 小时评议0
Lv.7游侠白金会员, 积分 7952, 距离下一级还需 7048 积分
帖子精华1积分7952金钱10795 荣誉28 人气254 评议0
原帖由 mango36 于
21:04 发表
沙发....................
好 占到了......LZ的图例画得很有教科书的感觉 呵呵~
当下大于1G是NC了.....512M刚刚好 384M也凑活.....256M虚了~ 更别说192M那种悲剧卡 给个GDDR5+512bit也是白搭~ ...
太夸张了,教科书都来了...........不敢当
原帖由 mango36 于
21:35 发表
人气好低..............LZ好可怜~[伤心啊]
大晚上的人气自然低,没关系,纯当练打字了(我用了8年电脑,现在盲打还不咋地...........[伤心啊],要多练)
[ 本帖最后由 linkshiao 于
21:53 编辑 ]
荷兰队之晨光 芒茫暗夜精灵 龙鹰 旅行者
UID692174主题阅读权限80帖子精华1积分25871金钱16541 荣誉47 人气168 在线时间6983 小时评议0
Lv.8游侠钻石会员, 积分 25871, 距离下一级还需 4129 积分
帖子精华1积分25871金钱16541 荣誉47 人气168 评议0
回复 #11 linkshiao 的帖子
小学教科书............或是幼儿园的?
盲打不熟还码这么多字 膜拜~
毛都长齐了.....嗯~
软软抽什么的最萌了...
UID616050主题阅读权限70帖子精华0积分6831金钱6165 荣誉3 人气7 在线时间2333 小时评议0
Lv.7游侠白金会员, 积分 6831, 距离下一级还需 8169 积分
帖子精华0积分6831金钱6165 荣誉3 人气7 评议0
回复 #11 linkshiao 的帖子
我都12年了
照样两个手指戳...........
荷兰队之晨光 芒茫暗夜精灵 龙鹰 旅行者
UID692174主题阅读权限80帖子精华1积分25871金钱16541 荣誉47 人气168 在线时间6983 小时评议0
Lv.8游侠钻石会员, 积分 25871, 距离下一级还需 4129 积分
帖子精华1积分25871金钱16541 荣誉47 人气168 评议0
回复 #13 FantasyX.S 的帖子
........都得接受膜拜.......
毛都长齐了.....嗯~
软软抽什么的最萌了...
UID1926197主题阅读权限70帖子精华1积分7952金钱10795 荣誉28 人气254 在线时间13350 小时评议0
Lv.7游侠白金会员, 积分 7952, 距离下一级还需 7048 积分
帖子精华1积分7952金钱10795 荣誉28 人气254 评议0
原帖由 janco1987 于
21:34 发表
很好,进来学习学习~看完眼很痛,很就没在显示器上看这么长的文章。。。
其实才2500个字,3年前写帖子时,一篇写6千,边想边写边编辑,写到睡觉,一个宝贵的晚上没了...........
荷兰队之晨光 芒茫暗夜精灵 龙鹰 旅行者
UID692174主题阅读权限80帖子精华1积分25871金钱16541 荣誉47 人气168 在线时间6983 小时评议0
Lv.8游侠钻石会员, 积分 25871, 距离下一级还需 4129 积分
帖子精华1积分25871金钱16541 荣誉47 人气168 评议0
回复 #15 linkshiao 的帖子
有这种精神是得精华的前提呀............
毛都长齐了.....嗯~
软软抽什么的最萌了...
天师道 俗家弟子电脑城新手装机工
UID1892751主题阅读权限60帖子精华0积分2066金钱878 荣誉6 人气3 在线时间180 小时评议0
Lv.6游侠黄金会员, 积分 2066, 距离下一级还需 3934 积分
帖子精华0积分2066金钱878 荣誉6 人气3 评议0
看看。。话说多好的卡都米用。。。荷包不支持。。。再好也是浮云。。。
你们是怎么成为米人的呢。。请教米人经验谈。。。。。。
老爷机真是完全报废了,不停重启最后电源真是炸了
荷兰队之晨光 芒茫暗夜精灵 龙鹰 旅行者
UID692174主题阅读权限80帖子精华1积分25871金钱16541 荣誉47 人气168 在线时间6983 小时评议0
Lv.8游侠钻石会员, 积分 25871, 距离下一级还需 4129 积分
帖子精华1积分25871金钱16541 荣誉47 人气168 评议0
回复 #17 zse 的帖子
这帖里面貌似没啥米人..............[伤心啊]
毛都长齐了.....嗯~
软软抽什么的最萌了...
天师道 俗家弟子电脑城新手装机工
UID1892751主题阅读权限60帖子精华0积分2066金钱878 荣誉6 人气3 在线时间180 小时评议0
Lv.6游侠黄金会员, 积分 2066, 距离下一级还需 3934 积分
帖子精华0积分2066金钱878 荣誉6 人气3 评议0
原帖由 mango36 于
22:05 发表
这帖里面貌似没啥米人..............[伤心啊]
看你们一出新显卡就基本换了。。可怜我是准备不升级了。。除非有特别有爱的游戏。。等他掉价到600左右。。已经缩水的不成样子。。。新卡将出之时。。至于CPU将就用吧
郁闷啊。。郁闷。。。
老爷机真是完全报废了,不停重启最后电源真是炸了
UID1926197主题阅读权限70帖子精华1积分7952金钱10795 荣誉28 人气254 在线时间13350 小时评议0
Lv.7游侠白金会员, 积分 7952, 距离下一级还需 7048 积分
帖子精华1积分7952金钱10795 荣誉28 人气254 评议0
米人不玩理论,只玩实际动手DIY........
因为有米,办事情就直爽了
发帖数达到10000
大头像勋章
永久勋章,统一售价:8888金币。购买地址:待定
白金会员勋章
用户积分达到6000
荣誉达到150
特色头衔勋章
版区活动头衔达到三个
人气勋章·高级
人气值达到15000
人气勋章·初级
人气值达到3000
综合区荣誉会员勋章
综合区荣誉会员勋章
Powered by

我要回帖

更多关于 caffe 显存占用 的文章

 

随机推荐