本发明专利技术公开了一种用于遥感图像的IO双缓存交互多核处理方法,首先依据处理系统CPU核心数量确定多核计算线程数量;针对不同的遥感图像处理算法确定不同的数据分块策略;然后启动各遥感图像处理计算线程,开始执行遥感图像处理算法,其间发出数据访问和输出请求;依据计算线程读取、写入数据请求,启动读、写数据线程,将图像数据按照既定的读分块策略依次读入缓存内存R1、R2中,将处理的结果数据依次写入写缓存W2、W1中;直至处理算法完成计算过程,停止数据读写访问时,再析构读写双缓存,结束读、写线程和各个计算线程。本发明专利技术提高了多核CPU的资源利用率,和磁盘IO访问的效率,解决了内存空间有限和海量遥感数据处理的矛盾。
【技术实现步骤摘要】
本专利技术涉及一种多核计算方法,尤其涉及一种用于遥感图像的IO双缓存交互多核处理方法,属于计算机遥感图像处理
,用于遥感应用中高分全色、多光谱、高光谱和雷达等各种类型海量遥感影像的快速处理。
技术介绍
针对海量遥感图像的处理过程往往会耗费用户大量的时间,虽然目前计算机硬件设备得到了长足的发展,但针对海量遥感图像的处理速度提升有限。可能的原因在于遥感图像处理算法底层数据驱动设计不足导致没有充分利用计算机的CPU计算资源和磁盘IO资源,存在过多的计算或IO访问的等待;或者是由于对遥感图像处理算法的数据处理顺序和遥感数据的存储方式不匹配,导致磁盘IO访问过多。因此为了提高遥感图像处理的效率,必须综合考虑特有的遥感图像处理算法和针对该算法优化的底层数据读写驱动和多核计算方法。为了避免频繁读取、写入磁盘数据,传统的计算机遥感图像处理解决方法一种是首先将遥感图像整个的读入计算机内存当中,然后将经过各种处理生成的遥感数据同样暂存于内存,最后一并写入磁盘。随着计算机内存空间的不断增加,加上64位机对大内存的支持,以及高速固态硬盘的出现,这种方法的使用仍然较普遍,也使得人们对海量遥感图像处理算法的磁盘、内存缓冲设计并不太在意。另一种方法是将遥感图像按固定模式分块后分别读入内存中处理,然后再分块输出,俗称瓦片计算。这种方法在逻辑上比较简单,而且解决了内存限制和算法二次开发支持的问题,使软件可以处理超大遥感影像,并且支持众多遥感算法处理执行。一 般商用遥感图像处理软件如ENV1、PCI和ERDAS均采用这种方法,但通过实验表明,这些软件并没有充分利用普通PC机的磁盘IO和CPU计算资源。计算机硬件发展至今,特别是云计算、多核计算技术的发展,对于普通台式机而言,为了高效的利用计算资源,仍然需要突破磁盘、内存和CPU的IO性能不一致的障碍。而大多数工程化的遥感图像处理算法的运算速度的瓶颈仍然在磁盘数据的IO过低和内存大小受限上面,而并不仅仅在经过多核计算优化的CPU上。如何针对各种海量遥感图像处理算法对磁盘IO快速访问特点进行分类,并尽量减少CPU计算和IO访问的等待时间,实现各种遥感算法的多核快速计算处理,并且保证数据驱动算法底层封装后进行遥感算法二次开发时依然具有优良的可读性和便捷性,正是本专利技术重点解决的问题。
技术实现思路
本专利技术解决的技术问题是:克服现有技术的不足,提供一种用于遥感图像的IO双缓存交互多核处理方法,本专利技术提高了多核CPU的资源利用率,和磁盘IO访问的效率,解决了内存空间有限和海量遥感数据处理的矛盾,保证了图像处理算法二次开发后的代码的可读性,且满足底层多种处理模式下IO设计的封装性。本专利技术的技术解决方案是:一种用于遥感图像的IO双缓存交互多核处理方法,其特征在于包含以下步骤:(I)针对不同的遥感图像处理算法确定不同的数据分块策略,包括满行分块、满列分块、满波段分块和固定列宽分块策略;(2)根据CPU数量确定遥感图像像素计算线程数量;(3)程序控制启动所有遥感图像像素计算线程,各个遥感图像像素计算线程在读写首个遥感图像像素时发出读、写遥感图像请求,其中一个CPU根据读、写遥感图像请求程序控制开启读磁盘线程和写磁盘线程分别向读缓存区和写缓存器发出数据读取和数据写入请求;(4)读缓存区根据接收到的数据读取请求,按照步骤(I)确定的数据分块策略将硬盘空间存储的遥感图像数据依次存入读缓存块Rl、R2中;各个遥感图像像素计算线程首先读取读缓存块Rl中的遥感图像数据,当所有遥感图像像素计算线程读取的遥感图像数据不在读缓存块Rl中时,转入读取读缓存块R2中的遥感图像数据,读缓存块Rl执行读磁盘空间遥感图像数据操作,当所有遥感图像像素计算线程读取的遥感图像数据不在读缓存块R2中时,转入读取读缓存块Rl中的遥感图像数据,读缓存块R2执行读磁盘空间遥感图像数据操作;(5)各个遥感图像像素计算线程按照交错计算算法顺序处理从读缓存区中读取的遥感图像数据;(6)写缓存区根据接收到的数据写入请求,将所有遥感图像像素计算线程的处理结果首先写入写缓存块W2中,当写缓存块W2中写满处理后的遥感图像数据时,所有遥感图像像素计算线程的处理结果写入写缓存块Wl中,同时将写缓存块W2中写满的遥感图像数据写入磁盘空间,当写缓存块Wl中写满处理后的遥感图像数据时,所有遥感图像像素计算线程的处理结果写入写缓存块W2中,同时将写缓存块Wl中写满的遥感图像数据写入磁盘空间;(7)当所有遥感图像像素计算线程处理完所有遥感图像数据,停止读磁盘线程和写磁盘线程,结束所有遥感图像像素计算线程,完成遥感图像的IO双缓存交互多核处理。所述步骤(5)交错计算算法的实现方法为:(a)各遥感图像像素计算线程依据自己的线程编号从图像首行或首列数据开始处理,每个遥感图像像素计算线程处理的数据按行或列交错分布,依据行或列的编号顺序处理; (b)当某个遥感图像像素计算线程处理遥感图像数据时发现所要读取的遥感图像数据不在读缓存块Rl时,向读磁盘线程发出更换读缓存块数据的请求,并等待,当所有遥感图像像素计算线程均发出更换读缓存块请求时,遥感图像像素计算线程开始读取读缓存块R2中的遥感图像数据;读磁盘线程响应遥感图像像素计算线程的更换读缓存块请求,力口载新遥感图像数据至读缓存块R1,然后交换读缓存块Rl、R2的指针位置;(c)重复步骤(b)的操作直到从读缓存区中读取出所有的遥感图像数据。本专利技术与现有技术相比的有益效果在于:(I)本专利技术将底层IO读写从运算线程中剥离,用独立线程实现快速读、写遥感图像数据,并与各个计算线程协调配合,底层IO独立线程与运算主线程同步运行,保证了主计算线程中算法的执行效率,提高了多核CPU的资源利用率。(2)依据各种遥感算法处理图像数据的顺序,用不同数据分块的方式执行不同的图像处理算法,包括满行、满列、满波段和固定列宽分块等。(3)读数据和写数据缓冲区采用双缓存独立线程执行,与计算线程同步,一方面节省磁盘数据加载至内存所耗费的时间,另一方面可以保证读写缓存可以在用户限定的大小内开辟,提高了磁盘IO访问的效率。(4)数据多核计算处理过程采用数据行交叉寻址处理方法实现,既保证了各个计算线程数据读取、写入时IO同步操作,又保证了上层算法二次开发用户代码编写的便捷性,同时实现多核计算,保证了图像处理算法二次开发后的代码的可读性,且满足底层多种处理模式下IO设计的封装性。附图说明图1为本专利技术的实现原理图;图2为本专利技术基于满行的图像分块设计图;图3为本专利技术基于满列的图像分块设计图;图4为本专利技术基于固定列宽的图像分块设计图;图5为本专利技术基于满波段的图像分块设计图;图6为本专利技术中磁盘IO读线程执行流程图;图7为本专利技术像素计算线程执行图像数据读入流程逻辑图;图8为本专利技术中磁盘IO写线程执行流程图;图9为本专利技术像素计算线程执行图像数据写出流程逻辑图;图10为本专利技术多像素计算线程分行交错多核计算原理图。具体实施例方式下面结合附图对本专利技术的具体实施方式进行进一步的详细描述:如图1所示,本专利技术的实现原理是:(I)PC机内存临时存放遥感数据的缓存块空间,首先依据处理系统CPU核心数量确定多核计算线程数量,针对不同的遥感图像处理算法确定不同的数据分块策略,包括满行分块、满列分块本文档来自技高网...
【技术保护点】
一种用于遥感图像的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双缓存交互多核处理。...
【技术特征摘要】
1.一种用于遥感图像的IO双缓存交互多核处理方法,其特征在于包含以下步骤: (1)针对不同的遥感图像处理算法确定不同的数据分块策略,包括满行分块、满列分块、满波段分块和固定列宽分块策略; (2)根据CPU数量确定遥感图像像素计算线程数量; (3)程序控制启动所有遥感图像像素计算线程,各个遥感图像像素计算线程在读写首个遥感图像像素时发出读、写遥感图像请求,其中一个CPU根据读、写遥感图像请求程序控制开启读磁盘线程和写磁盘线程分别向读缓存区和写缓存器发出数据读取和数据写入请求; (4)读缓存区根据接收到的数据读取请求,按照步骤(I)确定的数据分块策略将硬盘空间存储的遥感图像数据依次存入读缓存块Rl、R2中;各个遥感图像像素计算线程首先读取读缓存块Rl中的遥感图像数据,当所有遥感图像像素计算线程读取的遥感图像数据不在读缓存块Rl中时,转入读取读缓存块R2中的遥感图像数据,读缓存块Rl执行读磁盘空间遥感图像数据操作,当所有遥感图像像素计算线程读取的遥感图像数据不在读缓存块R2中时,转入读取读缓存块Rl中的遥感图像数据,读缓存块R2执行读磁盘空间遥感图像数据操作; (5)各个遥感图像像素计算线程按照交错计算算法顺序处理从读缓存区中读取的遥感图像数据; (6)写缓存区根据接收到的数据写入请求,将所有遥感图像像素计算线程的处理结果首先写入写缓存块W2中,当写缓存块...
【专利技术属性】
技术研发人员:刘翔,姚尧,王玮哲,邹同元,
申请(专利权)人:航天恒星科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。