CN103218174A - 一种用于遥感图像的io双缓存交互多核处理方法 - Google Patents

一种用于遥感图像的io双缓存交互多核处理方法 Download PDF

Info

Publication number
CN103218174A
CN103218174A CN2013101087084A CN201310108708A CN103218174A CN 103218174 A CN103218174 A CN 103218174A CN 2013101087084 A CN2013101087084 A CN 2013101087084A CN 201310108708 A CN201310108708 A CN 201310108708A CN 103218174 A CN103218174 A CN 103218174A
Authority
CN
China
Prior art keywords
remote sensing
read
data
cache blocks
sensing image
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
CN2013101087084A
Other languages
English (en)
Other versions
CN103218174B (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.)
Space Star Technology Co Ltd
Original Assignee
Space Star Technology Co Ltd
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 Space Star Technology Co Ltd filed Critical Space Star Technology Co Ltd
Priority to CN201310108708.4A priority Critical patent/CN103218174B/zh
Publication of CN103218174A publication Critical patent/CN103218174A/zh
Application granted granted Critical
Publication of CN103218174B publication Critical patent/CN103218174B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Image Input (AREA)

Abstract

本发明公开了一种用于遥感图像的IO双缓存交互多核处理方法,首先依据处理系统CPU核心数量确定多核计算线程数量;针对不同的遥感图像处理算法确定不同的数据分块策略;然后启动各遥感图像处理计算线程,开始执行遥感图像处理算法,其间发出数据访问和输出请求;依据计算线程读取、写入数据请求,启动读、写数据线程,将图像数据按照既定的读分块策略依次读入缓存内存R1、R2中,将处理的结果数据依次写入写缓存W2、W1中;直至处理算法完成计算过程,停止数据读写访问时,再析构读写双缓存,结束读、写线程和各个计算线程。本发明提高了多核CPU的资源利用率,和磁盘IO访问的效率,解决了内存空间有限和海量遥感数据处理的矛盾。

Description

