CN111986070A - 基于gpu的vdif格式数据异构并行编帧方法 - Google Patents
基于gpu的vdif格式数据异构并行编帧方法 Download PDFInfo
- Publication number
- CN111986070A CN111986070A CN202010663185.XA CN202010663185A CN111986070A CN 111986070 A CN111986070 A CN 111986070A CN 202010663185 A CN202010663185 A CN 202010663185A CN 111986070 A CN111986070 A CN 111986070A
- Authority
- CN
- China
- Prior art keywords
- data
- quantization
- frame
- thread
- channel
- 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
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Abstract
本发明公开了基于GPU的VDIF格式数据异构并行编帧方法,涉及通信技术领域。本发明充分利用图形处理单元(Graphic Process Unit,GPU)的高灵活性和高效并行数据处理能力,提出了基于GPU的符合VDIF规范的数据格式编帧方法,并分别设计了帧头计算过程、多通道单线程编帧模式和多通道多线程编帧模式。即主机通过图形处理器GPU以多通道方式接收输入数据,并获取输入参数,计算帧头参数,并计算输入数据的每秒帧数和每秒数据位数,并判断输入数据每秒内帧数是否为整数、以及每秒数据位数是否为完成量化位数的整数倍;若二者均为是,则根据需求,选择单通道单线程模式或者多通道单线程模式;分别执行单通道单数据线程流程和多通道单数据线程流程。
Description
技术领域
本发明涉及通信技术领域,具体涉及基于GPU的VDIF格式数据异构并行编帧方法。
背景技术
甚长基线干涉测量(Very Long Baseline Interferometry,VLBI)技术因其独具的超高空间分辨率和定位精度,使其在深空测控系统中得到广泛应用,而VLBI数据交换接口规范(VLBI Data Interchange Format,VDIF)是VLBI领域受到最广泛支持的数据格式,是国际VLBI联合观测数据交换的基础。
目前,深空测控网VLBI基带转换与记录系统是一套基于FPGA平台开发的VLBI数字后端(Digital Backend Equipment,DBE)系统,该系统从设计之初便同时支持VSI标准规范和RDEF规范。但随着系统功能的拓展,该系统需支持VDIF规范以应对VLBI联合观测需求的日益增加,而以FPGA为基础的数据编帧模块灵活性相对较为不足、开发调试门槛高、升级周期长、维护成本相对较高,给系统的在线升级改造带来了一定的困难,同时也较难满足系统复杂性的要求。为了提高系统的灵活性、扩展性和可重构性,同时提高系统运算效率,需要对系统编帧模块结构进行改进。
传统深空测控干涉测量基带转换器总体满足当前深空探测和大地测量的观测需求,在探月工程和大地测量中发挥了重要作用,但该系统未能支持VDIF格式规范,且系统架构采用FPGA编帧,升级改造难度大,结构重构困难。该系统与观测需求之间存在一定差距,主要体现在以下几个方面:
(1)基于FPGA的系统架构重构困难,升级难度大;
(2)未能支持VDIF数据交换格式;
(3)缺乏基于GPU的高效异构并行编帧方法。
目前尚未有利用图形处理单元(Graphic Process Unit,GPU)对VDIF格式数据编帧进行改进的方案。
发明内容
有鉴于此,本发明提供了基于GPU的VDIF格式数据异构并行编帧方法,充分利用图形处理单元(Graphic Process Unit,GPU)的高灵活性和高效并行数据处理能力,有效提高了编帧效率。
为达到上述目的,本发明的技术方案包括如下步骤:
步骤一、主机通过图形处理器GPU以多通道方式接收输入数据,并获取输入参数;所述所述输入数据的数据形式为信道化后的浮点数;所述输入参数包括量化位数nbits、带宽BW、通道数nchan、帧长frameL以及数据类型isCom。
根据所述输入参数计算过程参数,包括完成量化位数complete sample、数据采样率sampleRate以及每秒量化后字节数。
计算VDIF格式数据的帧头参数中的初始时标。
步骤二、计算输入数据的每秒帧数和每秒数据位数,并判断输入数据每秒内帧数是否为整数、以及每秒数据位数是否为完成量化位数的整数倍。
若二者均为是,则根据所述帧头参数依据VDIF规范数据帧帧头格式创建帧头,执行步骤三;否则结束本次编帧。
步骤三、根据需求,选择单通道单数据线程模式或者多通道单数据线程模式。
若选择单通道单数据线程模式,则执行如下流程S101~S105:
S101、主机控制GPU对多通道的输入数据进行缓存。
S102、主机控制GPU构建与通道数nchan相同数量的流stream,为量化编帧流,GPU将每个通道的输入数据对应分配给不同的量化编帧流stream,即每个量化编帧流控制一个数据线程datathread;此处数据线程表示来自同一个通道的数据序列。
S103、GPU中启动设定数量的线程并行执行量化编帧核函数,完成对对应通道的数据序列的逐点量化,每个数据点量化后为nbits位,其中线程的数量与输入数据中数据点数量相同。
将本步骤中数据点的量化结果拼接为字节,将字节合并成字,得到单通道单数据线程量化结果,量化完成。
量化完成后,按照帧长frameL将单通道单数据线程量化结果与帧头拼接,得到每个单通道单数据线程数据帧结果,所有单通道单数据线程数据帧结果为单通道单数据线程量化编帧结果。
S104、主机判断GPU的已输入数据是否全部量化完成;
若是,主机从GPU读取已输入数据的单通道单数据线程量化编帧结果,写入量化编帧结果文件,执行S105。
否则,根据剩余已输入数据更新帧头参数中的变量,得到新的帧头并返回S103。
其中VDIF格式数据的帧头参数中的变量,包括当前时刻的积秒、当前帧在当前秒内的帧序号以及当前数据线程datathread的序号。
S105、主机判断本次数据输入过程是否完成;若是,则结束本次编帧;否则,根据后续输入数据更新帧头参数中的变量,得到新的帧头,返回S103。
若选择多通道单数据线程模式,则执行如下流程S201~S205:
S201、主机控制GPU对多通道的输入数据进行缓存;
S202、主机根据通道数nchan控制GPU进行数据转置。
所述GPU根据所述通道数nchan,将输入数据初始的按通道行优先存储转置为按通道列优先存储,则输入数据经数据转置后,由并行的多路数据变为数据按列存储的二维数据矩阵。
S203、所述GPU针对所述二维数据矩阵针对性开辟二维CUDA线程块,二维CUDA线程块中的每个线程执行量化编帧核函数,一个线程对应完成对一个数据点的量化,每个数据点的量化结果为nbits位。
二维CUDA线程块中的所有线程执行完成后,按照所述完成量化位数completesample将本步骤中的数据点的量化结果拼接成字节,并按字节合并成字,得到多通道单数据线程量化结果,则量化完成。
量化完成后,按帧长frameL将多通道单数据线程量化结果与帧头拼接,得到每个多通道单数据线程数据帧结果,所有多通道单数据线程数据帧结果组成多通道单数据线程的量化编帧结果。
S204、主机判断GPU的已输入数据是否全部量化完成;若是,则从GPU读取已输入数据的并行量化结果,写入量化结果文件,执行S205;否则,则根据剩余已输入数据更新帧头参数的变量,得到新的帧头并返回S203。
S205、主机判断本次数据输入过程是否完成;若是,则结束本次编帧;否则,根据后续输入数据更新计算帧头参数,返回S203。
进一步地,步骤一中,所述VDIF格式数据的帧头参数中的初始时标包括:参考历元epoch以及根据所述参考历元epoch计算的当前时刻的积秒,计算VDIF格式数据的帧头参数中的初始时标的流程具体为:根据VDIF格式规范,首先根据当前时间计算当天的参考历元epoch,然后根据所述当天的参考历元epoch计算当前时刻的积秒,计算过程采用简化儒略历计算。
进一步地,步骤一中,完成量化位数complete sample和数据速率sampleRate以及每秒量化后字节数采用如下方式计算:
根据通道数nchan、量化位数nbits和数据类型isCom,其中当数据类型为复数时isCom=2,数据类型为实数时isCom=1;计算完成量化位数completesample。
complete sample=nchan×nbits×isCom。
根据带宽BW和数据类型isCom计算数据速率sampleRate。
sampleRate=BW×2/isCom。
帧长按照8字节整数倍取整,同时按照采样率、完成量化位数计算每秒量化后的字节数。
进一步地,根据量化位数nbits,构建量化数据表;所述量化数据表取值为0~2nbits-1;将量化数据表绑定纹理内存;则在所述S103中,GPU中启动设定数量的线程并行执行量化编帧核函数,完成对对应通道的数据序列的逐点量化时,在所述量化编帧核函数内,按照输入数据调用纹理拾取核函数;调用纹理拾取核函数,寻址方式为钳位寻址cudaAddressModeClamp,纹理拾取滤波模式选择取整量化cudaFilterModePoint。
进一步地,S103中,将本步骤中数据点的量化结果拼接为字节,将字节合并成字:所述CPU将本步骤中所有数据点的量化结果根据每秒帧数N分为N段,对应N帧数据,并为每一帧数据创建帧头;为每一段构建一个编帧流stream,所述编帧流stream用于对当前段内相邻数据点的量化结果进行拼接得到字节,所有字节按32位为单位合并写入32位字。
进一步地,根据量化位数nbits,构建量化数据表;所述量化数据表取值为0~2nbits-1;将量化数据表绑定纹理内存;则在所述S203中,二维CUDA线程块中的每个线程执行量化编帧核函数,一个线程完成对一个数据点的量化时,在所述量化编帧核函数内,按照输入数据调用纹理拾取核函数;调用纹理拾取核函数,寻址方式为钳位寻址cudaAddressModeClamp,纹理拾取滤波模式选择取整量化cudaFilterModePoint。
进一步地,S203中,所述按照所述完成量化位数complete sample将本步骤中的数据点的量化结果拼接成字节,并按字节合并成字,具体为:所述CPU将本步骤中所有数据点的量化结果根据每秒帧数N分为N段,并为每一帧数据创建帧头。为每一段构建一个编帧流stream,所述流stream用于执行当前段内数据点的量化结果的拼接,每相邻completesample/nbits个数据点的量化结果以最大32位为单位拼接写入32位字。
有益效果:
本发明提供了基于GPU的VDIF格式数据异构并行编帧方法,充分利用图形处理单元(Graphic Process Unit,GPU)的高灵活性和高效并行数据处理能力,提出了基于GPU的符合VDIF规范的数据格式编帧方法,并分别设计了帧头计算过程、多通道单数据线程编帧模式和单通道单数据线程编帧模式。为了实现编帧过程效率的优化,设计了基于纹理缓存查找表的数据量化方法和基于流式架构的多帧信号异步编帧方法,有效提高了编帧效率。本发明可有效降低基带转换器数据编帧模块开发难度;利用商用器件和软件运算可有效提高系统灵活性,可根据性能需求灵活配置GPU资源,克服现有技术不足。具有升级方便、重构灵活、可扩展性好等优势。
附图说明
图1为典型的干涉测量系统基带转换器系统结构示意图;
图2为本发明实施例提供的基于GPU的VDIF格式数据异构并行编帧方法流程图;
图3为本发明实施例中VDIF规范数据编帧流程框图;
图4为本发明实施例中VDIF规范数据帧头创建和更新流程框图;
图5为本发明实施例中数据倒换核函数原理框图;
图6为本发明实施例中2bit量化核函数原理图;
图7为本发明实施例中单通道单数据线程编帧流程图;
图8为本发明实施例中流式架构异步并行编帧算法流程。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
典型的干涉测量系统基带转换器系统结构如图1所示。基带转换器整体由数据预处理模块、并行信道化模块、数据格式化模块和IO模块组成。数据预处理模块和并行信道化是主要的信号处理模块,其主要作用是完成高速模拟信号的幅度调节、干扰抑制、AD转换、下变频、滤波和子带抽取,最终按照要求输出固定带宽的多路并行子通道信号。数据格式化模块主要功能是按照接口文件的要求,输出标准格式的数据,该模块是基带转换器和相关处理机沟通的桥梁,只有经过该模块严格格式化的数据才能最终通过IO模块送到数据处理中心进行进一步处理。
经过并行信道化模块的处理,原先串行的一路高速数据变为并行的多路低速数据,在数据速率大大降低的同时,数据的并行性大大提高,各通道之间数据完全独立,可充分利用GPU实现数据的并行化处理。
根据VDIF格式规范要求,多路并行的数据可选择多通道合并量化或者单通道单独量化,最终输出格式化的数据。由于各路数据之间互相独立,且同一通道内各数据之间也有独立性,因此可利用每个GPU线程处理一个数据点的量化,最终将量化结果合并为格式化文件。
基于上述原理,本发明提供的基于GPU的VDIF格式数据异构并行编帧方法如图2所示,包括如下内容:
步骤一、主机通过图形处理器GPU以多通道方式接收输入数据,并获取输入参数;所述所述输入数据的数据形式为信道化后的浮点数;所述输入参数包括量化位数nbits、带宽BW、通道数nchan、帧长frameL以及数据类型isCom。
根据所述输入参数计算过程参数,包括完成量化位数complete sample、数据采样率sampleRate以及每秒量化后字节数。
计算VDIF格式数据的帧头参数中的初始时标。
本步骤中,初始时标包括:参考历元epoch以及根据参考历元epoch计算的当前时刻的积秒,计算初始时标的流程具体为:
根据VDIF格式规范,首先根据当前时间计算当天的参考历元epoch,然后根据当天的参考历元epoch计算当前时刻的积秒,计算过程采用简化儒略历计算。
该步骤中,完成量化位数complete sample和数据速率sampleRate以及每秒量化后字节数采用如下方式计算:
根据通道数nchan、量化位数nbits和数据类型isCom计算完成量化位数completesample;
complete sample=nchan×nbits×isCom;
根据带宽BW和数据类型isCom计算数据速率sampleRate;
sampleRate=BW×2/isCom;
帧长按照8字节整数倍取整,同时按照采样率、完成量化位数计算每秒量化后的字节数。
步骤二、计算输入数据的每秒帧数和每秒数据位数,并判断输入数据每秒内帧数是否为整数、以及每秒数据位数是否为完成量化位数的整数倍。
每秒数据位数bisPerSec=complete sample×sampleRate。
每秒帧数的计算方式为:首先根据bisPerSec/8得到每秒字节数bytespersec,然后用frameL/bytespersec即得到每秒帧数。
若二者均为是,则根据所述帧头参数依据VDIF规范数据帧帧头格式创建帧头,执行步骤三;否则结束本次编帧。
如图4所示,步骤一中的输入参数为量化位数、带宽、通道数、帧长、数据类型。主机收到上述参数后,首先启动时标计算,根据VDIF格式规范,首先根据当前时间计算当天的参考历元epoch,然后根据epoch计算当前时刻的积秒,计算过程采用简化儒略历计算。时标计算完成后,根据通道数、量化位数和数类型计算完成量化位数complete sample,同时根据带宽、量化位数和数据类型计算数据速率sampleRate。最后,根据数据速率和完成量化位数计算量化后的数据量,并根据输入帧长参数对帧长按照8字节取整。按照采样率、完成量化位数计算完成后,该模块根据进行参数合法性判定,主要进行两项判定,一是每秒帧数是否为整数,二是每秒数据位数是否为完成量化位数的整数倍。至此帧头参数的计算和校验完成,根据VDIF规范数据帧帧头格式创建初始帧头,其中帧头VDIF格式数据的帧头参数中的变量,包括当前时刻的积秒、当前帧在当前秒内的帧序号以及当前数据线程datathread的序号。
初始帧头创建完成后,数据量化流程同时启动,按照量化的数据帧信息,帧头参数中的变量实时更新并循环写入数据帧,直到量化编帧流程结束。
步骤三、根据需求,选择单通道单数据线程模式或者多通道单数据线程模式;该需求根据用户指定,可以是用户输入的指令进行指定。
若选择单通道单数据线程模式,则执行如下流程S101~S105:
S101、主机控制GPU对多通道的输入数据进行缓存;
S102、主机控制GPU构建与通道数nchan相同数量的流stream,为量化编帧流,GPU将每个通道的输入数据对应分配给不同的量化编帧流stream,即每个量化编帧流控制一个数据线程datathread。单通道单数据线程的编帧流程如图7所示。
本发明中,数据线程表示来自同一个通道的数据序列。单通道单数据线程模式或者多通道单数据线程模式;此处数据线程表示拥有相同线程ID的数据帧序列。单通道单数据线程模式下一个数据线程即表示数据来自同一个通道的数据帧的序列;多通道单数据线程模式下一个数据线程表示数据来自多个通道且拥有相同线程ID的数据帧的序列。
S103、GPU中启动设定数量的线程并行执行量化编帧核函数,完成对对应通道的数据序列的逐点量化,每个数据点量化后为nbits位,其中线程的数量与输入数据中数据点数量相同。
将本步骤中数据点的量化结果拼接为字节,将字节合并成字,得到单通道单数据线程量化结果,量化完成。
量化完成后,输入数据由浮点数经过并行量化变为无符号的nbits位二进制量化数据。
量化完成后,按照帧长frameL将单通道单数据线程量化结果与帧头拼接,得到每个单通道单数据线程数据帧结果,所有单通道单数据线程数据帧结果为单通道单数据线程量化编帧结果。
其中,所有GPU线程并行执行,得到输入数据的并行单通道单数据线程量化编帧结果。
本步骤中,为了解决分支结构给量化过程带来的效率损失,采用基于纹理缓存的量化查找表代替分支结构,实现数据量化过程。纹理缓存是GPU全局内存上一块特殊的区域,该区域经过特别的硬件加速,能够按照输入索引输出对应的列表值,适用于实现高效的纹理查找表。
基于纹理缓存的量化查找表实现步骤如下:
1)根据量化位数nbits,构建量化数据表;
2)将量化数据表绑定纹理内存;
3)则在S103中,GPU中启动设定数量的线程并行执行量化编帧核函数,完成对对应通道的数据序列的逐点量化时,在所述量化编帧核函数内,按照输入数据调用纹理拾取核函数;调用纹理拾取核函数,寻址方式为钳位寻址cudaAddressModeClamp,纹理拾取滤波模式选择取整量化cudaFilterModePoint。
无论是多通道模式还是单通道模式,数据帧的写入均遵循帧内数据点并行量化,每帧数据串行循环处理的思路。虽然帧内数据的并行处理有效提高了数据并行性,但数据帧的串行处理并没有充分利用读入数据段的并行性。根据帧头参数设置,每一所要处理的帧数已经确定,且各帧之间数据完全独立。因此,可利用异步并行结构,在查找表量化环节之后,直接对量化后的数据分段异步并行编帧,这样可以进一步提高数据的并行性。然而,并行编帧之前,需要提前计算好各个数据帧头的参数。流式架构异步并行编帧算法框图如图8所示。
如图8所示,在步骤S103中,将本步骤中数据点的量化结果拼接为字节,将字节合并成字,具体为:所述CPU将本步骤中所有数据点的量化结果根据每秒帧数N分为N段,对应N帧数据,并为每一帧数据创建帧头;为每一段构建一个编帧流stream,所述编帧流stream用于对当前段内相邻数据点的量化结果进行拼接得到字节,所有字节按32位为单位合并写入32位字。
S104、主机判断GPU的已输入数据是否全部量化完成。
若是,主机从GPU读取已输入数据的单通道单数据线程量化编帧结果,写入量化编帧结果文件,执行S105。
否则,根据剩余已输入数据更新帧头参数中的变量,得到新的帧头并返回S103。
其中VDIF格式数据的帧头参数中的变量,包括当前时刻的积秒、当前帧在当前秒内的帧序号以及当前数据线程datathread的序号。
S105、主机判断本次数据输入过程是否完成。若是,则结束本次编帧;否则,根据后续输入数据根据后续输入数据更新帧头参数中的变量,得到新的帧头,返回S103。
若选择多通道单数据线程模式,则执行如下流程S201~S205:
S201、主机控制GPU对多通道的输入数据进行缓存。
S202、主机根据通道数nchan控制GPU进行数据转置。
GPU根据通道数nchan,将输入数据初始的按通道行优先存储转置为按通道列优先存储,则输入数据经数据转置后,由并行的多路数据变为数据按列存储的二维数据矩阵。
在多通道单数据线程模式下,为了实现数据存取操作的加速,需要将原来按通道行优先存储的数据变为按通道列优先存储,这样按行高效存取时就能直接获取一次采样的所有通道数据,使得存取效率大大提高。数据转置模块线程分配原理如图5所示。
S203、GPU针对二维数据矩阵针对性开辟二维CUDA线程块,二维CUDA线程块中的每个线程均执行量化编帧核函数,一个线程对应完成一个数据点的量化,每个数据点的量化结果为nbits位。
二维CUDA线程块中的所有线程执行完成后,按照所述完成量化位数completesample将本步骤中的数据点的量化结果拼接成字节,并按字节合并成字,得到多通道单数据线程量化结果,则量化完成。
量化完成后,按帧长frameL将多通道单数据线程量化结果与帧头拼接,得到每个多通道单数据线程数据帧结果,所有多通道单数据线程数据帧结果组成多通道单数据线程的量化编帧结果。
二维CUDA线程块中的所有线程执行完成后,得到本步骤中的输入数据的量化结果。此处以2bit量化为例,线程块的分配、数据量化流程如图6所示。线程网格分配按照512为基数循环加载,保证处理完所有的数据点。线程网格内,线程块分配为二维,第一维度线程数大于通道数并以32为单位增加,此处取32;第二维度代表需要处理的每通道数据点,设置线程数为256,并随着线程网格循环加载直到处理完所有数据。在量化阶段,每个线程负责处理一个数据点,首先执行位置判断确定其所处字节位置,然后执行量化判断选择量化结果,最终按顺序将相邻四个数据点合并为字节并编入帧结构。
本步骤中,为了解决分支结构给量化过程带来的效率损失,采用基于纹理缓存的量化查找表代替分支结构,实现数据量化过程。纹理缓存是GPU全局内存上一块特殊的区域,该区域经过特别的硬件加速,能够按照输入索引输出对应的列表值,适用于实现高效的纹理查找表。
即本步骤S203中,根据完成量化位数nbits,构建量化数据表;量化数据表取值为0~2nbits-1。将量化数据表绑定纹理内存;
则在本步骤S203中,二维CUDA线程块中的每个线程执行量化编帧核函数,一个线程完成对一个数据点的量化时,在量化编帧核函数内,按照输入数据调用纹理拾取核函数。调用纹理拾取核函数,寻址方式为钳位寻址cudaAddressModeClamp,纹理拾取滤波模式选择取整量化cudaFilterModePoint。
本步骤S203中,按照所述完成量化位数complete sample将本步骤中的数据点的量化结果拼接成字节,并按字节合并成字,具体为:
CPU将本步骤中所有数据点的量化结果根据每秒帧数N分为N段,并为每一帧数据创建帧头;为每一段构建一个编帧流stream,所述流stream用于执行当前段内数据点的量化结果的拼接,每相邻complete sample/nbits个数据点的量化结果以最大32位为单位拼接写入32位字。
S204、主机判断GPU的已输入数据是否全部量化完成。
若是,则从GPU读取已输入数据的并行量化结果,写入量化结果文件,执行S205。
否则,则根据剩余已输入数据更新计算帧头参数的变量,得到新的帧头并返回S203。
S205、主机判断本次数据输入过程是否完成;若是,则结束本次编帧;否则,根据后续输入数据更新计算帧头参数,返回S203。
图3所示为本发明实施例中VDIF规范数据编帧流程框图;
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.基于GPU的VDIF格式数据异构并行编帧方法,其特征在于,包括如下步骤:
步骤一、主机通过图形处理器GPU以多通道方式接收输入数据,并获取输入参数;所述所述输入数据的数据形式为信道化后的浮点数;所述输入参数包括量化位数nbits、带宽BW、通道数nchan、帧长frameL以及数据类型isCom;
根据所述输入参数计算过程参数,包括完成量化位数complete sample、数据采样率sampleRate以及每秒量化后字节数;
计算VDIF格式数据的帧头参数中的初始时标;
步骤二、计算输入数据的每秒帧数和每秒数据位数,并判断输入数据每秒内帧数是否为整数、以及每秒数据位数是否为完成量化位数的整数倍;
若二者均为是,则根据所述帧头参数依据VDIF规范数据帧帧头格式创建帧头,执行步骤三;否则结束本次编帧;
步骤三、根据需求,选择单通道单数据线程模式或者多通道单数据线程模式;
若选择单通道单数据线程模式,则执行如下流程S101~S105:
S101、主机控制GPU对多通道的输入数据进行缓存;
S102、主机控制GPU构建与通道数nchan相同数量的流stream,为量化编帧流,GPU将每个通道的输入数据对应分配给不同的量化编帧流stream,即每个量化编帧流控制一个数据线程datathread;此处数据线程表示来自同一个通道的数据序列;
S103、GPU中启动设定数量的线程并行执行量化编帧核函数,完成对对应通道的数据序列的逐点量化,每个数据点量化后为nbits位,其中线程的数量与输入数据中数据点数量相同;
将本步骤中数据点的量化结果拼接为字节,将字节合并成字,得到单通道单数据线程量化结果,量化完成;
量化完成后,按照帧长frameL将单通道单数据线程量化结果与帧头拼接,得到每个单通道单数据线程数据帧结果,所有单通道单数据线程数据帧结果为单通道单数据线程量化编帧结果;
S104、主机判断GPU的已输入数据是否全部量化完成;
若是,主机从GPU读取已输入数据的单通道单数据线程量化编帧结果,写入量化编帧结果文件,执行S105;
否则,根据剩余已输入数据更新帧头参数中的变量,得到新的帧头并返回S103;
其中VDIF格式数据的帧头参数中的变量,包括当前时刻的积秒、当前帧在当前秒内的帧序号以及当前数据线程datathread的序号;
S105、主机判断本次数据输入过程是否完成;若是,则结束本次编帧;否则,根据后续输入数据更新帧头参数中的变量,得到新的帧头,返回S103;
若选择多通道单数据线程模式,则执行如下流程S201~S205:
S201、主机控制GPU对多通道的输入数据进行缓存;
S202、主机根据通道数nchan控制GPU进行数据转置;
所述GPU根据所述通道数nchan,将输入数据初始的按通道行优先存储转置为按通道列优先存储,则输入数据经数据转置后,由并行的多路数据变为数据按列存储的二维数据矩阵;
S203、所述GPU针对所述二维数据矩阵针对性开辟二维CUDA线程块,二维CUDA线程块中的每个线程执行量化编帧核函数,一个线程对应完成对一个数据点的量化,每个数据点的量化结果为nbits位;
二维CUDA线程块中的所有线程执行完成后,按照所述完成量化位数complete sample将本步骤中的数据点的量化结果拼接成字节,并按字节合并成字,得到多通道单数据线程量化结果,则量化完成;
量化完成后,按帧长frameL将多通道单数据线程量化结果与帧头拼接,得到每个多通道单数据线程数据帧结果,所有多通道单数据线程数据帧结果组成多通道单数据线程的量化编帧结果;
S204、主机判断GPU的已输入数据是否全部量化完成;
若是,则从GPU读取已输入数据的并行量化结果,写入量化结果文件,执行S205;
否则,则根据剩余已输入数据更新帧头参数的变量,得到新的帧头并返回S203;
S205、主机判断本次数据输入过程是否完成;
若是,则结束本次编帧;
否则,根据后续输入数据更新计算帧头参数,返回S203。
2.如权利要求1所述的方法,其特征在于,步骤一中,所述VDIF格式数据的帧头参数中的初始时标包括:参考历元epoch以及根据所述参考历元epoch计算的当前时刻的积秒,计算VDIF格式数据的帧头参数中的初始时标的流程具体为:
根据VDIF格式规范,首先根据当前时间计算当天的参考历元epoch,然后根据所述当天的参考历元epoch计算当前时刻的积秒,计算过程采用简化儒略历计算。
3.如权利要求1所述的方法,其特征在于,步骤一中,完成量化位数complete sample和数据速率sampleRate以及每秒量化后字节数采用如下方式计算:
根据通道数nchan、量化位数nbits和数据类型isCom,其中当数据类型为复数时isCom=2,数据类型为实数时isCom=1;计算完成量化位数complete sample;
complete sample=nchan×nbits×isCom;
根据带宽BW和数据类型isCom计算数据速率sampleRate;
sampleRate=BW×2/isCom;
帧长按照8字节整数倍取整,同时按照采样率、完成量化位数计算每秒量化后的字节数。
4.如权利要求1所述的方法,其特征在于,根据量化位数nbits,构建量化数据表;所述量化数据表取值为0~2nbits-1;
将量化数据表绑定纹理内存;
则在所述S103中,GPU中启动设定数量的线程并行执行量化编帧核函数,完成对对应通道的数据序列的逐点量化时,在所述量化编帧核函数内,按照输入数据调用纹理拾取核函数;调用纹理拾取核函数,寻址方式为钳位寻址cudaAddressModeClamp,纹理拾取滤波模式选择取整量化cudaFilterModePoint。
5.如权利要求4所述的方法,其特征在于,所述S103中,将本步骤中数据点的量化结果拼接为字节,将字节合并成字:
所述CPU将本步骤中所有数据点的量化结果根据每秒帧数N分为N段,对应N帧数据,并为每一帧数据创建帧头;
为每一段构建一个编帧流stream,所述编帧流stream用于对当前段内相邻数据点的量化结果进行拼接得到字节,所有字节按32位为单位合并写入32位字。
6.如权利要求1所述的方法,其特征在于,根据量化位数nbits,构建量化数据表;所述量化数据表取值为0~2nbits-1;
将量化数据表绑定纹理内存;
则在所述S203中,二维CUDA线程块中的每个线程执行量化编帧核函数,一个线程完成对一个数据点的量化时,在所述量化编帧核函数内,按照输入数据调用纹理拾取核函数;调用纹理拾取核函数,寻址方式为钳位寻址cudaAddressModeClamp,纹理拾取滤波模式选择取整量化cudaFilterModePoint。
7.如权利要求6所述的方法,其特征在于,所述S203中,所述按照所述完成量化位数complete sample将本步骤中的数据点的量化结果拼接成字节,并按字节合并成字,具体为:
所述CPU将本步骤中所有数据点的量化结果根据每秒帧数N分为N段,并为每一帧数据创建帧头;
为每一段构建一个编帧流stream,所述流stream用于执行当前段内数据点的量化结果的拼接,每相邻complete sample/nbits个数据点的量化结果以最大32位为单位拼接写入32位字。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010663185.XA CN111986070B (zh) | 2020-07-10 | 2020-07-10 | 基于gpu的vdif格式数据异构并行编帧方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010663185.XA CN111986070B (zh) | 2020-07-10 | 2020-07-10 | 基于gpu的vdif格式数据异构并行编帧方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111986070A true CN111986070A (zh) | 2020-11-24 |
CN111986070B CN111986070B (zh) | 2021-04-06 |
Family
ID=73439043
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010663185.XA Active CN111986070B (zh) | 2020-07-10 | 2020-07-10 | 基于gpu的vdif格式数据异构并行编帧方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111986070B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112598566A (zh) * | 2020-12-25 | 2021-04-02 | 南方电网海南数字电网研究院有限公司 | 基于gpu的cuda的图像处理方法、装置和存储介质 |
CN115314109A (zh) * | 2022-04-12 | 2022-11-08 | 中国人民解放军战略支援部队航天工程大学 | 一种用fpga实现的多通道光纤传输 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1394325A (zh) * | 2000-09-01 | 2003-01-29 | 美国索尼电脑娱乐公司 | 与图形图象相互作用的用户输入设备和方法 |
JP2008259288A (ja) * | 2007-04-03 | 2008-10-23 | Kawasaki Microelectronics Kk | スイッチング電源装置 |
CN102395146A (zh) * | 2011-12-09 | 2012-03-28 | 中国科学院上海微系统与信息技术研究所 | 一种面向多目标点监测的无线传感网感知拓扑构建方法 |
CN105992008A (zh) * | 2016-03-30 | 2016-10-05 | 南京邮电大学 | 一种在多核处理器平台上的多层次多任务并行解码算法 |
CN106657855A (zh) * | 2016-12-16 | 2017-05-10 | 西北工业大学 | 一种适用于无人机spi接口视频码率控制方法 |
CN106744221A (zh) * | 2017-01-17 | 2017-05-31 | 江苏建筑职业技术学院 | 一种吊桶运行安全综合防护系统及其防护方法 |
CN106829675A (zh) * | 2017-01-17 | 2017-06-13 | 江苏建筑职业技术学院 | 基于吊桶运行安全综合防护系统的吊桶松绳故障检测方法 |
CN107202977A (zh) * | 2017-05-10 | 2017-09-26 | 湖北航天技术研究院总体设计所 | 一种基于vpx平台的综合处理系统及软件设计方法 |
CN107835343A (zh) * | 2017-11-20 | 2018-03-23 | 重庆交通职业学院 | 视频信号采集记录装置及远距离高清激光摄像机 |
CN108736749A (zh) * | 2017-04-13 | 2018-11-02 | 半导体组件工业公司 | 同步整流器控制器电路 |
CN110071639A (zh) * | 2018-01-23 | 2019-07-30 | 半导体组件工业公司 | 用于控制电源转换器的电路和方法 |
CN110337002A (zh) * | 2019-08-15 | 2019-10-15 | 南京邮电大学 | 一种在多核处理器平台上hevc多层次高效并行解码算法 |
-
2020
- 2020-07-10 CN CN202010663185.XA patent/CN111986070B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1394325A (zh) * | 2000-09-01 | 2003-01-29 | 美国索尼电脑娱乐公司 | 与图形图象相互作用的用户输入设备和方法 |
JP2008259288A (ja) * | 2007-04-03 | 2008-10-23 | Kawasaki Microelectronics Kk | スイッチング電源装置 |
CN102395146A (zh) * | 2011-12-09 | 2012-03-28 | 中国科学院上海微系统与信息技术研究所 | 一种面向多目标点监测的无线传感网感知拓扑构建方法 |
CN105992008A (zh) * | 2016-03-30 | 2016-10-05 | 南京邮电大学 | 一种在多核处理器平台上的多层次多任务并行解码算法 |
CN106657855A (zh) * | 2016-12-16 | 2017-05-10 | 西北工业大学 | 一种适用于无人机spi接口视频码率控制方法 |
CN106744221A (zh) * | 2017-01-17 | 2017-05-31 | 江苏建筑职业技术学院 | 一种吊桶运行安全综合防护系统及其防护方法 |
CN106829675A (zh) * | 2017-01-17 | 2017-06-13 | 江苏建筑职业技术学院 | 基于吊桶运行安全综合防护系统的吊桶松绳故障检测方法 |
CN108736749A (zh) * | 2017-04-13 | 2018-11-02 | 半导体组件工业公司 | 同步整流器控制器电路 |
CN107202977A (zh) * | 2017-05-10 | 2017-09-26 | 湖北航天技术研究院总体设计所 | 一种基于vpx平台的综合处理系统及软件设计方法 |
CN107835343A (zh) * | 2017-11-20 | 2018-03-23 | 重庆交通职业学院 | 视频信号采集记录装置及远距离高清激光摄像机 |
CN110071639A (zh) * | 2018-01-23 | 2019-07-30 | 半导体组件工业公司 | 用于控制电源转换器的电路和方法 |
CN110337002A (zh) * | 2019-08-15 | 2019-10-15 | 南京邮电大学 | 一种在多核处理器平台上hevc多层次高效并行解码算法 |
Non-Patent Citations (1)
Title |
---|
陈中 等: "VLBI软件相关处理机现状和发展趋势", 《天文学进展》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112598566A (zh) * | 2020-12-25 | 2021-04-02 | 南方电网海南数字电网研究院有限公司 | 基于gpu的cuda的图像处理方法、装置和存储介质 |
CN115314109A (zh) * | 2022-04-12 | 2022-11-08 | 中国人民解放军战略支援部队航天工程大学 | 一种用fpga实现的多通道光纤传输 |
CN115314109B (zh) * | 2022-04-12 | 2023-08-01 | 中国人民解放军战略支援部队航天工程大学 | 一种用fpga实现的多通道光纤传输 |
Also Published As
Publication number | Publication date |
---|---|
CN111986070B (zh) | 2021-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111986070B (zh) | 基于gpu的vdif格式数据异构并行编帧方法 | |
CN102301730B (zh) | 多路音视频传输和处理方法、装置及系统 | |
WO2019196475A1 (zh) | 全局匹配patch的获取方法及装置 | |
CN107907867B (zh) | 一种多工作模式的实时sar快视系统 | |
KR102499335B1 (ko) | 신경망 데이터 처리 장치, 방법 및 전자 장비 | |
CN102116783B (zh) | 一种波形显示方法 | |
CN111741232B (zh) | 基于双显卡nvlink提高超高清非编编辑性能的方法 | |
US20080266422A1 (en) | Image processing apparatus and camera system | |
KR101673233B1 (ko) | 트랜잭션 분할 장치 및 방법 | |
KR19980064056A (ko) | 오디오 복호화 장치 및 신호 처리 장치 | |
CN102075767B (zh) | 一种视频与音频自动同步的处理方法 | |
CN105245759A (zh) | 一种实现图像同步显示的方法及装置 | |
CN102664015A (zh) | 一种基于g726编码的多路音频实时编码软硬件方案 | |
US20150242996A1 (en) | Image processing apparatus and image processing method | |
CN107483868B (zh) | Vbo信号的处理方法、fpga及激光电视 | |
JP5354816B2 (ja) | N個のデータを入出力するhdc、および、その方法 | |
US11256515B2 (en) | Techniques for accelerating compaction | |
CN106653046A (zh) | 一种语音采集中回路消噪的装置及方法 | |
CN109874052B (zh) | 图像处理方法、装置、设备及系统 | |
KR102633455B1 (ko) | 멀티 채널 영상의 인코딩 장치 | |
CN117312201B (zh) | 一种数据传输方法、装置及加速器设备、主机和存储介质 | |
CN116610388B (zh) | 一种快速启动ADC和linux系统的方法及装置 | |
CN112866723B (zh) | 图像数据处理方法与系统 | |
KR101475029B1 (ko) | 윈도우 오에스(os) 기반의 디브이알(dvr) 시스템에서 메모리 프로세스 분산기술을 이용한 멀티채널 엔코딩 장치 | |
CN117812203A (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 |