巩健文,杨日杰
(海军航空工程学院,山东 烟台 264001)
基于Visual C++的水声目标数据库设计
巩健文,杨日杰
(海军航空工程学院,山东 烟台264001)
摘要:针对水声目标实测数据量庞大,LOFAR和DEMON分析计算量大的问题,设计了一个基于Visual C++ 6.0的数据库管理系统。管理系统通过ADO接口实现与SQL Server 2005数据库管理程序的数据交换,保证了数据稳定存储和高效传输。通过内存映射文件技术,实现了对大数据文件的快速读取。采用CPU与GPU并行计算进行了LOFAR和DEMON分析,实现了LOFAR和DEMON谱图的实时显示。整个数据库管理系统操作简洁高效,可靠性高,具有广泛的实际应用价值。
关键词:Visual C++;ADO接口;SQL Sever;内存映射文件;CPU与GPU并行计算
Citation format:GONG Jian-wen, YANG Ri-jie.Database Design of Underwater Acoustic Target Based on Visual C++[J].Journal of Ordnance Equipment Engineering,2016(3):82-85.
水声目标实测数据是验证在实际工作环境中,各种算法的有效性以及系统的稳定性的关键信息。在数据积累过程中,如何将不同时间、地点采集的各种数据进行方便有效地整理保存,并能高效地查询、提取,建立数据库是实现数据管理的最有效手段[1-5]。在实测信号数据的基础上,对原始音频信号进行处理,LOFAR及DEMON分析都可以为目标状态判决提供一定的依据。由LOFAR分析可获得反映舰船目标各部件结构特征的宽频带特征,而DEMON分析则获得较低频段的调制强线谱特征,弥补了LOFAR分析在低频端的不足,共同描绘了目标信号的谱系特征。
由于实测数据通常较大,读取时间相对较长,本文采用内存映射文件技术对文件进行读取。针对LOFAR和DEMON分析计算量大、实时性差的问题,本文采用CPU与GPU并行计算的方法对LOFAR谱图和DEMON谱图进行汇总。
1水声目标实测数据库设计
本研究是基于Visual C++6.0的ADO接口技术调用SQL Server 2005数据库管理系统。本系统由前台和后台两部分组成。前台实现人机交互界面显示功能,用户通过前台界面可以对数据库进行操作;后台实现数据维护、管理、存储功能,管理员通过后台可以直接对数据库进行底层操作和系统维护。
ADO接口技术的结构分为3层:Visual C++应用程序(人机交互界面)、SQL Server数据库管理系统和数据库、表(数据层),它们之间的数据交换由ADO接口和数据库引擎实现,其结构如图1所示。
图1 ADO接口结构
2内存映射文件技术
水声目标是实测数据在计算机中是以无损音质WAV音乐格式存储的,这种存储方法具有跨平台性、易移植性和稳定性等特点,同时避免了使用大型数据库软件带来的不必要的开销。然而在文件的管理和处理速度上则远不如专业数据库软件。实测信号往往动辄数百MB,甚至GB级的数据的操作,使用WinAPI函数及MFC文件操作类中的文件操作方法,在功能和效率上显然难以满足要求。而使用内存映射文件技术则可以较好地解决此类问题。
内存映射文件方式是windows的一种内存管理方法,提供了一个统一的内存管理特征[6-7]。内存映射文件与虚拟内存有些类似,通过内存映射文件可以保留一个地址空间的区域,同时将物理存储器提交给此区域,只是内存文件映射的物理存储器来自一个己经存在于磁盘上的文件,而非系统的页文件,而且在对该文件进行操作之前必须首先对文件进行映射,就如同将整个文件从磁盘加载到内存。由此可以看出,使用内存映射文件处理存储于磁盘上的文件时,将不必再对文件执行工I/O操作,这意味着在对文件进行处理时将不必再为文件申请并分配缓存,所有的文件缓存操作均由系统直接管理,由于取消了将文件数据加载到内存、数据从内存到文件的回写以及释放内存块等步骤,使得内存映射文件处理大数据量的文件时能起到相当重要的作用。以下列出内存映射文件技术关键函数说明:
1) CreateFile()函数用于创建文件内核对象,并将文件映射的物理存储器的位置告诉操作系统;
2) CreateFileMapping()函数用于创建一个文件映射内核对象,让系统为该对象保留相应的物理储存器,并返回文件映射对象的句柄;
3) MapViewOfFile()函数用于将文件映射对象全部映射到进程地址空间中,系统为保留的地址空间提交物理文件数据,作为该区域的物理存储器,并得到文件数据的一个视图;
4) UnmapViewOfFile()函数用于在进程的地址空间中撤销文件映射内核对象的映射;
5) CloseHandle()用于关闭文件内核对象,以防止程序继续运行可能引起的资源泄露。
3CPU与GPU并行计算的LOFAR和DEMON谱图显示
3.1LOFAR分析和DEMON分析[8-10]
LOFAR谱图从时、频两个角度对信号进行描述,是近10年来较具代表性的被动声纳信号处理方法之一,该方法通过对连续的采样数据作短时傅里叶变换(STFT)而构成信号的非平稳特性。获得LOFAR谱图步骤为:
1) 将原始信号的采样序列s(n)分成连续的K段,每段L个点,各段数据间可适当部分重叠,可选择重叠50%,具体视情况综合分配重叠部分的数据长度;
2) 对第j段信号的采样样本Mj(n)作归一化处理和中心化处理,归一化处理可使接收信号的幅度(或方差)在时间上均匀;中心化处理则使样本的均值为零(去直流);
5) 对信号xj(n)作短时傅里叶变换得到第j段数据信号的LOFAR谱;
Xj(k)=STFT[xj(n)]
6) 将以上获得的各段数据的谱按时间绘制在坐标系中,即得到完整的LOFAR谱图。
在声纳信号处理中把通过对接受的宽带信号进行解调,以计算低频解调谱的算法称为DEMON分析,解调后的低频时域信号称为包络信号,其功率谱称为DEMON谱。舰船的周期调制谱等于轴频和叶片数目的乘积,通常称螺旋桨拍现象,舰船噪声用周期性局部平稳过程作模型可表示为
式中:n(t)为窄带平稳白色高斯随机过程;f(t)称为调制函数,是慢变化的周期函数,它所在的频域比n(t)所在的频域要低得多。利用绝对值检波方法即可获得调制信号f(t)。再对获得的解调信号进行STFT处理即可得到解调信号的DEMON谱。
3.2CPU与GPU并行计算
最近几年,图形处理单元(GPU)技术飞速发展并在通用计算领域得到广泛应用。虽然GPU单核的计算能力相对CPU较弱,但是GPU的处理核心数远多于CPU,因此相同价格的GPU相对CPU具有更高的计算性能。随着NVIDIA公司发布了CUDA(ComputeUnifiedDeviceArchitecture),并开发了一套基于CUDA平台的NVCC编译器驱动,编译器可以嵌入到微软的VisualStudio开发平台下,当我们运行一个基于CUDA的程序时,可以完成GPU代码的编译。针对Windows,Linux,MacOSX操作系统,NVIDIA都提供了相应的开发套件。以Windows系列为例,需要安装VisualStudio作为开发工具,其次安装NVIDIA开发套件cuda_5.0和cuda_NsightVisual_Stduio作为GPU平台下代码的调试工具和性能测试工具,然后安装显卡最新驱动程序。目前GPU计算在生物、电磁场、地理等领域得到了大量的应用。
最能发挥GPU性能的是细粒度并行计算,即将每个子任务划分成许多更细小的操作步,然后GPU在操作步层而对子任务进行并行计算。这种并行方式在神经网络以及有限元领域得到了很广泛的应用。但是这种并行计算方式需要对GPU程序进行细致的调试以实现对大量的操作步的高效运算,程序实现难度较大。而相对于细粒度的并行,粗粒度的并行方式则更容易实现。粗粒度的并行计算方式采用的是基于相对独立的子任务的并行而不是操作步的并行。这种并行方式在优化和控制领域都有应用。当满足以下情况时,粗粒度和细粒度的并行效率相当:
1) 子任务的数量远多于GPU计算的核心数;
2) 每个子任务的计算量比较适中,能够独立在一个GPU核心上完成;
3) 各个子任务之间不需要太多的数据交换。并且计算过程中不需要全局同步,每个GPU核心上的子任务可以按顺序逐个进行计算。
而对于水声目标实测数据的LOFAR分析、DEMON分析可以满足以上3个特性。虽然LOFAR分析和DEMON分析需要对实测数据进行实时计算,但其计算量不会超过GPU单核的计算能力,每一时刻计算能被看作一个相对独立的计算子任务。此外不同时刻的LOFAR分析和DEMON分析相对独立,不同GPU线程之间几乎不需要进行数据交换。因此GPU数百计的计算核心可以实现对实测数据的实时计算,这样计算效率将非常高。
计算分析模块是程序的核心,由CPU和GPU协同完成计算任务。其中CPU负责文件读写、任务分配等工作,GPU负责完成对每一时刻实测数据进行LOFAR分析和DEMON分析。
4性能分析及软件实现
4.1性能分析
系统硬件环境为:酷睿i3 2.67GHz处理器,1G内存,600G硬盘。操作系统为MicrosoftWindowsXPProfessional,开发平台为MicrosoftVisualC++ 6.0。试验通过软件系统打开水声目标数据库中选定实测数据,使用GetTickCount函数进行计时,采用普通文件打开和内存映射文件技术实现音频播放所需要的时间,如表1所示。
表1 两种方法读取文件时间
4.2软件实现
按照系统的流程和组成,主要功能模块的部分界面如下:
1) 数据库主界面,可实现数据库显示、查询和管理功能,音频播放功能,如图2所示。
图2 数据库主界面
2) LOFAR和DEMON谱图显示界面。通过CPU与GPU并行计算实现LOFAR和DEMON谱图的实时显示。如图3、图4所示。
图3 LOFAR谱图显示
图4 DEMON谱图显示
5结束语
本文设计了水声目标实测信号数据库管理系统。该系统符合软件开发基本规范,在Visual C++6.0和SQL Sever2005环境下开发而成,采用ADO接口技术访问数据库。系统完成测试并打包,能实现数据库的稳定高效管理。软件中对实测数据的读取采取内存映射文件技术,验证表明此方法大大缩短了了数据的读取时间。在对原始数据做LOFAR分析和DEMON分析时采用CPU和GPU并行计算,克服了普通单核CPU计算实时性差的问题,实现了LOFAR谱图和DEMON谱图的实时显示。
参考文献:
[1]万军,周莉.轻质材料环境腐蚀工艺数据库改进设计[J].四川兵工学报,2010,31(2):54-56.
[2]吴旭辉.飞机类目易损性数据库软件设计[J].四川兵工学报,2012,32(2):89-93.
[3]李治军,李大成,尹立业.基于移动智能终端的武器数据库管理信息系统[J].四川兵工学报,2012,33(2):87-89.
[4]杨炜辰,凌海风,武鹏,等.基于关系数据库的本体存储模式[J].四川兵工学报,2013,34(4):111-115.
[5]周泽云,向阳霞,邹渝.基于SQLite数据库的装备数据采集系统设计[J].四川兵工学报,2014,35(11):60-64.
[6]于慧彬,齐鹏,梁捷.内存映射文件在大数据量海洋调查数据处理中的应用[J].海洋技术,2010,29(1):32-35.
[7]姜三义,代真真,李阳.基于内存映射文件的进化算法数据存储引擎[J].计算机工程与应用,2015,51(1):49-53.
[8]宋振宇,丁勇鹏,赵秀丽,等.基于LOFAR谱图的水下目标识别方法[J].海军航空工程学院学报,2011,26(3):283-286.
[9]邱家兴,程玉胜,张惊丞.船舶噪声DEMON谱质量评估方法[J].舰船科学技术,2014,36(9):46-49.
[10]吴昌昊,龚俊,刘子琪.基于CUDA实现经典功率谱估计[J].四川兵工学报,2013,34(10):98-101.
(责任编辑杨继森)
Database Design of Underwater Acoustic Target Based on Visual C++
GONG Jian-wen, YANG Ri-jie
( Naval Aeronautical and Astronautical University, Yantai 264001, China)
Abstract:To deal with large amount of underwater acoustic target measured data and large amount of calculation of LOFAR and DEMON, a database management system based on Visual C++ 6.0 was designed. The system exchanged data with SQL Sever 2005 database management program through ADO interface in order to ensure a stable storage and efficient data transmission. The system read data using memory mapping file, which can improve the efficiency of file read. The system analyzed LOFAR and DEMON using parallel computing based on CPU and GPU,which can real-timely display the spectrogram of LOFAR and DEMON. The system designed concisely, efficiently and of high reliability, which has extensive practical application value.
Key words:visual C++; ADO interfaces; SQL Sever; memory mapping file; parallel computing based on CPU and GPU
文章编号:1006-0707(2016)03-0082-04
中图分类号:TP311
文献标识码:A
doi:10.11809/scbgxb2016.03.020
作者简介:巩健文(1980—),男,硕士,主要从事水声工程研究。
基金项目:国家自然基金项目(61271444)
收稿日期:2015-09-15;修回日期:2015-09-30
本文引用格式:巩健文,杨日杰.基于Visual C++的水声目标数据库设计[J].兵器装备工程学报,2016(3):82-85.
【信息科学与控制工程】