一种用于遥感图像的IO双缓存交互多核处理方法
技术领域
本发明涉及一种多核计算方法,尤其涉及一种用于遥感图像的IO双缓存交互多核处理方法,属于计算机遥感图像处理技术领域,用于遥感应用中高分全色、多光谱、高光谱和雷达等各种类型海量遥感影像的快速处理。
背景技术
针对海量遥感图像的处理过程往往会耗费用户大量的时间,虽然目前计算机硬件设备得到了长足的发展,但针对海量遥感图像的处理速度提升有限。可能的原因在于遥感图像处理算法底层数据驱动设计不足导致没有充分利用计算机的CPU计算资源和磁盘IO资源,存在过多的计算或IO访问的等待;或者是由于对遥感图像处理算法的数据处理顺序和遥感数据的存储方式不匹配,导致磁盘IO访问过多。因此为了提高遥感图像处理的效率,必须综合考虑特有的遥感图像处理算法和针对该算法优化的底层数据读写驱动和多核计算方法。
为了避免频繁读取、写入磁盘数据,传统的计算机遥感图像处理解决方法一种是首先将遥感图像整个的读入计算机内存当中,然后将经过各种处理生成的遥感数据同样暂存于内存,最后一并写入磁盘。随着计算机内存空间的不断增加,加上64位机对大内存的支持,以及高速固态硬盘的出现,这种方法的使用仍然较普遍,也使得人们对海量遥感图像处理算法的磁盘、内存缓冲设计并不太在意。另一种方法是将遥感图像按固定模式分块后分别读入内存中处理,然后再分块输出,俗称瓦片计算。这种方法在逻辑上比较简单,而且解决了内存限制和算法二次开发支持的问题,使软件可以处理超大遥感影像,并且支持众多遥感算法处理执行。一般商用遥感图像处理软件如ENVI、PCI和ERDAS均采用这种方法,但通过实验表明,这些软件并没有充分利用普通PC机的磁盘IO和CPU计算资源。
计算机硬件发展至今,特别是云计算、多核计算技术的发展,对于普通台式机而言,为了高效的利用计算资源,仍然需要突破磁盘、内存和CPU的IO性能不一致的障碍。而大多数工程化的遥感图像处理算法的运算速度的瓶颈仍然在磁盘数据的IO过低和内存大小受限上面,而并不仅仅在经过多核计算优化的CPU上。如何针对各种海量遥感图像处理算法对磁盘IO快速访问特点进行分类,并尽量减少CPU计算和IO访问的等待时间,实现各种遥感算法的多核快速计算处理,并且保证数据驱动算法底层封装后进行遥感算法二次开发时依然具有优良的可读性和便捷性,正是本发明重点解决的问题。
发明内容
本发明解决的技术问题是:克服现有技术的不足,提供一种用于遥感图像的IO双缓存交互多核处理方法,本发明提高了多核CPU的资源利用率,和磁盘IO访问的效率,解决了内存空间有限和海量遥感数据处理的矛盾,保证了图像处理算法二次开发后的代码的可读性,且满足底层多种处理模式下IO设计的封装性。
本发明的技术解决方案是:一种用于遥感图像的IO双缓存交互多核处理方法,其特征在于包含以下步骤:
(1)针对不同的遥感图像处理算法确定不同的数据分块策略,包括满行分块、满列分块、满波段分块和固定列宽分块策略;
(2)根据CPU数量确定遥感图像像素计算线程数量;
(3)程序控制启动所有遥感图像像素计算线程,各个遥感图像像素计算线程在读写首个遥感图像像素时发出读、写遥感图像请求,其中一个CPU根据读、写遥感图像请求程序控制开启读磁盘线程和写磁盘线程分别向读缓存区和写缓存器发出数据读取和数据写入请求;
(4)读缓存区根据接收到的数据读取请求,按照步骤(1)确定的数据分块策略将硬盘空间存储的遥感图像数据依次存入读缓存块R1、R2中;各个遥感图像像素计算线程首先读取读缓存块R1中的遥感图像数据,当所有遥感图像像素计算线程读取的遥感图像数据不在读缓存块R1中时,转入读取读缓存块R2中的遥感图像数据,读缓存块R1执行读磁盘空间遥感图像数据操作,当所有遥感图像像素计算线程读取的遥感图像数据不在读缓存块R2中时,转入读取读缓存块R1中的遥感图像数据,读缓存块R2执行读磁盘空间遥感图像数据操作;
(5)各个遥感图像像素计算线程按照交错计算算法顺序处理从读缓存区中读取的遥感图像数据;
(6)写缓存区根据接收到的数据写入请求,将所有遥感图像像素计算线程的处理结果首先写入写缓存块W2中,当写缓存块W2中写满处理后的遥感图像数据时,所有遥感图像像素计算线程的处理结果写入写缓存块W1中,同时将写缓存块W2中写满的遥感图像数据写入磁盘空间,当写缓存块W1中写满处理后的遥感图像数据时,所有遥感图像像素计算线程的处理结果写入写缓存块W2中,同时将写缓存块W1中写满的遥感图像数据写入磁盘空间;
(7)当所有遥感图像像素计算线程处理完所有遥感图像数据,停止读磁盘线程和写磁盘线程,结束所有遥感图像像素计算线程,完成遥感图像的IO双缓存交互多核处理。
所述步骤(5)交错计算算法的实现方法为:
(a)各遥感图像像素计算线程依据自己的线程编号从图像首行或首列数据开始处理,每个遥感图像像素计算线程处理的数据按行或列交错分布,依据行或列的编号顺序处理;
(b)当某个遥感图像像素计算线程处理遥感图像数据时发现所要读取的遥感图像数据不在读缓存块R1时,向读磁盘线程发出更换读缓存块数据的请求,并等待,当所有遥感图像像素计算线程均发出更换读缓存块请求时,遥感图像像素计算线程开始读取读缓存块R2中的遥感图像数据;读磁盘线程响应遥感图像像素计算线程的更换读缓存块请求,加载新遥感图像数据至读缓存块R1,然后交换读缓存块R1、R2的指针位置;
(c)重复步骤(b)的操作直到从读缓存区中读取出所有的遥感图像数据。
本发明与现有技术相比的有益效果在于:
(1)本发明将底层IO读写从运算线程中剥离,用独立线程实现快速读、写遥感图像数据,并与各个计算线程协调配合,底层IO独立线程与运算主线程同步运行,保证了主计算线程中算法的执行效率,提高了多核CPU的资源利用率。
(2)依据各种遥感算法处理图像数据的顺序,用不同数据分块的方式执行不同的图像处理算法,包括满行、满列、满波段和固定列宽分块等。
(3)读数据和写数据缓冲区采用双缓存独立线程执行,与计算线程同步,一方面节省磁盘数据加载至内存所耗费的时间,另一方面可以保证读写缓存可以在用户限定的大小内开辟,提高了磁盘IO访问的效率。
(4)数据多核计算处理过程采用数据行交叉寻址处理方法实现,既保证了各个计算线程数据读取、写入时IO同步操作,又保证了上层算法二次开发用户代码编写的便捷性,同时实现多核计算,保证了图像处理算法二次开发后的代码的可读性,且满足底层多种处理模式下IO设计的封装性。
附图说明
图1为本发明的实现原理图;
图2为本发明基于满行的图像分块设计图;
图3为本发明基于满列的图像分块设计图;
图4为本发明基于固定列宽的图像分块设计图;
图5为本发明基于满波段的图像分块设计图;
图6为本发明中磁盘IO读线程执行流程图;
图7为本发明像素计算线程执行图像数据读入流程逻辑图;
图8为本发明中磁盘IO写线程执行流程图;
图9为本发明像素计算线程执行图像数据写出流程逻辑图;
图10为本发明多像素计算线程分行交错多核计算原理图。
具体实施方式
下面结合附图对本发明的具体实施方式进行进一步的详细描述:
如图1所示,本发明的实现原理是:
(1)PC机内存临时存放遥感数据的缓存块空间,首先依据处理系统CPU核心数量确定多核计算线程数量,针对不同的遥感图像处理算法确定不同的数据分块策略,包括满行分块、满列分块、满波段分块和固定列宽分块策略;
(2)程序控制启动所有遥感图像像素计算线程,各个遥感图像像素计算线程在读写首个遥感图像像素时发出读、写遥感图像请求,其中一个CPU根据读、写遥感图像请求程序控制开启读磁盘线程和写磁盘线程分别向读缓存区和写缓存器发出数据读取和数据写入请求;
(3)读缓存区根据接收到的数据读取请求,按照步骤(1)确定的数据分块策略将硬盘空间存储的遥感图像数据依次存入读缓存块R1、R2中;各个遥感图像像素计算线程首先读取读缓存块R1中的遥感图像数据,当所有遥感图像像素计算线程读取的遥感图像数据不在读缓存块R1中时,转入读取读缓存块R2中的遥感图像数据,读缓存块R1执行读磁盘空间遥感图像数据操作,当所有遥感图像像素计算线程读取的遥感图像数据不在读缓存块R2中时,转入读取读缓存块R1中的遥感图像数据,读缓存块R2执行读磁盘空间遥感图像数据操作;
(4)各个遥感图像像素计算线程按照交错计算算法顺序处理从读缓存区中读取的遥感图像数据;
(5)写缓存区根据接收到的数据写入请求,将所有遥感图像像素计算线程的处理结果首先写入写缓存块W2中,当写缓存块W2中写满处理后的遥感图像数据时,所有遥感图像像素计算线程的处理结果写入写缓存块W1中,同时将写缓存块W2中写满的遥感图像数据写入磁盘空间,当写缓存块W1中写满处理后的遥感图像数据时,所有遥感图像像素计算线程的处理结果写入写缓存块W2中,同时将写缓存块W1中写满的遥感图像数据写入磁盘空间;
(6)当所有遥感图像像素计算线程处理完所有遥感图像数据,停止读磁盘线程和写磁盘线程,结束所有遥感图像像素计算线程。
由于计算机内存大小的限制,必须先对遥感数据实施分块读取。针对待处理遥感图像的存储方式和处理方法类型,确定遥感数据读取和写出的分块策略,包括满行分块、满列分块、固定列宽分块和多波段分块策略。其中这里采用图像存储方式均为BSQ(Band Sequential Format)方式,即先按行序号存储每波段每行的数据,再按波段顺序存储。现分述如下:
1、遥感图像满行分块读写设计:
本分块策略主要适用于需要按图像行顺序读取数据进行处理的遥感算法,例如:图像线性拉伸,图像增强,图像卷积滤波,图像镶嵌等。由于每次下一块预读和预写出数据可以预知,满行分块模式可采用读写双缓存交互的多线程方式实现。本发明采用的分块数据大小计算方法如下:假设用户设定固定缓冲内存总字节数为BufferSize,为设置读写双缓存,则每个缓存块在内存中最多可分配字节数为BufferSize/4,设待处理遥感图像大小为B波段,H行,W列,每个像素字节数为T。依设计要求,每次读入、写入缓存块的数据在原图像上宽度固定(满行),高度可变,如图2所示。每一个数据块宽度BlockWidth为原始图像的宽度W,数据块高度为:
Figure BDA00002991030500071
图像每个波段被分的块数为:其中「表示上取整,」表示下取整。每个波段第i个数据块在图像中左上角起始像素坐标为: ( x , y ) = ( 0 , i &CenterDot; BlockHeight ) , ( 0 &le; i < M ) ( ( 0 , H - ( i - 1 ) &CenterDot; BlockHeight ) , ( i = M ) .
2、遥感图像满列分块读写设计:
本分块策略主要适用于需按列顺序处理数据的遥感算法,例如:相对辐射校正、影像90°旋转等。这里每次下一块预读和预写出数据可以预知,满列分块模式可采用读写多线程的方式实现。本发明采用的分块数据大小计算方法如下:按满列分块的思想是:变量定义同上。依设计要求,每次读入、写入缓存块的数据在原图像上高度固定(满列),宽度可变,如图3所示。每一个分块数据块高度BlockHeight为原始图像的宽度H,数据块宽度为:
Figure BDA00002991030500081
图像每个波段被分割的块数为:图像每个波段第i个数据块在图像中左上角起始像素坐标为: ( x , y ) = ( i &CenterDot; BlockWidth , 0 ) , ( 0 &le; i < M ) ( ( H - ( i - 1 ) &CenterDot; BlockWidth , 0 ) , ( i = M ) .
3、遥感图像固定列宽分块设计:
本分块策略适用于需按块无序读取数据进行处理的遥感算法,例如:几何校正、影像任意角度旋转、图像轮廓跟踪、目标形状识别等。由于这些遥感算法在执行过程中处理的下一块数据无法很难预知,因此设计该分块策略来满足这类遥感算法高效读写数据的需要。固定列宽的分块模式不采用读写双缓存多线程的方式实现。
固定列宽模式分块模式需考虑缓存区的限制,还需考虑遥感算法在读取数据的随机性。因此在缓存块中存放的图像数据块较多,不再是双缓存,而是依据缓存区大小设定一系列数据块。一个读(写)缓存区连续存放多个图像块,直至塞满缓存区为止。缓存中可存放图像数据块数量与块的宽高大小相关。本发明采用的缓存区存放数据块数量计算方法如下:用户给定图像分块的固定宽度BlockWidth和固定高度BlockHeight,为了方便内存管理,一般设定BlockWidth=BlockHeight,且为2的整数次幂,如256、512等。基于固定宽度和高度的内存块对图像数据进行提取和处理。如图4所示,缓存中可存放的图像块数量K为:
Figure BDA00002991030500084
4、遥感图像满波段满行分块设计:
本分块策略主要适用于需要按波段顺序读取数据的遥感算法,例如:图像监督、非监督分类、目标探测、光谱分析等。这些遥感算法均需要在一次读写某个像素的所有波段数据,因此图像分块的设计思想是:一个图像块中先依次存储像素各波段数据,再按行次序存储。本分块方法可采用IO双缓存交互方式执行遥感算法,图像分块方法如图5所示。图像被分割的块数为:
Figure BDA00002991030500091
变量定义同上,其他参数计算方法与(1)满行分块读写设计类似。
程序控制启动所有遥感图像像素计算线程,各个遥感图像像素计算线程在读写首个遥感图像像素时发出读、写遥感图像请求,针对缓存中的数据进行多核计算处理,其中一个CPU根据读、写遥感图像请求程序控制开启读磁盘线程和写磁盘线程分别向读缓存区和写缓存器发出数据读取和数据写入请求。多线程IO引擎是建立在和图像处理计算线程并行的基础上的,具备一定数据预读能力。采用双缓存交替机制,使图像处理算法读写图像过程不占用图像处理算法线程执行时间,从而节省IO响应时间。
启动读磁盘线程,依据像素计算线程数据访问请求,将遥感图像数据按照既定的读分块策略(满行分块、满列分块、固定列宽分块和多波段分块策略)依次读入缓存块R1、R2中;当所有像素计算线程请求读取的遥感图像数据不在当前读缓存块R1中时,将预读的读缓存块R2供各个遥感图像像素计算线程访问,将置换的缓存R1执行预读磁盘数据操作,同时交换读双缓存块R1、R2功能指针位置。其基本原理是:设置两块读数据缓存块,读磁盘线程首先将两块缓存块数据全部加载,当像素计算线程处理完一个缓存块R1数据时,提示读磁盘线程加载新的遥感图像数据到该缓存块R1内,而此时遥感图像像素计算线程不用等待直接继续读取缓存块R2中的遥感图像数据,如此交替执行,像素计算线程不再因为IO操作时间耽误计算的执行。
如图6、7分别说明了执行磁盘IO读线程流程和像素计算线程执行图像数据读入流程逻辑。读磁盘线程启动后,反复判断计算线程都是否发出加载新数据请求;一旦发出,则依据数据块编号计算数据块在图像中的坐标范围,依范围从磁盘加载数据至读缓存块R2中,结束本次请求响应;再判断是否图像读取到最后一块,若是则结束读线程,否则等待下一次计算线程的请求发出。像素计算线程启动后,在读数据时,首先判断数据是否在一级缓存R1中,若是则直接读R1数据用于计算;否则是否在二级缓存R2中,若是则交换R1、R2功能指针位置,发出加载新数据请求,读取R1中数据;若不在R1和R2中,则先判断读线程是否开启,已经开启则等待读线程处理一段时间(5MS)后继续判断数据是否在R1中。
启动写磁盘线程,依据CPU发出的写数据请求,将像素计算线程的处理结果按照既定的写分块策略依次写入磁盘;当计算线程请求写出的数据塞满前写缓存块中时,写数据线程开始交换写双缓存位置,将提前完成写磁盘任务的写缓存数据提供给计算线程写出。与数据读入算法逻辑不同,由于一般的遥感图像处理算法都是按照输出图像的行(列)排列顺序输出,即输出为BSQ格式。因此只需要一个缓存空间存放即将写出的数据即可,这个缓存可以反复清空再利用,但如果不使用缓存空间将每个像素直接写入磁盘,磁盘写访问效率将会非常低,这样做既限制了数据写出时内存占用,也保证了磁盘写访问的效率。
在多线程IO模式支持下。与数据读入算法逻辑不同,由于一般的遥感图像处理算法都是按照输出图像的行列排列顺序输出,比较容易预测下一块数据的存储位置;即使无法预测,可先记录位置信息,集中一并输出。因此采用多线程的方式执行,让处理后的遥感图像数据写出至缓存块W2、缓存数据W1写出至磁盘同步执行。
如图8、9分别说明了写线程流程和写数据算法逻辑。其中写线程逻辑开始的条件是写线程被像素计算线程创建,然后如图8中描述的逻辑循环执行流程,实现写线程与像素计算线程的并行执行,从而实现在遥感图像处理过程中一边执行像素计算,一边将计算好的像素数据一并写出磁盘两个事件并行的功能。考虑到IO两个线程中的读写磁盘操作存在互斥性,在快速处理方法执行过程中,保证读、写磁盘操作不同时进行。
各个计算线程根据算法需求和CPU核心数量,分行(列)交错处理遥感数据,具体分行(列)交错方式如图10所示,其中c(core)表示CPU的核心数量或计算线程数量,H表示图像的总行数。不同颜色的横条表示图像中每一行待处理数据,每个线程通过数据行寻址完成自己该处理的数据。本发明采用的数据寻址方式如下:c个计算线程同时计算,每个计算线程分别处理每块缓存数据的一部分。其中第i个像素计算线程处理图像某个波段的总行数Hi为:该线程处理对应行号Kj分别为:
Figure BDA00002991030500112
其中以上变量均为正整数。
交错分配每个像素计算线程处理的数据,达到计算量的平均分配,并实现各个计算线程提出读写磁盘数据块请求时间的同步,保证IO双缓存在功能交换的时候不会过多影响每个计算线程的执行效率。
相较于将缓存块中的数据直接切块分给各计算线程处理的方法,这样设计的好处是各像素计算线程再不用得知每个缓存块中自己需要处理多少行。因此,用户对缓存块大小的调整不会影响像素计算线程执行方式。每个线程只需要在缺少数据时发出请求,并等待读写线程响应即可。大大提高了二次开发的遥感算法代码编写的可读性。
当所有计算线程请求读取的数据不在当前读缓存块R1中时,将预读的读缓存数据R2供计算线程访问,将置换的缓存R1执行预读磁盘数据操作,同时交换读双缓存R1、R2功能指针位置;当所有计算线程请求写出的数据不在当前写缓存块W2中时,将预先完成写出磁盘操作的缓存块W1供计算线程写出,将置换的缓存W2执行写出磁盘数据操作,同时交换写双缓存W1、W2功能指针位置;整个处理算法完成时,停止数据读、写访问,析构读写双缓存,结束读、写和各个计算线程。
本发明通过底层动态库封装实现相应功能,已经用C++代码完成实现。封装类名称为HAPBEGThread。具体做遥感算法二次开发时,流程如下:
(1)首先创建m_ImgIO对象,负责图像IO的访问;然后设置图像IO输入图像指针和选取区域,用对象DIMS表示;
(2)准备遥感图像处理参数,调用PreparePara(),这里只负责读取数据,可计算图像均值、标准差、直方图、信息熵等参数;用m_ImgIO对象read(i,j,k)成员函数负责读数据。
(3)设置输出图像文件头m_header,设置输出图像指针和文件路径名;
(4)调用模板图像处理函数Process<TT>(),其中用到m_ImgIO对象read()、write()成员函数负责读、写数据。
(5)关闭输入输出图像IO引擎,删除m_ImgIO对象指针,结束遥感图像快速处理算法。
其中经过底层驱动封装设计后,遥感图像处理算法二次开发代码如下(C++)代码示例:
Figure BDA00002991030500121
Figure BDA00002991030500131
其中Fun()表示像素处理函数。这里Read()函数调用时只能够返回数据地址,如需获取具体数值必需做数据地址类型转换——*(TT*)。由代码可见,采用本发明实现的底层数据驱动二次开发遥感算法,代码清晰易读,不用再过多考虑多核计算,内存限制,磁盘IO效率等问题,却可直接达到算法高效执行的目的。
本发明未详细描述内容为本领域技术人员公知技术。

Claims (2)

1.一种用于遥感图像的IO双缓存交互多核处理方法,其特征在于包含以下步骤:
(1)针对不同的遥感图像处理算法确定不同的数据分块策略,包括满行分块、满列分块、满波段分块和固定列宽分块策略;
(2)根据CPU数量确定遥感图像像素计算线程数量;
(3)程序控制启动所有遥感图像像素计算线程,各个遥感图像像素计算线程在读写首个遥感图像像素时发出读、写遥感图像请求,其中一个CPU根据读、写遥感图像请求程序控制开启读磁盘线程和写磁盘线程分别向读缓存区和写缓存器发出数据读取和数据写入请求;
(4)读缓存区根据接收到的数据读取请求,按照步骤(1)确定的数据分块策略将硬盘空间存储的遥感图像数据依次存入读缓存块R1、R2中;各个遥感图像像素计算线程首先读取读缓存块R1中的遥感图像数据,当所有遥感图像像素计算线程读取的遥感图像数据不在读缓存块R1中时,转入读取读缓存块R2中的遥感图像数据,读缓存块R1执行读磁盘空间遥感图像数据操作,当所有遥感图像像素计算线程读取的遥感图像数据不在读缓存块R2中时,转入读取读缓存块R1中的遥感图像数据,读缓存块R2执行读磁盘空间遥感图像数据操作;
(5)各个遥感图像像素计算线程按照交错计算算法顺序处理从读缓存区中读取的遥感图像数据;
(6)写缓存区根据接收到的数据写入请求,将所有遥感图像像素计算线程的处理结果首先写入写缓存块W2中,当写缓存块W2中写满处理后的遥感图像数据时,所有遥感图像像素计算线程的处理结果写入写缓存块W1中,同时将写缓存块W2中写满的遥感图像数据写入磁盘空间,当写缓存块W1中写满处理后的遥感图像数据时,所有遥感图像像素计算线程的处理结果写入写缓存块W2中,同时将写缓存块W1中写满的遥感图像数据写入磁盘空间;
(7)当所有遥感图像像素计算线程处理完所有遥感图像数据,停止读磁盘线程和写磁盘线程,结束所有遥感图像像素计算线程,完成遥感图像的IO双缓存交互多核处理。
2.如权利要求1中所述的一种用于遥感图像的IO双缓存交互多核处理方法,其特征在于:所述步骤(5)交错计算算法的实现方法为:
(a)各遥感图像像素计算线程依据自己的线程编号从图像首行或首列数据开始处理,每个遥感图像像素计算线程处理的数据按行或列交错分布,依据行或列的编号顺序处理;
(b)当某个遥感图像像素计算线程处理遥感图像数据时发现所要读取的遥感图像数据不在读缓存块R1时,向读磁盘线程发出更换读缓存块数据的请求,并等待,当所有遥感图像像素计算线程均发出更换读缓存块请求时,遥感图像像素计算线程开始读取读缓存块R2中的遥感图像数据;读磁盘线程响应遥感图像像素计算线程的更换读缓存块请求,加载新遥感图像数据至读缓存块R1,然后交换读缓存块R1、R2的指针位置;
(c)重复步骤(b)的操作直到从读缓存区中读取出所有的遥感图像数据。
CN201310108708.4A 2013-03-29 2013-03-29 一种用于遥感图像的io双缓存交互多核处理方法 Active CN103218174B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310108708.4A CN103218174B (zh) 2013-03-29 2013-03-29 一种用于遥感图像的io双缓存交互多核处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310108708.4A CN103218174B (zh) 2013-03-29 2013-03-29 一种用于遥感图像的io双缓存交互多核处理方法

Publications (2)

Publication Number Publication Date
CN103218174A true CN103218174A (zh) 2013-07-24
CN103218174B CN103218174B (zh) 2015-11-25

Family

ID=48816028

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310108708.4A Active CN103218174B (zh) 2013-03-29 2013-03-29 一种用于遥感图像的io双缓存交互多核处理方法

Country Status (1)

Country Link
CN (1) CN103218174B (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104424123A (zh) * 2013-09-10 2015-03-18 中国石油化工股份有限公司 一种无锁数据缓冲区及其使用方法
CN104731533A (zh) * 2015-03-31 2015-06-24 百度在线网络技术(北京)有限公司 数据写入方法和装置
CN104899099A (zh) * 2015-05-26 2015-09-09 北京金和网络股份有限公司 一种基于线程池的任务分配方法
CN105045726A (zh) * 2015-08-10 2015-11-11 Tcl集团股份有限公司 一种基于并行计算的图片操作方法及系统
CN105321192A (zh) * 2014-07-31 2016-02-10 惠州市德赛西威汽车电子股份有限公司 一种车载娱乐系统可变长度和宽度的背景的绘制方法
CN106126359A (zh) * 2016-08-25 2016-11-16 成都交大光芒科技股份有限公司 进程间共享数据的快速传输方法
CN107767324A (zh) * 2017-10-24 2018-03-06 中国科学院电子学研究所苏州研究院 一种大型遥感图像快速缓存方法
WO2019205443A1 (zh) * 2018-04-27 2019-10-31 江苏华存电子科技有限公司 一种有效利用内存带宽的方法
CN111506261A (zh) * 2020-03-24 2020-08-07 平安国际智慧城市科技股份有限公司 基于双缓存区的缓存方法、装置、设备及存储介质
CN111813642A (zh) * 2020-07-06 2020-10-23 成都深思科技有限公司 基于多线程的网络通讯会话数据统计运算方法
CN112233011A (zh) * 2020-10-22 2021-01-15 中国科学院空天信息创新研究院 一种遥感图像的内存组织与处理方法及装置
CN112287702A (zh) * 2020-05-19 2021-01-29 珠海市杰理科技股份有限公司 无外部存储器的扫码方法、装置、扫描设备和移动终端
CN113281270A (zh) * 2021-04-26 2021-08-20 中国自然资源航空物探遥感中心 一种高光谱波段选择方法、装置、设备及存储介质
CN113641306A (zh) * 2021-07-28 2021-11-12 通号城市轨道交通技术有限公司 车载ato与车载atp的数据交互方法及装置
CN114237500A (zh) * 2021-12-09 2022-03-25 北京美信时代科技有限公司 一种通过缓存事务提高写入效率的方法及系统
CN114490092A (zh) * 2022-04-06 2022-05-13 北京中科慧眼科技有限公司 基于机器视觉算法的软件系统及构建方法
WO2022115996A1 (zh) * 2020-12-01 2022-06-09 华为技术有限公司 图像处理方法及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1959717A (zh) * 2006-10-09 2007-05-09 北京道达天际软件技术有限公司 订单驱动的海量遥感数据集群化预处理系统及其方法
CN101650820A (zh) * 2009-09-24 2010-02-17 浙江大学 基于多核架构的大图像实时浏览方法
CN102184397A (zh) * 2011-04-25 2011-09-14 中国测绘科学研究院 遥感影像的快速正射纠正方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1959717A (zh) * 2006-10-09 2007-05-09 北京道达天际软件技术有限公司 订单驱动的海量遥感数据集群化预处理系统及其方法
CN101650820A (zh) * 2009-09-24 2010-02-17 浙江大学 基于多核架构的大图像实时浏览方法
CN102184397A (zh) * 2011-04-25 2011-09-14 中国测绘科学研究院 遥感影像的快速正射纠正方法

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104424123A (zh) * 2013-09-10 2015-03-18 中国石油化工股份有限公司 一种无锁数据缓冲区及其使用方法
CN105321192A (zh) * 2014-07-31 2016-02-10 惠州市德赛西威汽车电子股份有限公司 一种车载娱乐系统可变长度和宽度的背景的绘制方法
CN105321192B (zh) * 2014-07-31 2018-07-06 惠州市德赛西威汽车电子股份有限公司 一种车载娱乐系统可变长度和宽度的背景的绘制方法
CN104731533B (zh) * 2015-03-31 2018-06-05 百度在线网络技术(北京)有限公司 数据写入方法和装置
CN104731533A (zh) * 2015-03-31 2015-06-24 百度在线网络技术(北京)有限公司 数据写入方法和装置
CN104899099A (zh) * 2015-05-26 2015-09-09 北京金和网络股份有限公司 一种基于线程池的任务分配方法
CN105045726B (zh) * 2015-08-10 2019-10-11 Tcl集团股份有限公司 一种基于并行计算的图片操作方法及系统
CN105045726A (zh) * 2015-08-10 2015-11-11 Tcl集团股份有限公司 一种基于并行计算的图片操作方法及系统
CN106126359A (zh) * 2016-08-25 2016-11-16 成都交大光芒科技股份有限公司 进程间共享数据的快速传输方法
CN106126359B (zh) * 2016-08-25 2019-10-18 成都交大光芒科技股份有限公司 进程间共享数据的快速传输方法
CN107767324A (zh) * 2017-10-24 2018-03-06 中国科学院电子学研究所苏州研究院 一种大型遥感图像快速缓存方法
CN107767324B (zh) * 2017-10-24 2020-11-06 中国科学院电子学研究所苏州研究院 一种大型遥感图像快速缓存方法
WO2019205443A1 (zh) * 2018-04-27 2019-10-31 江苏华存电子科技有限公司 一种有效利用内存带宽的方法
CN111506261A (zh) * 2020-03-24 2020-08-07 平安国际智慧城市科技股份有限公司 基于双缓存区的缓存方法、装置、设备及存储介质
CN111506261B (zh) * 2020-03-24 2024-05-03 平安国际智慧城市科技股份有限公司 基于双缓存区的缓存方法、装置、设备及存储介质
CN112287702B (zh) * 2020-05-19 2023-03-14 珠海市杰理科技股份有限公司 无外部存储器的扫码方法、装置、扫描设备和移动终端
CN112287702A (zh) * 2020-05-19 2021-01-29 珠海市杰理科技股份有限公司 无外部存储器的扫码方法、装置、扫描设备和移动终端
CN111813642A (zh) * 2020-07-06 2020-10-23 成都深思科技有限公司 基于多线程的网络通讯会话数据统计运算方法
CN112233011A (zh) * 2020-10-22 2021-01-15 中国科学院空天信息创新研究院 一种遥感图像的内存组织与处理方法及装置
CN112233011B (zh) * 2020-10-22 2024-05-31 中国科学院空天信息创新研究院 一种遥感图像的内存组织与处理方法及装置
CN115735226B (zh) * 2020-12-01 2023-08-22 华为技术有限公司 一种图像处理方法及芯片
WO2022115996A1 (zh) * 2020-12-01 2022-06-09 华为技术有限公司 图像处理方法及设备
CN115735226A (zh) * 2020-12-01 2023-03-03 华为技术有限公司 图像处理方法及设备
CN113281270A (zh) * 2021-04-26 2021-08-20 中国自然资源航空物探遥感中心 一种高光谱波段选择方法、装置、设备及存储介质
CN113641306A (zh) * 2021-07-28 2021-11-12 通号城市轨道交通技术有限公司 车载ato与车载atp的数据交互方法及装置
CN114237500A (zh) * 2021-12-09 2022-03-25 北京美信时代科技有限公司 一种通过缓存事务提高写入效率的方法及系统
CN114490092A (zh) * 2022-04-06 2022-05-13 北京中科慧眼科技有限公司 基于机器视觉算法的软件系统及构建方法

Also Published As

Publication number Publication date
CN103218174B (zh) 2015-11-25

Similar Documents

Publication Publication Date Title
CN103218174A (zh) 一种用于遥感图像的io双缓存交互多核处理方法
US11449576B2 (en) Convolution operation processing method and related product
US9235769B2 (en) Parallel object detection method for heterogeneous multithreaded microarchitectures
CN104077233B (zh) 多通道卷积层处理方法和装置
CN106203619B (zh) 数据优化的神经网络遍历
Li et al. Block convolution: Toward memory-efficient inference of large-scale CNNs on FPGA
EP3413206B1 (en) Local and global data share
Guan et al. Leveraging the power of multi-core platforms for large-scale geospatial data processing: Exemplified by generating DEM from massive LiDAR point clouds
CN103765376B (zh) 具有无阻塞并行架构的图形处理器
CN106251392A (zh) 用于执行交织的方法和设备
KR20160140394A (ko) 신경망을 실행하는 방법 및 장치
CN104036451A (zh) 基于多图形处理器的模型并行处理方法及装置
Wang et al. Towards memory-efficient allocation of CNNs on processing-in-memory architecture
Schmidt et al. A generic VHDL template for 2D stencil code applications on FPGAs
TWI633516B (zh) 曲面細分及幾何著色器的功率效率屬性處理
CN111028360B (zh) 一种3d图像处理中数据读写方法及系统、存储介质及终端
CN107924327A (zh) 用于多线程处理的系统和方法
CN110663064A (zh) 用于矢量图形和图像处理的并行化流水线
CN104952032A (zh) 图的处理方法、装置以及栅格化表示及存储方法
US20200183833A1 (en) Virtual space memory bandwidth reduction
CN105931256A (zh) 基于cuda的大幅面遥感影像快速分割方法
CN104731562B (zh) 在simd处理单元中的任务执行
CN104751494A (zh) 一种OpenGL超大纹理的处理和绘制方法
JP2012185697A (ja) 画像処理装置、画像処理方法及びプログラム
CN106484532B (zh) 面向sph流体模拟的gpgpu并行计算方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant