接收机要想解算出定位结果,要求至少有四颗或四颗以上的可见卫星,即接收机至少要同时跟踪四颗卫星。在通常的接收机设计中,要求接收机至少要能够同时跟踪10颗乃至20颗卫星。因而在我们的接收机设计中,对跟踪模块采取通道间并行的方式,以增大接收机的并行度、提高GPU的计算效率。此外,跟踪模块的各个子模块的kernel函数计算都默认采用了第三章中的“多点策略”和“双A策略”。
载波生成模块的GPU并行加速
载波生成模块采取通道间并行,即一次性生成多个通道的载波数据,载波生成模块的两个最重要的输入参数为初始载波相位和多普勒频移,初始载波相位用以保证载波的相位连续性,多普勒频移是由载波环路反馈得到,以严格同步与信号的多普勒频移。
载波生成模块可以采取与比特同步模块中相同的策略,采用查表法最终得到如下表所示结果,其中,多卫星通道并行载波生成的grid设计如上图所示。从表中可以看到,当Batch为1、通道数目为1时,计算时间为0.071ms,而当Batch为1、通道数目为20时,计算时间为0.126ms,通道数目增加了19倍,而运算时间只增加了不到1倍,说明GPU的计算能力在通道数目为1时并没有达到饱和,通道间的并行提高了GPU的利用效率。当Batch为20、通道数目为1时,计算时间为0.130ms,Batch数目增加了19倍,计算时间只增加了不到1倍,Batch数目的增加了带来了GPU的利用效率的提高,因而,对于载波生成模块,我们采用多通道和多Batch同时并行的策略。
采样率(MHz) | Batch(ms) | 通道数目 | GPU计算时间(ms) |
50 | 1 | 1 | 0.071 |
50 | 1 | 5 | 0.080 |
50 | 1 | 10 | 0.098 |
50 | 1 | 20 | 0.126 |
50 | 5 | 1 | 0.082 |
50 | 10 | 1 | 0.094 |
50 | 20 | 1 | 0.130 |
50 | 5 | 5 | 0.145 |
50 | 5 | 10 | 0.218 |
50 | 5 | 20 | 0.363 |
载波剥离模块的GPU加速
注意,比特同步模块中,我们先进行解扩操作,后进行载波消除操作,主要是因为比特同步模块包含有多个多普勒频点的载波,先进行解扩操作,能够减少计算量。在跟踪模块中,由于载波只有一个多普勒频点,而C/A码却有E、P、L三路,对信号先进行载波剥离能够减少计算量。
对载波剥离操作,实际上是信号与载波的复数相乘,与载波生成类似,我们在载波剥离操作中仍然采取多通道和多Batch同时并行的策略,具体的grid设计如下图所示,grid的y维表示不同的通道,x维表示多个Batch的载波生成,注意到对于每个Batch来说,其中存在多个block。
采用上述设计的grid计算后,得到如下表所示的计算结果,可以看到,多Batch和多通道同时并行策略带来了显著的计算效率提升。
采样率(MHz) | Batch(ms) | 并行通道数目 | GPU计算时间(ms) |
50 | 1 | 1 | 0.112 |
50 | 5 | 1 | 0.280 |
50 | 10 | 1 | 0.315 |
50 | 20 | 1 | 0.362 |
50 | 1 | 5 | 0.135 |
50 | 1 | 10 | 0.183 |
50 | 1 | 20 | 0.241 |
50 | 5 | 5 | 0.406 |
50 | 5 | 10 | 0.554 |
50 | 5 | 20 | 0.874 |