1.一種CUDA架構(gòu)下目標(biāo)訪問計(jì)算并行實(shí)現(xiàn)方法,其特征在于,包括以下步驟:
(1)CPU讀取衛(wèi)星數(shù)據(jù)、約束條件、設(shè)定時(shí)間段內(nèi)的星歷文件和目標(biāo)文件,傳遞到GPU;并為GPU分配多個(gè)線程;所述的約束條件包括衛(wèi)星的最小太陽高度角、最小側(cè)擺角、最大側(cè)擺角、最小俯仰角、最大俯仰角、衛(wèi)星軌道傾角和軌道高度;
(2)GPU根據(jù)星歷文件、衛(wèi)星數(shù)據(jù)以及目標(biāo)文件同時(shí)計(jì)算每個(gè)線程對(duì)應(yīng)的星歷時(shí)刻下的星下點(diǎn)到目標(biāo)點(diǎn)的球面距離以及星下點(diǎn)的太陽高度角,將計(jì)算得到的所有星歷時(shí)刻下的星下點(diǎn)到目標(biāo)點(diǎn)的球面距離以及星下點(diǎn)的太陽高度角傳遞到CPU;
(3)CPU根據(jù)衛(wèi)星數(shù)據(jù)計(jì)算星下點(diǎn)到目標(biāo)點(diǎn)的球面最大距離,將步驟(2)中所得的所有星歷時(shí)刻下的星下點(diǎn)到目標(biāo)點(diǎn)的球面距離分別與星下點(diǎn)到目標(biāo)點(diǎn)的球面最大距離進(jìn)行對(duì)比,將步驟(2)中所得的所有星歷時(shí)刻下的星下點(diǎn)的太陽高度角分別與衛(wèi)星的最小太陽高度角進(jìn)行對(duì)比,若該星歷時(shí)刻下星下點(diǎn)到目標(biāo)點(diǎn)球面距離小于星下點(diǎn)到目標(biāo)點(diǎn)的球面最大距離且星下點(diǎn)的太陽高度角大于衛(wèi)星的最小太陽高度角,則執(zhí)行步驟(4);否則結(jié)束本流程;
(4)CPU計(jì)算每個(gè)星歷時(shí)刻下衛(wèi)星訪問目標(biāo)的滾動(dòng)角和俯仰角,將滾動(dòng)角與最小側(cè)擺角和最大側(cè)擺角進(jìn)行對(duì)比,將俯仰角與最小俯仰角和最大俯仰角進(jìn)行對(duì)比,若滾動(dòng)角在最小側(cè)擺角和最大側(cè)擺角范圍內(nèi)且俯仰角在最小俯仰角和最大俯仰角范圍內(nèi),則記錄該星歷時(shí)刻及該星歷時(shí)刻下計(jì)算所得的星下點(diǎn)到目標(biāo)點(diǎn)的球面距離、星下點(diǎn)的太陽高度角以及衛(wèi)星訪問目標(biāo)的滾動(dòng)角和俯仰角;否則結(jié)束本流程。
2.根據(jù)權(quán)利要求1所述的一種CUDA架構(gòu)下目標(biāo)訪問計(jì)算并行實(shí)現(xiàn)方法,其特征在于,步驟(2)具體包括以下步驟:
(201)GPU將星歷文件中所有星歷時(shí)刻作為一個(gè)數(shù)組,數(shù)組中每個(gè)星歷時(shí)刻對(duì)應(yīng)一個(gè)線程,對(duì)所有線程進(jìn)行編號(hào);
(202)將所有的線程分為多個(gè)線程塊,每個(gè)線程塊包括多個(gè)連續(xù)的線程;
(203)每個(gè)線程以所屬線程塊中中間星歷時(shí)刻的時(shí)間作為計(jì)算的時(shí)間,根據(jù)星歷文件、衛(wèi)星數(shù)據(jù)以及目標(biāo)文件分別計(jì)算該線程編號(hào)對(duì)應(yīng)的星歷時(shí)刻下的星下點(diǎn)到目標(biāo)點(diǎn)球面距離以及星下點(diǎn)太陽高度角,并傳遞到CPU端。
3.根據(jù)權(quán)利要求2所述的一種CUDA架構(gòu)下目標(biāo)訪問計(jì)算并行實(shí)現(xiàn)方法,其特征在于,步驟(202)中每個(gè)線程塊包括256個(gè)線程,線程塊個(gè)數(shù)為:(Total+255)/256;式中,Total為總的星歷時(shí)刻個(gè)數(shù)。