NV 200, 300, 400, 500, 600, 700, 800

本文深入剖析NVGF6系列GPU架构,详细介绍了其在PC体系中的位置、总线带宽、图形操作流程及顶点与像素处理单元的运作机制。通过对比GPU显存、PCIExpress、CPU内存等带宽,展现了GPU在现代计算机图形处理中的核心地位。

NV GF6系列架构分析(GPU gem2 读书笔记)

http://www.cnblogs.com/wangdaniu/archive/2006/02/20/334089.html

总线带宽:PCI Express×8, 66Mhz *32bits(4Bytes)*8 = 4 GB/s 

目前计算机中的带宽:
GPU显存:550Mhz DDR ×256bits(32Bytes)×2=35GB/s
PCI Express ×16 :8GB/s
CPU内存,800Mhz前端总线:6.4GB/s

显卡在PC体系中的位置:

                                              CPU
                                                /\
                                                 |
                                            6.4GB/s
                                                 |
                                                \/
内存<=6.4GB/s or more=>北桥<=up to 8GB/s=>GPU=> to display
                                                /\                                    /\
                                                 |                                      |
                                                 |                                   up to 35GB/s
                                                \/                                     |
                                              南桥                                \/
                                                /\                                  显存
                                                 |
                                                \/
                                        其他设备

图形操作流程:

Vertex Data => Vertex  Shader×6 => Cull/Clip/Setup => Raster =>Pixel Shader ×16 =>Fragment Crossbar => Z/Blend => Back Buffer

Color Buffer => Pixel Shader (as texture)
Z Buffer=> Early Z Cull
Pixel Shader => Vertex Shader (maybe stream out)

顶点处理单元:
                         
顶点数据==> 32位浮点向量ALU×1
                         32位浮点数值ALU×1==>分支单元==>返回ALU
                         顶点纹理采样单元×1                        ==>或者生成Primitive==>culling/clipping==>光栅化

像素处理单元:

图元数据==>32位浮点ALU×1:执行一次乘加操作或者纹理采样==>
==>32位浮点ALU×1(一次加操作)==>分支单元==>返回ALU
                                                                                          ==>或者进入雾化ALU
                                                                                                            

转载于:https://www.cnblogs.com/kylegui/p/3854500.html

%% 问题1(新版数据→官方基准结果) clc; clear; close all; %% 1. 输入参数 % 1.1 钢厂 m = 7; s = [800; 800; 1000; 2000; 2000; 2000; 3000]; % 最大供应 p = [160; 155; 155; 160; 155; 150; 160]; % 出厂价(万元/单位) % 1.2 需求点 n = 15; d_node = [104, 301, 750, 606, 194, 205, 201, 680, 480, 300, 220, 210, 420, 500]; % 节点需求 % 1.3 运输里程(km) rail_km = [ 500 550 600 650 700 750 800 850 900 950 1000 1050 1100 1150 1200; 450 500 550 600 650 700 750 800 850 900 950 1000 1050 1100 1150; 400 450 500 550 600 650 700 750 800 850 900 950 1000 1050 1100; 350 400 450 500 550 600 650 700 750 800 850 900 950 1000 1050; 300 350 400 450 500 550 600 650 700 750 800 850 900 950 1000; 250 300 350 400 450 500 550 600 650 700 750 800 850 900 950; 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900]; road_km = [ 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190; 45 55 65 75 85 95 105 115 125 135 145 155 165 175 185; 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180; 35 45 55 65 75 85 95 105 115 125 135 145 155 165 175; 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170; 25 35 45 55 65 75 85 95 105 115 125 135 145 155 165; 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160]; %% 2. 运费计算(万元/单位) rail_price = @(km) 20 + 3*max(0,floor((km-1)/50)) + ... 5*max(0,floor((km-1000)/100)); road_price = @(km) 0.1*km; c = zeros(m,n); for i = 1:m for j = 1:n c(i,j) = rail_price(rail_km(i,j)) + road_price(road_km(i,j)); end end %% 3. 铺设费(官方一次性估算) layCost = 200000; %% 4. 建立 MILP 模型 nV = m*n + m; % x(7×15) + z(7) % 目标系数 f = []; for i = 1:m for j = 1:n f = [f; p(i) + c(i,j)]; end end f = [f; zeros(m,1)]; % 供应 ≤ 产能 A1 = zeros(m,nV); b1 = s; for i = 1:m A1(i,(i-1)*n+1:i*n) = 1; end % ≥500 最低生产量 M = s; A2 = zeros(2*m,nV); b2 = zeros(2*m,1); for i = 1:m cols = (i-1)*n+1:i*n; A2(2*i-1,cols) = -1; A2(2*i-1,end-m+i) = 500; A2(2*i,cols) = 1; A2(2*i,end-m+i) = -M(i); end A_ineq = [A1; A2]; b_ineq = [b1; b2]; % 需求平衡 A_eq = zeros(n,nV); b_eq = d; for j = 1:n A_eq(j,j:n:end-m) = 1; end lb = zeros(nV,1); ub = [inf(m*n,1); ones(m,1)]; intcon = m*n+1:nV; opts = optimoptions('intlinprog','Display','iter'); [x,~,exit] = intlinprog(f,intcon,A_ineq,b_ineq,A_eq,b_eq,lb,ub,opts); if exit <= 0 error('未找到最优解!'); end %% 5. 结果输出 xMat = reshape(x(1:m*n),n,m)'; total = sum(xMat,2); prodCost = total' * p; transCost = sum(sum(c .* xMat)); totCost = prodCost + transCost + layCost; fprintf('\n===== 最优订购方案 =====\n'); fprintf('钢厂 订购量(单位) 是否生产(0/1)\n'); for i = 1:m fprintf('S%-2d %-10.0f %d\n', i, total(i), round(x(end-m+i))); end fprintf('===== 费用分解 =====\n'); fprintf('生产成本 : %.2f 万元\n', prodCost); fprintf('运输费用 : %.2f 万元\n', transCost); fprintf('铺设费用 : %.2f 万元\n', layCost); fprintf('总费用 : %.2f 万元\n', totCost);出现函数或变量 'd' 无法识别。 出错 untitled11111 (第 80 行) b_eq = d;的问题请修改代码
08-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值