CN111045623A - 一种多gpu拼接环境下图形命令的处理方法 - Google Patents
一种多gpu拼接环境下图形命令的处理方法 Download PDFInfo
- Publication number
- CN111045623A CN111045623A CN201911147448.5A CN201911147448A CN111045623A CN 111045623 A CN111045623 A CN 111045623A CN 201911147448 A CN201911147448 A CN 201911147448A CN 111045623 A CN111045623 A CN 111045623A
- Authority
- CN
- China
- Prior art keywords
- gpu
- commands
- command
- data
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012545 processing Methods 0.000 title claims abstract description 177
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000004891 communication Methods 0.000 claims abstract description 7
- 238000012986 modification Methods 0.000 claims description 19
- 230000004048 modification Effects 0.000 claims description 19
- 230000008569 process Effects 0.000 claims description 8
- 238000006243 chemical reaction Methods 0.000 claims description 7
- 238000003672 processing method Methods 0.000 claims description 7
- 238000012423 maintenance Methods 0.000 claims description 6
- 230000000903 blocking effect Effects 0.000 claims description 3
- 238000013461 design Methods 0.000 abstract description 8
- 101000617738 Homo sapiens Survival motor neuron protein Proteins 0.000 abstract 2
- 102100021947 Survival motor neuron protein Human genes 0.000 abstract 2
- 238000009877 rendering Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/1423—Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Image Processing (AREA)
Abstract
本发明属于图形处理器设计领域,涉及一种多GPU拼接环境下图形命令的处理方法,在采用基于主机分发的方式实现多GPU通信时,将图像处理单元所处理的命令的处理划分为多GPU无关命令(MNC)的处理和多GPU有关命令(MRC)的处理;针对多GPU无关命令(MNC)的处理,主机驱动及图像处理单元沿用单GPU环境下的处理方式;针对多GPU有关命令(MRC)的处理,主机驱动将每一条多GPU有关命令(MRC)按照需实现的功能分解成两条多GPU无关命令(SMNC);针对分解出的多GPU无关命令(SMNC),按照单GPU环境在图像处理单元中进行相应处理。本发明可以较小的代价实现图像处理单元对多GPU拼接显示的支持,可用于自主图形处理器图像处理单元的研制。
Description
技术领域
本发明属于图形处理器设计领域,涉及一种多GPU拼接环境下图形命令的处理方法。
背景技术
图形处理器(GPU)是进行图形绘制、图像及视频处理和显示的关键部件,普遍存在于各类需对窗口系统、图形界面、游戏场景、图像应用和视频播放等进行加速的系统之中。
多GPU并行是指多个GPU协同工作,共同加速图形的绘制。采用多GPU并行,可达到两种效果,提升帧率和扩展分辨率。也即,多GPU并行模式,包括两种:保持绘制分辨率不变,增加绘制帧率,提升显示效果;保持绘制帧率不变,扩展绘制分辨率,显示更大的画面。当前GPU厂商的多GPU并行,主要面向帧率的提升,如SFR(Split Frame Rendering) 和AFR(Alternate Frame Rendering)技术。假定系统中GPU的数量为N:SFR是将绘制画面平均分成N个区域并将每个区域交给一个GPU绘制,最后由主GPU合成一个完整画面; AFR是将要绘制的帧以N为单位划分成组,每个GPU负责绘制该组中的一帧。当然,SFR也可用于扩展分辨率的场合。
多屏显示包括两种,多个屏幕显示相同的内容和多个屏幕显示不同的内容。多个屏幕显示相同的内容,通常由单个GPU绘制,然后发送到多个显示器进行显示;而多个屏幕显示不同的内容,每个屏幕上的内容则均需要GPU进行单独绘制。多屏拼接显示是指多个屏幕各自显示不同的内容,并拼接起来整体组成一个更大的画面,且鼠标、窗口跨越多个屏幕,可在各屏幕间移动,而应用软件看到的还是一个GPU,且无需进行任何到多GPU的改动。多屏拼接显示在会议、监控、指挥、调度等场景的大屏显示系统中有广泛的应用需求。
图像处理单元是GPU中负责像素、纹理和位图数据加载、读取,并在加载和读取过程中进行颜色变换、处理的重要部件,负责为GPU提供图像管线和图像处理子集功能的支持和实现。多GPU并行的情况下,图像处理单元处理的部分OpenGL命令涉及多个GPU之间的数据传递,情况较为复杂。
我国对GPU的研究尚处于起步阶段,研制基础薄弱,仅有少数图像处理单元的报道,且未涉及对多GPU拼接处理的支持;而国外厂商的多GPU并行,技术实现复杂,资料公开较少,且主要面向帧率的提升。基于国内的技术积累,完全照搬国外厂商实现多GPU拼接显示的支持尚有难度。因此,寻找符合目前研制基础,易于实现且能满足相应要求的图像处理单元对多GPU拼接显示的支持方案,突破支持多GPU并行处理的自主知识产权GPU芯片研制技术,对图形加速系统的独立研制和自主发展意义重大。
发明内容
本发明的目的是:提供一种多GPU拼接环境下图形命令的处理方法,实现图像处理单元从仅支持单GPU到支持多GPU拼接显示的扩展,为突破支持多GPU拼接的图形处理器设计提供技术支持。
本发明的技术解决方案是:
本发明提出一种多GPU拼接环境下图形命令的处理方法,在采用基于主机分发的方式实现多GPU通信时,将图像处理单元所处理的命令的处理划分为多GPU无关命令(MNC)的处理和多GPU有关命令(MRC)的处理;
针对多GPU无关命令(MNC)的处理,主机驱动及图像处理单元沿用单GPU环境下的处理方式;
针对多GPU有关命令(MRC)的处理,主机驱动将每一条多GPU有关命令(MRC)按照需实现的功能分解成两条多GPU无关命令(SMNC);针对分解出的多GPU无关命令(SMNC),按照单GPU环境在图像处理单元中进行相应处理。
优选的,所述针对多GPU有关命令(MRC)的处理方式为:
在主机驱动中将多GPU有关命令(MRC)按照需实现功能进行分解,分解成多条多GPU 无关命令(SMNC);
在主机驱动中为上层应用提供的与多GPU拼接相关的命令(MRC)进行拆分,并按照各 GPU的拼接关系和函数功能,进行原始命令(MRC)和多条拆分命令(SMNC)之间的转换;
在主机驱动中按照各GPU的拼接关系和函数功能,对多GPU无关命令(MNC),在原始参数、原始数据和下发/上传数据之间进行转换;
在主机驱动中将所有待下发到GPU的命令(包括MNC、SMNC)分为多GPU无差异的命令和多GPU有差异命令;其中,对于多GPU无差异的命令,主机驱动中仅将该命令向所有的GPU广播;对于多GPU有差异命令,驱动需使用与每个GPU对应的参数,将该命令向GPU逐个发送;
在图像处理单元中,
针对多GPU无关命令(MNC),图像处理单元沿用单GPU环境下的处理方式;
针对分解出的多GPU无关命令(SMNC),按照单GPU环境,在图像处理单元中进行相应处理。
优选的,所述原始命令(MRC)和多条拆分命令(SMNC)之间的转换包括:对命令的拆分、数据的保持、数据的拆分、数据的合并、对参数的保持和对参数的修改;
在主机驱动中按照各GPU的拼接关系和函数功能,对多GPU无关命令(MNC),在原始参数、原始数据和下发/上传数据之间进行转换包括:对数据的保持、数据的拆分、数据的合并、对参数的保持和对参数的修改。
优选的,针对分解出的多GPU无关命令(SMNC),按照单GPU环境在图像处理单元中进行相应处理方式包括:
根据分解出多GPU无关命令(SMNC)的功能和图像处理单元结构为分解出的多GPU无关命令(SMNC)设计数据通路;
根据分解出多GPU无关命令(SMNC)的功能和图像处理单元结构,定义分解出的多GPU无关命令(SMNC)的模块处理命令对照表;
图像处理单元流水线各功能模块按照模块处理命令对照表,对分解出的多GPU无关命令进行处理。
优选的,还包括以下处理:
对于从主机下发的数据,包括多GPU无关命令(MNC)和拆分的多GPU无关命令(SMNC),对超出本图像处理单元处理范围的数据进行丢弃的处理,该部分功能由使能寄存器控制,使能后功能开启,禁止后功能关闭,该使能寄存器主机驱动可配置。
优选的,主机驱动对多GPU拼接相关的命令(MRC)和多GPU无关命令(MNC)的处理包括,
一个修改使能:修改使能无效时,不在主机驱动中对数据、参数进行任何处理;修改使能有效时,在主机驱动中对数据、参数根据情况进行处理,处理的步骤包括:
对待下发命令的数据和参数是否进行修改的判定,该判定依据命令类型、多GPU拼接模式和各GPU的坐标范围进行;判定结果包括无需处理和需要处理两种;对于每种结果,命令数据流的方向,均包括从主机到GPU,和从GPU到主机两个方向;无需处理的命令,保持原有的数据和参数,直接下发;需要处理的命令,对待下发命令的数据和参数进行处理后再进行下发;
图像处理单元对多GPU无关命令(MNC)和拆分的多GPU拼接无关命令(SMNC)的处理包括,
修改使能无效时,数据超出某GPU范围的判定及丢弃由图像处理单元硬件处理;
修改使能有效时,对待下发到GPU的参数和数据进行修改操作,该工作不再由图像处理硬件负责。
优选的,主机驱动对多GPU拼接相关的命令(MRC)和多GPU无关命令(MNC)的处理中还包括,
申请多个缓冲区,其个数与多GPU的数量相同,并将上层应用的数据从指定的缓冲区中按照多GPU的拼接关系,分块拷贝到申请的多个缓冲区中;
申请多个缓冲区,其个数与多GPU的数量相同,将这些缓冲区指针作为函数参数下发,函数返回时,将多个缓冲区中的数据,按照多GPU的拼接关系,拷贝合并到上层应用函数指定的统一的缓冲区中。
优选的,主机驱动对多GPU拼接相关的命令(MRC)的处理中,包含对拆分后的命令是否执行完毕的判定,所有拆分后的命令执行完毕时该拆分前命令执行完毕,主机驱动执行下一条命令。
优选的,主机驱动对多GPU拼接相关的命令(MRC)的处理中,包含对每个GPU是否对下发给它的命令执行完毕的判定,下发给多GPU的命令,所有GPU均执行完毕时该命令执行完毕,主机驱动执行下一条命令。
本发明的有益技术效果是:
1、本发明提供了一种多GPU拼接环境下图形命令的处理方法,能实现图像处理单元对多GPU以及多GPU拼接模式的支持;
2、本发明以较小的硬件代价实现图像处理单元对多GPU拼接显示的支持,避免在多 GPU之间采用直接连接的方式通信,可大幅降低硬件复杂度和实现代价;
3、本发明提供了一种多GPU拼接环境下图形命令的处理方法,通过本方法仅进行较小改动,就能使仅支持单GPU环境的图像处理单元支持多GPU拼接环境的设计方法;
4、本发明提供了一种多GPU拼接环境下图形命令的处理方法,可用于自主图形处理器图像处理单元的研制;
5、本发明提供的一种多GPU拼接环境下图形命令的处理方法,多GPU拼接显示场景下,下发命令所带的数据超出某GPU范围的判定及抛弃,即可由主机驱动完成,也可由图像处理单元硬件完成,为用户提供了灵活的选择。
附图说明
图1是4个GPU并行处理进行拼接显示的一种应用场景;
图2多GPU并行处理场景中互连分发器的两种拓扑;
图3是4个GPU一种拼接方式及该方式下glCopyPixels、glDrawPixels命令示意图;
图4是图像处理单元对多GPU拼接的支持方法步骤;
图5是为拆分后命令的设计的数据通路示例,其中:HIU-主机接口单元;SGU-状态参数管理单元;JSU-任务调度单元;ROU-光栅操作单元;P$-PixelsCache;Z$-ZCache。
具体实施方式
下面结合附图和具体实施例,对本发明的技术方案进行清楚、完整地表述。显然,所表述的实施例仅是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提所获得的所有其他实施例,都属于本发明的保护范围。
在本发明的一个实施例中,提出一种多GPU拼接环境下图形命令的处理方法,在采用基于主机分发的方式实现多GPU通信时,将图像处理单元所处理的命令的处理划分为多GPU 无关命令(MNC)的处理和多GPU有关命令(MRC)的处理;
针对多GPU无关命令(MNC)的处理,主机驱动及图像处理单元沿用单GPU环境下的处理方式;
针对多GPU有关命令(MRC)的处理,主机驱动将每一条多GPU有关命令(MRC)按照需实现的功能分解成两条多GPU无关命令(SMNC);针对分解出的多GPU无关命令(SMNC),按照单GPU环境在图像处理单元中进行相应处理。
在一个实施例中,所述针对多GPU有关命令(MRC)的处理方式为:
在主机驱动中将多GPU有关命令(MRC)按照需实现功能进行分解,分解成多条多GPU 无关命令(SMNC);
在主机驱动中为上层应用提供的与多GPU拼接相关的命令(MRC)进行拆分,并按照各 GPU的拼接关系和函数功能,进行原始命令(MRC)和多条拆分命令(SMNC)之间的转换;
在主机驱动中按照各GPU的拼接关系和函数功能,对多GPU无关命令(MNC),在原始参数、原始数据和下发/上传数据之间进行转换;
在主机驱动中将所有待下发到GPU的命令(包括MNC、SMNC)分为多GPU无差异的命令和多GPU有差异命令;其中,对于多GPU无差异的命令,主机驱动中仅将该命令向所有的GPU广播;对于多GPU有差异命令,驱动需使用与每个GPU对应的参数,将该命令向GPU逐个发送;
在图像处理单元中,
针对多GPU无关命令(MNC),图像处理单元沿用单GPU环境下的处理方式;
针对分解出的多GPU无关命令(SMNC),按照单GPU环境,在图像处理单元中进行相应处理。
在一个实施例中,所述原始命令(MRC)和多条拆分命令(SMNC)之间的转换包括:对命令的拆分、数据的保持、数据的拆分、数据的合并、对参数的保持和对参数的修改;
在主机驱动中按照各GPU的拼接关系和函数功能,对多GPU无关命令(MNC),在原始参数、原始数据和下发/上传数据之间进行转换包括:对数据的保持、数据的拆分、数据的合并、对参数的保持和对参数的修改。
在一个实施例中,针对分解出的多GPU无关命令(SMNC),按照单GPU环境在图像处理单元中进行相应处理方式包括:
根据分解出多GPU无关命令(SMNC)的功能和图像处理单元结构为分解出的多GPU无关命令(SMNC)设计数据通路;
根据分解出多GPU无关命令(SMNC)的功能和图像处理单元结构,定义分解出的多GPU无关命令(SMNC)的模块处理命令对照表;
图像处理单元流水线各功能模块按照模块处理命令对照表,对分解出的多GPU无关命令进行处理。
在一个实施例中,本方法还包括以下处理:
对于从主机下发的数据,包括多GPU无关命令(MNC)和拆分的多GPU无关命令(SMNC),对超出本图像处理单元处理范围的数据进行丢弃的处理,该部分功能由使能寄存器控制,使能后功能开启,禁止后功能关闭,该使能寄存器主机驱动可配置。
在一个实施例中,主机驱动对多GPU拼接相关的命令(MRC)和多GPU无关命令(MNC)的处理包括,
一个修改使能:修改使能无效时,不在主机驱动中对数据、参数进行任何处理;修改使能有效时,在主机驱动中对数据、参数根据情况进行处理,处理的步骤包括:
对待下发命令的数据和参数是否进行修改的判定,该判定依据命令类型、多GPU拼接模式和各GPU的坐标范围进行;判定结果包括无需处理和需要处理两种;对于每种结果,命令数据流的方向,均包括从主机到GPU,和从GPU到主机两个方向;无需处理的命令,保持原有的数据和参数,直接下发;需要处理的命令,对待下发命令的数据和参数进行处理后再进行下发;
图像处理单元对多GPU无关命令(MNC)和拆分的多GPU拼接无关命令(SMNC)的处理包括,
修改使能无效时,数据超出某GPU范围的判定及丢弃由图像处理单元硬件处理;
修改使能有效时,对待下发到GPU的参数和数据进行修改操作,该工作不再由图像处理硬件负责。
在一个实施例中,主机驱动对多GPU拼接相关的命令(MRC)和多GPU无关命令(MNC)的处理中还包括,
申请多个缓冲区,其个数与多GPU的数量相同,并将上层应用的数据从指定的缓冲区中按照多GPU的拼接关系,分块拷贝到申请的多个缓冲区中;
申请多个缓冲区,其个数与多GPU的数量相同,将这些缓冲区指针作为函数参数下发,函数返回时,将多个缓冲区中的数据,按照多GPU的拼接关系,拷贝合并到上层应用函数指定的统一的缓冲区中。
在一个实施例中,主机驱动对多GPU拼接相关的命令(MRC)的处理中,包含对拆分后的命令是否执行完毕的判定,所有拆分后的命令执行完毕时该拆分前命令执行完毕,主机驱动执行下一条命令。
在一个实施例中,主机驱动对多GPU拼接相关的命令(MRC)的处理中,包含对每个GPU 是否对下发给它的命令执行完毕的判定,下发给多GPU的命令,所有GPU均执行完毕时该命令执行完毕,主机驱动执行下一条命令。
下面是多GPU并行工作,进行拼接显示的一种应用场景示例。
如图1所示,该场景下,4个GPU通过互连分发器与同一主机CPU连接。其中,互连分发器可以采用有多种类型,图2是互连分发器的2种类型示例,4个GPU的互连可以通过多级子分发器级联实现,也可以通过单个子分发器实现。4个GPU进行拼接显示,模式见图3 所示,4个GPU在行、列方向上进行了分辨率扩展。
针对上面的应用场景,说明如何采用本发明的方法,使原本仅支持单GPU工作的图像处理单元支持多GPU拼接显示场景。
实施例一:
步骤一:确定采用基于主机分发而非多GPU直接互连的方式实现多GPU通信。图1所示场景中,4个GPU通过互连分发器与主机CPU互连,采用基于主机CPU的方式进行GPU之间的通信。
步骤二:将图像处理单元所处理命令划分为多GPU无关命令(MNC)和多GPU有关命令 (MRC)。该图像处理单元处理OpenGL命令58条,其中多GPU有关命令11条,如表1所示,除此之外,其余命令均为多GPU无关命令。
表1
序号 | 多GPU有关命令 | 拆分命令 |
1 | glCopyPixels | glMGReadPixels+glMGDrawPixels |
2 | glCopyColorTable | glMGReadPixels+glMGColorTable |
3 | glCopyColorSubTable | glMGReadPixels+glMGColorSubTable |
4 | glCopyConvolutionFilter1D | glMGReadPixels+glMGConvolutionFilter1D |
5 | glCopyConvolutionFilter2D | glMGReadPixels+glMGConvolutionFilter2D |
6 | glCopyTexImage2D | glMGReadPixels+glMGTexImage2D |
7 | glCopyTexImage1D | glMGReadPixels+glMGTexImage1D |
8 | glCopyTexSubImage3D | glMGReadPixels+glMGTexSubImage3D |
9 | glCopyTexSubImage2D | glMGReadPixels+glMGTexSubImage2D |
10 | glCopyTexSubImage1D | glMGReadPixels+glMGTexSubImage1D |
11 | glBlitFramebuffer | glMGReadPixels+glMGBlitFramebuffer |
步骤三:多GPU无关命令(MNC),图像处理单元沿用单GPU环境下的设计,不针对多GPU拼接环境做相应设计。本实施例中,多GPU无关命令,沿用专利申请“一种图形处理器图像处理单元体系结构”(公开号:CN107886466A)设计保持不变,并不针对多GPU做任何改变。
步骤四:多GPU有关命令(MRC)按照需实现功能进行分解,分解成多条多GPU无关命令(SMNC)。本实施例中,对11条多GPU有关命令进行了拆分,如表1所示,得出12条拆分后的多GPU无关命令。
步骤五:针对分解出的多GPU无关命令(SMNC),按照单GPU环境,在图像处理单元中进行相应设计,具体包括:
根据分解出多GPU无关命令(SMNC)的功能和图像处理单元结构为分解出的多GPU无关命令(SMNC)设计数据通路。分析11条拆分后的多GPU无关命令(SMNC)的功能,并针对图5中的图像处理单元结构,设计这11条拆分后多GPU无关命令(SMNC)的数据通路,图5给出了4条函数的通路。
根据分解出多GPU无关命令(SMNC)的功能和图像处理单元结构,定义分解出的多GPU无关命令(SMNC)的模块处理命令对照表,参见表2。表3是原本即为多GPU无关命令(MNC)中,与多GPU有关命令拆分命令功能类似命令的“模块处理命令对照表”,对比表2、表3,可见拆分后多GPU无关命令与原本多GPU无关命令在功能和处理上的差别。
表2
表3
对原图像处理单元流水线各功能模块进行改造,按照定义的“模块处理命令对照表”增加对分解出的多GPU无关命令的处理,即对图5中的图像处理单元结构中各子模块进行改造,按照表2在各模块中增加对各拆分后多GPU无关命令的处理。√代表该模块需处理该命令,╳代表该模块不处理该命令。
步骤六:对原图像处理单元进行改造,对于从主机下发的数据,包括多GPU无关命令(MNC)和拆分的多GPU无关命令(SMNC),增加对超出本图像处理单元处理范围的数据进行丢弃的处理,且该部分功能由使能寄存器控制,使能后功能开启,禁止后功能关闭,该使能寄存器主机驱动可配置。本实施例中,在主机驱动中,对该使能寄存器进行配置,使能该部分功能。
步骤七:对主机驱动进行改造,将为上层应用提供的与多GPU拼接相关的命令进行拆分,并按照各GPU的拼接关系和函数功能,进行原始命令(MRC)和多条拆分命令(SMNC) 之间的转换,包括对命令的拆分、数据的保持、拆分、合并,和对参数的保持、修改。例如,glCopyPixels命令,在步骤二的划分时属于多GPU有关命令,图3所示的场景中,从源区域拷贝到目的区域,而源区域跨越了GPU1、GPU2、GPU3、GPU4,目的区域仅存在于GPU3。主机驱动中,将glCopyPixels函数依据表1分解成glMGReadPixels命令和glMGDrawPixels 命令;这3个命令的原型如下:
voidglCopyPixels(GLintx,GLinty,GLsizeiwidth,GLsizeiheight,GLenumtype);
voidglMGReadPixels(GLint x,GLinty,GLsizeiwidth,GLsizeiheight,GLenumformat,GLenumtype,GLvoid*data);
voidglMGDrawPixels(GLsizeiwidth,GLsizeiheight,GLenumformat,GLenumtype,constGLvoid*data);
依据4个GPU的拼接位置和glCopyPixels中的源参数x、y、width、height,对各GPU的glMGReadPixels参数进行设定:
GPU1:GPU1_x=x、GPU1_y=0、GPU1_width=(GPU1_resolution_x-x)、GPU1_height =(y+height–GPU3_resolution_y);
GPU2:GPU2_x=0、GPU2_y=0、GPU2_width=(x+width–GPU1_resolution_x)、GPU2_height=(y+height–GPU3_resolution_y);
GPU3:GPU3_x=x、GPU3_y=y、GPU3_width=(GPU1_resolution_x-x)、GPU3_height =(GPU3_resolution_y-height);
GPU4:GPU4_x=0、GPU4_y=y、GPU4_width=(x+width–GPU1_resolution_x)、GPU4_height=(GPU3_resolution_y-height);
其中,format均设置为GL_RGBA,type均设置为GL_BYTE;data分别设置为GPU1_data、 GPU2_data、GPU3_data、GPU4_data,分别对应主机驱动为GPU1~GPU4分配的数据存储地址;需要说明的是,拼接显示要求各GPU的分辨率相同,也即GPU*_resolution_x为同一个值、 GPU*_resolution_y也为同一个值。
主机驱动将glMGReadPixels返回的GPU1_data、GPU2_data、GPU3_data、GPU4_data合并成到缓冲区GPU_data,供glMGDrawPixels命令使用。
主机驱动向各GPU下发glMGDrawPixels命令时,width、height与原始命令glCopyPixels相同,format、type与glMGReadPixels设置相同,data使用GPU_data,将数据向所有GPU广播,超出范围的数据由各GPU的图像处理单元丢弃。
步骤八:对主机驱动进行改造,按照各GPU的拼接关系和函数功能,对多GPU无关命令(MNC),在原始参数、数据和下发/上传数据之间进行转换,包括对数据的保持、拆分、合并,和对参数的保持和修改。例如,glDrawPixels命令,在步骤二的划分时属于多GPU 无关命令(MNC),其命令的原型如下:
voidglDrawPixels(GLsizeiwidth,GLsizeiheight,GLenumformat,GLenumtype,constGLvoid*data);
本实施例中,驱动对图像处理单元硬件进行了使能,由硬件负责超出本图像处理单元处理范围的数据进行丢弃的处理,因而驱动对glDrawPixels的参数和数据进行保持处理,无需根据依据4个GPU的拼接位置对源参数和数据进行拆分。
步骤九:对主机驱动进行改造,
将所有待下发到GPU的命令分为两类:多GPU无差异的命令、多GPU有差异命令;其中,
对于多GPU无差异的命令,驱动中仅将该命令向所有的GPU广播,多个GPU接收到同样的命令、参数、数据;
对于多GPU有差异命令,驱动需使用与每个GPU对应的参数,将该命令向GPU逐个发送,且发送次数与多GPU个数相同,多个GPU接收到的命令相同,但参数、数据具有差异。
例如,
上面的glMGReadPixels命令,数据、参数经主机驱动修改后,属于多GPU有差异命令,分别向4个GPU逐次发送;
上面的glMGDrawPixels、glDrawPixels命令,命令、参数、数据均相同,向所有的GPU 广播。
最后应说明的是,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种多GPU拼接环境下图形命令的处理方法,其特征于:
在采用基于主机分发的方式实现多GPU通信时,将图像处理单元所处理的命令的处理划分为多GPU无关命令(MNC)的处理和多GPU有关命令(MRC)的处理;
针对多GPU无关命令(MNC)的处理,主机驱动及图像处理单元沿用单GPU环境下的处理方式;
针对多GPU有关命令(MRC)的处理,主机驱动将每一条多GPU有关命令(MRC)按照需实现的功能分解成两条多GPU无关命令(SMNC);针对分解出的多GPU无关命令(SMNC),按照单GPU环境在图像处理单元中进行相应处理。
2.根据权利要求1所述的一种多GPU拼接环境下图形命令的处理方法,其特征于,所述针对多GPU有关命令(MRC)的处理方式为:
在主机驱动中将多GPU有关命令(MRC)按照需实现功能进行分解,分解成多条多GPU无关命令(SMNC);
在主机驱动中为上层应用提供的与多GPU拼接相关的命令(MRC)进行拆分,并按照各GPU的拼接关系和函数功能,进行原始命令(MRC)和多条拆分命令(SMNC)之间的转换;
在主机驱动中按照各GPU的拼接关系和函数功能,对多GPU无关命令(MNC),在原始参数、原始数据和下发/上传数据之间进行转换;
在主机驱动中将所有待下发到GPU的命令(包括MNC、SMNC)分为多GPU无差异的命令和多GPU有差异命令;其中,对于多GPU无差异的命令,主机驱动中仅将该命令向所有的GPU广播;对于多GPU有差异命令,驱动需使用与每个GPU对应的参数,将该命令向GPU逐个发送;
在图像处理单元中,
针对多GPU无关命令(MNC),图像处理单元沿用单GPU环境下的处理方式;
针对分解出的多GPU无关命令(SMNC),按照单GPU环境,在图像处理单元中进行相应处理。
3.根据权利要求2所述的一种多GPU拼接环境下图形命令的处理方法,其特征于,所述原始命令(MRC)和多条拆分命令(SMNC)之间的转换包括:对命令的拆分、数据的保持、数据的拆分、数据的合并、对参数的保持和对参数的修改;
在主机驱动中按照各GPU的拼接关系和函数功能,对多GPU无关命令(MNC),在原始参数、原始数据和下发/上传数据之间进行转换包括:对数据的保持、数据的拆分、数据的合并、对参数的保持和对参数的修改。
4.根据权利要求1所述的一种多GPU拼接环境下图形命令的处理方法,其特征在于,针对分解出的多GPU无关命令(SMNC),按照单GPU环境在图像处理单元中进行相应处理方式包括:
根据分解出多GPU无关命令(SMNC)的功能和图像处理单元结构为分解出的多GPU无关命令(SMNC)设计数据通路;
根据分解出多GPU无关命令(SMNC)的功能和图像处理单元结构,定义分解出的多GPU无关命令(SMNC)的模块处理命令对照表;
图像处理单元流水线各功能模块按照模块处理命令对照表,对分解出的多GPU无关命令进行处理。
5.根据权利要求1所述的一种多GPU拼接环境下图形命令的处理方法,其特征在于,还包括以下处理:
对于从主机下发的数据,包括多GPU无关命令(MNC)和拆分的多GPU无关命令(SMNC),对超出本图像处理单元处理范围的数据进行丢弃的处理,该部分功能由使能寄存器控制,使能后功能开启,禁止后功能关闭,该使能寄存器主机驱动可配置。
6.根据权利要求2所述的一种多GPU拼接环境下图形命令的处理方法,其特征在于,主机驱动对多GPU拼接相关的命令(MRC)和多GPU无关命令(MNC)的处理包括,
一个修改使能:修改使能无效时,不在主机驱动中对数据、参数进行任何处理;修改使能有效时,在主机驱动中对数据、参数根据情况进行处理,处理的步骤包括:
对待下发命令的数据和参数是否进行修改的判定,该判定依据命令类型、多GPU拼接模式和各GPU的坐标范围进行;判定结果包括无需处理和需要处理两种;对于每种结果,命令数据流的方向,均包括从主机到GPU,和从GPU到主机两个方向;无需处理的命令,保持原有的数据和参数,直接下发;需要处理的命令,对待下发命令的数据和参数进行处理后再进行下发;
图像处理单元对多GPU无关命令(MNC)和拆分的多GPU拼接无关命令(SMNC)的处理包括,
修改使能无效时,数据超出某GPU范围的判定及丢弃由图像处理单元硬件处理;
修改使能有效时,对待下发到GPU的参数和数据进行修改操作,该工作不再由图像处理硬件负责。
7.根据权利要求2所述的一种多GPU拼接环境下图形命令的处理方法,其特征在于,主机驱动对多GPU拼接相关的命令(MRC)和多GPU无关命令(MNC)的处理中还包括,
申请多个缓冲区,其个数与多GPU的数量相同,并将上层应用的数据从指定的缓冲区中按照多GPU的拼接关系,分块拷贝到申请的多个缓冲区中;
申请多个缓冲区,其个数与多GPU的数量相同,将这些缓冲区指针作为函数参数下发,函数返回时,将多个缓冲区中的数据,按照多GPU的拼接关系,拷贝合并到上层应用函数指定的统一的缓冲区中。
8.根据权利要求2所述的一种多GPU拼接环境下图形命令的处理方法,其特征在于:主机驱动对多GPU拼接相关的命令(MRC)的处理中,包含对拆分后的命令是否执行完毕的判定,所有拆分后的命令执行完毕时该拆分前命令执行完毕,主机驱动执行下一条命令。
9.根据权利要求2所述的一种多GPU拼接环境下图形命令的处理方法,其特征在于,主机驱动对多GPU拼接相关的命令(MRC)的处理中,包含对每个GPU是否对下发给它的命令执行完毕的判定,下发给多GPU的命令,所有GPU均执行完毕时该命令执行完毕,主机驱动执行下一条命令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911147448.5A CN111045623B (zh) | 2019-11-21 | 2019-11-21 | 一种多gpu拼接环境下图形命令的处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911147448.5A CN111045623B (zh) | 2019-11-21 | 2019-11-21 | 一种多gpu拼接环境下图形命令的处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111045623A true CN111045623A (zh) | 2020-04-21 |
CN111045623B CN111045623B (zh) | 2023-06-13 |
Family
ID=70232569
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911147448.5A Active CN111045623B (zh) | 2019-11-21 | 2019-11-21 | 一种多gpu拼接环境下图形命令的处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111045623B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328532A (zh) * | 2020-11-02 | 2021-02-05 | 长沙景嘉微电子股份有限公司 | 多gpu通信的方法及装置、存储介质、电子装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060232590A1 (en) * | 2004-01-28 | 2006-10-19 | Reuven Bakalash | Graphics processing and display system employing multiple graphics cores on a silicon chip of monolithic construction |
CN1890660A (zh) * | 2003-11-19 | 2007-01-03 | 路西德信息技术有限公司 | Pc总线上的多重三维图形管线的方法及系统 |
WO2016082073A1 (en) * | 2014-11-24 | 2016-06-02 | Intel Corporation | Support for application transparent, high available gpu computing with vm checkpointing |
US20160364828A1 (en) * | 2015-06-12 | 2016-12-15 | Intel Corporation | Facilitating dynamic runtime transformation of graphics processing commands for improved graphics performance at computing devices |
CN107168795A (zh) * | 2017-05-12 | 2017-09-15 | 西南大学 | 基于cpu‑gpu异构复合式并行计算框架的密码子偏差系数模型方法 |
CN107886466A (zh) * | 2017-11-24 | 2018-04-06 | 中国航空工业集团公司西安航空计算技术研究所 | 一种图形处理器图像处理单元体系结构 |
CN107958437A (zh) * | 2017-11-24 | 2018-04-24 | 中国航空工业集团公司西安航空计算技术研究所 | 一种多gpu大分辨率多屏图形分块并行渲染方法 |
CN109643291A (zh) * | 2016-09-29 | 2019-04-16 | 英特尔公司 | 用于在虚拟化执行环境中高效使用图形处理资源的方法和设备 |
-
2019
- 2019-11-21 CN CN201911147448.5A patent/CN111045623B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1890660A (zh) * | 2003-11-19 | 2007-01-03 | 路西德信息技术有限公司 | Pc总线上的多重三维图形管线的方法及系统 |
US20060232590A1 (en) * | 2004-01-28 | 2006-10-19 | Reuven Bakalash | Graphics processing and display system employing multiple graphics cores on a silicon chip of monolithic construction |
WO2016082073A1 (en) * | 2014-11-24 | 2016-06-02 | Intel Corporation | Support for application transparent, high available gpu computing with vm checkpointing |
US20160364828A1 (en) * | 2015-06-12 | 2016-12-15 | Intel Corporation | Facilitating dynamic runtime transformation of graphics processing commands for improved graphics performance at computing devices |
TW201706840A (zh) * | 2015-06-12 | 2017-02-16 | 英特爾股份有限公司 | 促進圖形處理命令的動態運行時變換以用於在計算裝置之改善的圖形效能 |
CN109643291A (zh) * | 2016-09-29 | 2019-04-16 | 英特尔公司 | 用于在虚拟化执行环境中高效使用图形处理资源的方法和设备 |
CN107168795A (zh) * | 2017-05-12 | 2017-09-15 | 西南大学 | 基于cpu‑gpu异构复合式并行计算框架的密码子偏差系数模型方法 |
CN107886466A (zh) * | 2017-11-24 | 2018-04-06 | 中国航空工业集团公司西安航空计算技术研究所 | 一种图形处理器图像处理单元体系结构 |
CN107958437A (zh) * | 2017-11-24 | 2018-04-24 | 中国航空工业集团公司西安航空计算技术研究所 | 一种多gpu大分辨率多屏图形分块并行渲染方法 |
Non-Patent Citations (3)
Title |
---|
JOONG-HO WON; YONGKWEON JEON; JARRETT K. ROSENBERG; SUNGROH YOON: "Uncluttered Single-Image Visualization of Vascular Structures Using GPU and Integer Programming", 《IEEE TRANSACTIONS ON VISUALIZATION AND COMPUTER GRAPHICS》 * |
任向隆等: "支持双路显示的GPU显示控制单元设计与实现", 《小型微型计算机系统》 * |
任向隆等: "面向OpenGL 2.0的图形处理器图像处理单元体系结构", 《计算机辅助设计与图形学学报》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328532A (zh) * | 2020-11-02 | 2021-02-05 | 长沙景嘉微电子股份有限公司 | 多gpu通信的方法及装置、存储介质、电子装置 |
CN112328532B (zh) * | 2020-11-02 | 2024-02-09 | 长沙景嘉微电子股份有限公司 | 多gpu通信的方法及装置、存储介质、电子装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111045623B (zh) | 2023-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6108014A (en) | System and method for simultaneously displaying a plurality of video data objects having a different bit per pixel formats | |
US6067098A (en) | Video/graphics controller which performs pointer-based display list video refresh operation | |
US6567091B2 (en) | Video controller system with object display lists | |
US20020135585A1 (en) | Video controller system with screen caching | |
US7567261B2 (en) | System and method for providing graphics using graphical engine | |
CA2661678C (en) | Video multiviewer system using direct memory access (dma) registers and block ram | |
CN1713264A (zh) | 基于fpga的数字osd控制器 | |
JPH09245179A (ja) | コンピュータグラフィックス装置 | |
CN106339061A (zh) | 一种移动终端及其运行应用程序的方法 | |
US8717391B2 (en) | User interface pipe scalers with active regions | |
CN103379344A (zh) | 半导体设备、电子装置和图像处理方法 | |
CN112835730A (zh) | 图像存储、内存分配、图像合成方法、装置、设备及介质 | |
CN1873607A (zh) | 高速多画面多屏融合显示处理装置 | |
CN1147117A (zh) | 图像处理器和应用该处理器的数据处理系统 | |
CN111045623A (zh) | 一种多gpu拼接环境下图形命令的处理方法 | |
CN1514343A (zh) | 处理色差信号4:2:0平面图像数据格式存储器的系统与方法 | |
CN1236401C (zh) | 数据处理系统和方法、计算机程序和记录介质 | |
US6693644B1 (en) | Graphic accelerator reducing and processing graphics data | |
JP2004219759A (ja) | 画像表示処理方法、画像表示処理装置、画像表示装置および画像表示処理システム | |
KR20190005035A (ko) | 영상 처리 장치 및 상기 영상 처리 장치의 제어 방법 | |
CN2842931Y (zh) | 高速多画面多屏融合显示处理装置 | |
CN114721616A (zh) | 一种协同处理显示系统及方法 | |
CN102184070A (zh) | 一种硬件支持光标显示的方法及装置 | |
CN102368211A (zh) | 一种使用osd加速实现硬件鼠标的方法 | |
CN105072342A (zh) | 图像合成装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |