CN111045623A - 一种多gpu拼接环境下图形命令的处理方法 - Google Patents

一种多gpu拼接环境下图形命令的处理方法 Download PDF

Info

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
Application number
CN201911147448.5A
Other languages
English (en)
Other versions
CN111045623B (zh
Inventor
任向隆
田泽
张骏
郑新建
韩立敏
王治
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian Aeronautics Computing Technique Research Institute of AVIC
Original Assignee
Xian Aeronautics Computing Technique Research Institute of AVIC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xian Aeronautics Computing Technique Research Institute of AVIC filed Critical Xian Aeronautics Computing Technique Research Institute of AVIC
Priority to CN201911147448.5A priority Critical patent/CN111045623B/zh
Publication of CN111045623A publication Critical patent/CN111045623A/zh
Application granted granted Critical
Publication of CN111045623B publication Critical patent/CN111045623B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1423Digital 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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厂商的多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
Figure RE-GDA0002380212880000091
表3
Figure RE-GDA0002380212880000092
对原图像处理单元流水线各功能模块进行改造,按照定义的“模块处理命令对照表”增加对分解出的多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均执行完毕时该命令执行完毕,主机驱动执行下一条命令。
CN201911147448.5A 2019-11-21 2019-11-21 一种多gpu拼接环境下图形命令的处理方法 Active CN111045623B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112328532A (zh) * 2020-11-02 2021-02-05 长沙景嘉微电子股份有限公司 多gpu通信的方法及装置、存储介质、电子装置

Citations (8)

* Cited by examiner, † Cited by third party
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 英特尔公司 用于在虚拟化执行环境中高效使用图形处理资源的方法和设备

Patent Citations (9)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
KR960012990B1 (ko) 비트 맵 영상 데이타를 블럭 전송하기 위한 퍼스널 컴퓨터 시스템 및 그 사용 방법
US5920326A (en) Caching and coherency control of multiple geometry accelerators in a computer graphics system
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控制器
CN102447900B (zh) 用于生成可变优先级多窗口图像的设备和方法
JPH09245179A (ja) コンピュータグラフィックス装置
CN106339061A (zh) 一种移动终端及其运行应用程序的方法
US8717391B2 (en) User interface pipe scalers with active regions
US20120127185A1 (en) System and method for an optimized on-the-fly table creation algorithm
CN103379344A (zh) 半导体设备、电子装置和图像处理方法
CN104281426A (zh) 一种图像显示方法及装置
CN1873607A (zh) 高速多画面多屏融合显示处理装置
CN111045623A (zh) 一种多gpu拼接环境下图形命令的处理方法
CN1514343A (zh) 处理色差信号4:2:0平面图像数据格式存储器的系统与方法
CN1147117A (zh) 图像处理器和应用该处理器的数据处理系统
CN101127847A (zh) 一种在屏显示的合成方法及合成装置
US6693644B1 (en) Graphic accelerator reducing and processing graphics data
CN1393000A (zh) 数据处理系统和方法、计算机程序和记录介质
US6771271B2 (en) Apparatus and method of processing image data
KR20190005035A (ko) 영상 처리 장치 및 상기 영상 처리 장치의 제어 방법

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