JP7198473B2 - Information processing system, information processing program, information processing apparatus, and information processing method - Google Patents
Information processing system, information processing program, information processing apparatus, and information processing method Download PDFInfo
- Publication number
- JP7198473B2 JP7198473B2 JP2018093090A JP2018093090A JP7198473B2 JP 7198473 B2 JP7198473 B2 JP 7198473B2 JP 2018093090 A JP2018093090 A JP 2018093090A JP 2018093090 A JP2018093090 A JP 2018093090A JP 7198473 B2 JP7198473 B2 JP 7198473B2
- Authority
- JP
- Japan
- Prior art keywords
- link
- links
- processed
- processing target
- processing
- 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.)
- Active
Links
Images
Landscapes
- Navigation (AREA)
Description
本発明は、情報処理システム、情報処理プログラム、情報処理装置及び情報処理方法に関する。 The present invention relates to an information processing system, an information processing program, an information processing apparatus, and an information processing method.
マルチコアプロセッサの発展に伴い、様々な分野においてマルチコアプロセッサを利用してコストパフォーマンスを向上させるための研究開発が広く行われている。企業内又は家庭内においてこれらのプロセッサを用いることはもちろん、データセンタ内に設置し、各種データの検索やマイニング等に用いることも多くなってきている。 With the development of multi-core processors, research and development for improving cost performance using multi-core processors has been widely carried out in various fields. It goes without saying that these processors are used in companies or homes, but they are also often installed in data centers and used for searching various data, mining, and the like.
経路探索においては、各ノードからのリンクの重みに基づいて、スタートのノードからの経路を徐々に決定していくダイクストラ法が探索法として用いられることが多い。しかしながら、ダイクストラ法は、同じノードに対して異なるタイミング(ステップ)で到達するリンクが発生し、一般的に並列処理を行うことが困難であった。 In route search, the Dijkstra method, which gradually determines the route from the starting node based on the weight of the link from each node, is often used as a search method. However, in the Dijkstra method, links that reach the same node at different timings (steps) occur, and it is generally difficult to perform parallel processing.
そこで、本発明は、マルチコアプロセッサを用いて経路探索を高速かつ精度よく行うことができる情報処理システム、情報処理プログラム、情報処理装置及び情報処理方法を提案する。 Accordingly, the present invention proposes an information processing system, an information processing program, an information processing apparatus, and an information processing method that can perform route search at high speed and with high accuracy using a multi-core processor.
一実施形態に係る情報処理システムは、内蔵されたデバイスメモリと、複数の演算処理を並列に実行する複数の演算コアと、を備える、GPUと、経路ネットワークデータを記憶する、経路ネットワークデータ記憶手段と、処理対象となるリンクである処理対象リンクを記憶する、処理対象リンク記憶手段と、前記経路ネットワークデータに基づいて、第1地点における1又は複数の処理対象リンクを抽出する、処理対象リンク抽出手段と、1又は複数の前記処理対象リンクについてそれぞれのコストを並列演算する、コスト演算手段と、コストの演算が終了した前記処理対象リンクを処理済リンクとして更新するとともに、前記処理済リンクに接続する1又は複数の未処理リンクを前記処理対象リンクとして新たに設定する、処理対象リンク更新手段と、それぞれの前記処理済リンクに対して算出されたコストに基づいて前記第1地点から第2地点までの経路を取得する、経路取得手段と、を備え、前記GPU上に、少なくとも、前記経路ネットワークデータ記憶手段及び前記コスト演算手段、を備える。 An information processing system according to an embodiment comprises a GPU comprising a built-in device memory and a plurality of arithmetic cores that execute a plurality of arithmetic processes in parallel; and route network data storage means for storing route network data. a target link storage means for storing target links which are links to be processed; and target link extraction for extracting one or a plurality of target links at a first point based on the route network data. means, cost calculation means for performing parallel calculation of costs for one or more of said links to be processed, updating said links to be processed for which cost calculation has been completed as processed links, and connecting said links to said processed links. target link updating means for newly setting one or a plurality of unprocessed links to be processed as the target link; a route acquisition means for acquiring a route to the destination, and at least the route network data storage means and the cost calculation means are provided on the GPU.
マルチコアプロセッサを用いた高速かつ精度のよい経路探索を実現する。 Realize high-speed and accurate route search using a multi-core processor.
まず、本実施形態における用語について説明する。なお、用語の説明においては本実施形態の説明に必要な箇所だけを説明しており、厳密に正確なものに限られず、また、詳しい説明は省略している。 First, the terms used in this embodiment will be explained. In addition, in the explanation of the terms, only the parts necessary for the explanation of the present embodiment are explained, and the terms are not strictly accurate, and the detailed explanation is omitted.
「GPU(Graphical Processing Unit)」とは、画像処理に特化したプロセッサである。今日では、その優れた並列演算精度から、GPGPU(General-Purpose computing on GPU)の用途として一般的な演算処理に用いられることが多い。 A “GPU (Graphical Processing Unit)” is a processor specialized for image processing. Today, due to its excellent parallel arithmetic accuracy, it is often used for general arithmetic processing as the application of GPGPU (General-Purpose computing on GPU).
「演算コア」とは、GPUに備えられる1つの演算を行うコアの最小単位のことを言い、1つのGPU内に数100から数1000の演算コアが備えられている。 A "computing core" is the minimum unit of a core that performs one computation provided in a GPU, and one GPU includes several hundred to several thousand computing cores.
「デバイスメモリ」とは、GPUに備えられる記憶領域のことを言い、演算コアを動かすためのプログラムや、演算コアが使用するデータ及び演算に必要となるバッファ領域を確保するために用いられる。1つのGPUにおいて、数Gから数10Gの容量のデバイスメモリが備えられる。 "Device memory" refers to a storage area provided in the GPU, and is used to secure programs for operating the arithmetic cores, data used by the arithmetic cores, and buffer areas required for arithmetic operations. A single GPU is provided with a device memory with a capacity of several G to several tens of G.
「ホストプログラム」とは、GPUを搭載しているコンピュータにおいて、CPU(Central Processing Unit)に実行させるプログラムのことを言う "Host program" refers to a program that is executed by the CPU (Central Processing Unit) in a computer equipped with a GPU.
「カーネル(又はカーネルプログラム)」とは、GPUにおいて演算コア又は制御部に実行させるプログラムのことを言う。 A "kernel (or kernel program)" refers to a program that is executed by an arithmetic core or a control unit in a GPU.
「スレッド」とは、演算処理を行う単位のことを言い、ここでは、1つの演算コアが実行する演算処理(プログラム)のことを言う。 A "thread" refers to a unit for performing arithmetic processing, and here refers to an arithmetic processing (program) executed by one arithmetic core.
「ブロック」とは、演算コア又はスレッドの集合の単位を言い、所定数の演算コア又は所定数のスレッドのことを言う。ブロック内では、動作している各スレッドの同期処理を行うことが可能である。 A “block” refers to a unit of a set of operation cores or threads, and refers to a predetermined number of operation cores or a predetermined number of threads. Within the block, it is possible to perform synchronous processing for each running thread.
「アトミックアクセス」とは、複数のスレッドが並列で動作している場合に、あるメモリにアクセス(書き込む/読み込み動作)を行う際に、他のスレッドから書き込みが行われないようにする処理のことを言う。 "Atomic access" is a process that prevents writing from other threads when accessing (writing/reading) a certain memory when multiple threads are operating in parallel. say.
「ノード」とは、探索における地点情報を示し、例えば、探索中における各時刻における基準点の情報のことを言う。より具体的には、道路における交差点、出発地、目的地などの重要地点、高速道路の入口等、探索においてチェックポイントとなりうる地点のことを言う。 A “node” indicates point information in a search, for example, reference point information at each time during a search. More specifically, it refers to points that can be checkpoints in searches, such as important points such as intersections on roads, points of departure and destinations, and entrances to highways.
「リンク」とは、あるノードと、当該ノードに隣接するノードを接続する情報のことを言う。また、ノード情報を用いずに、各リンクの始点及び終点の情報を用いて経路探索を行うようにしてもよい。この場合、上述と同じ例で言うと、リンクは、一例として、交差点から次の交差点までの道路の情報のことである。 A "link" is information that connects a certain node with a node adjacent to the node. Further, the route search may be performed using the information of the start point and end point of each link without using the node information. In this case, using the same example as above, the link is, for example, road information from an intersection to the next intersection.
「未処理リンク」とは、探索の実行時において、まだ走査されていないリンクのことを言う。初期状態において、全てのリンクが未処理リンクとなる。 "Unprocessed links" are links that have not yet been traversed at the time the search is performed. In the initial state, all links are unprocessed links.
「処理対象リンク」とは、探索の実行時において、その時点において処理対象となっているリンクのことを言う。未処理リンクは、探索において走査対象となると処理対象リンクとなる。 A "processed link" refers to a link that is currently being processed when a search is executed. An unprocessed link becomes a processed link when it is scanned in a search.
「処理済リンク」とは、探索の実行時において、既に処理対象となり、処理が終了しているリンクのことを言う。処理対象リンクは、探索においてその走査が終了すると処理済リンクとなる。 A "processed link" refers to a link that has already been processed and has been processed when a search is executed. A processed link becomes a processed link when its scanning is completed in the search.
(構造)
図1は、本実施形態に係る情報処理システムの概略を示すブロック図である。本実施形態に係る情報処理システムについて、図1を参照して説明する。
(structure)
FIG. 1 is a block diagram showing an outline of an information processing system according to this embodiment. An information processing system according to this embodiment will be described with reference to FIG.
情報処理システム1は、端末装置2と、サーバ3と、を備える。端末装置2と、サーバ3とは、有線又は無線のネットワーク4を介して接続される。
The
端末装置2は、サーバ3により探索された経路探索情報を取得し、出力する装置であり、例えば、クライアントPC、携帯電話、タブレット、スマートホン等の表示又は音声で探索結果を出力するデバイスである。また、端末装置2から、探索条件となる出発地、目的地の情報を入力するようにしてもよい。
The
サーバ3は、ユーザ等により指定された出発地、目的地に基づいて最適な経路を探索し、端末装置2へと探索結果を出力する。
The
ネットワーク4は、端末装置2と、サーバ3と、を接続するネットワークであり、例えば、イントラネット、インターネット、Wi-Fi(登録商標)、Bluetooth(登録商標)等の通信手段により、端末装置2からのリクエストをサーバ3へと、サーバ3からの出力結果を端末装置2へと通信により伝達する。
The
サーバ3は、制御部30と、記憶部32と、通信部34と、を備える。
The
制御部30は、処理対象リンク抽出部300と、コスト演算部302と、経路取得部304と、を備え、サーバ3の制御を行う。これらの他に、サーバ3が起動するため、又は、動作するために必要な制御を行う手段が備えられていてもよい。
The
処理対象リンク抽出部300は、探索において、処理対象リンクを抽出する。例えば、ある処理対象リンクの走査が終了し、リンクの終点のノードへと到達した場合、当該ノードにおける次の処理対象リンクの抽出を行う。探索開始時においては、出発地点を開始点とするリンクを抽出する。すなわち、処理対象リンク抽出部300は、処理対象リンクのコスト演算が終了した後、処理対象リンクを更新する処理対象リンク更新手段として動作する。別の例として、処理対象リンクを更新する処理対象リンク更新手段を、処理対象リンク抽出部300とは別の構成として備えていてもよい。
The processing target
処理対象リンクとして抽出されるリンクが複数ある場合、処理対象リンク抽出部300は、それぞれの処理対象リンクを1つの演算コアに割り当て、各演算コアにおいて各処理対象リンクの演算を実行させる。換言すると、演算コアと処理対象リンクとの関係は、1対1であってもよい。また、1対1には限られず、所定数の処理対象リンクを1つの演算コアで演算するようにしてもよい。すなわち、演算コアと処理対象リンクとの関係は、1対多であってもよい。
When there are a plurality of links to be extracted as process target links, the process target
コスト演算部302は、処理対象リンクのコストを演算する。コストは、後述する経路ネットワークDB 320にリンク情報とともに格納されている。例えば、全ての処理対象リンクに対して、1イテレーションごとにコストを1ずつ減少させていき、コストが0となった時点で当該処理対象リンクの処理を終了させ、処理済リンクへとその状態を更新する。リンクの到達ノードにおいて未処理リンクが存在する場合、当該未処理リンクを新たな処理対象リンクとしてコストの演算を継続する。
The
コストが0となったリンクは、GPUのデバイスメモリ内にそれまでに通過してきたリンク情報とともに記憶される。記憶される場所は、デバイスメモリではなく、GPU外のメモリであっても構わない。また、新たに設定された処理対象リンクに付属する情報として、現在までに通過してきたリンク情報を保持しておいてもよい。 Links with a cost of 0 are stored in the device memory of the GPU together with link information that has been passed so far. The location to be stored may be memory outside the GPU instead of the device memory. Further, as information attached to the newly set link to be processed, link information that has been passed so far may be held.
このコストの演算は、各処理対象リンクの演算を実行する演算コアごとに並列に処理される。並列処理において、例えば、1イテレーションごとに演算コア同士の同期をとることにより、同じタイミングにおけるリンクの進捗を各演算コアが保持していることとなり、例えば、コストが高くなるようなリンクの組み合わせの演算を行うことが排除される。同期処理は、必須ではなく、例えば、そもそも1ブロック内における所定の領域(例えば、CUDA(登録商標)の処理における1ワープ)内の演算コアの処理が同期されて行われている場合、明示的に同期をとらなくてもよい。 This cost calculation is processed in parallel for each calculation core that executes the calculation for each link to be processed. In parallel processing, for example, by synchronizing the processing cores for each iteration, each processing core holds the progress of the link at the same timing. Doing arithmetic is eliminated. Synchronous processing is not essential, for example, if the processing of the arithmetic cores in a predetermined area in one block (for example, one warp in CUDA (registered trademark) processing) is synchronized, explicit need not be synchronized with
なお、コスト演算部302がコストを演算し、コストが0になった場合に、当該処理対象リンクを更新するものとしたが、これには限られない。例えば、コスト演算部302が演算した結果に基づいて、処理対象リンク更新部として動作する処理対象リンク抽出部300が、処理対象リンクを処理済リンクへと更新し、当該処理済リンクの終点を始点とする未処理リンクを新たな処理対象リンクとして更新するようにしてもよい。このように、コストの演算と、処理対象リンクの更新処理は、別々のモジュールにより行われるようにしてもよい。
Although the
記憶部32は、経路ネットワークDB 320と、処理対象リンク記憶部322と、を備え、サーバ3が探索処理を行う場合に必要となるデータを格納する。
The
経路ネットワークDB 320は、経路の探索に必要な経路ネットワークデータを格納する経路ネットワークデータ記憶手段として機能する。また、探索中に必要となるデータとして、経過時間、探索元リンクのデータ等が格納されていてもよい。経路ネットワークデータとは、例えば、道路における基準点となるノードの情報と、当該ノードから近接するノードへと移動する場合のコストの情報とを紐付けるデータである。経路としては、道路に限られず、公共交通機関の経路情報であってもよい。この経路ネットワークDB 320は、アトミックアクセスされるようにしてもよい。
The
上記のコストとは、ノード間の距離に基づいて決定される値であるが、距離だけには拘わらず、道路の混み具合、坂道であるとか道路の幅であるとかの道路の態様、天候や交通事故により変化する道路の状況等により決定されてもよい。距離以外のパラメータについては、時刻で変化するものであってもよいし、時期、曜日で変化するものであってもよい。公共交通機関の場合には、その運賃を含めてコストを決定してもよい。コストは、ノード間においてユニーク、すなわち、逆方向のリンクに対して同じコストを設定してもよいし、ノード間においても進行方向に沿って別のもの、すなわち、逆方向のリンクに対しても同じコストであるとは限らないように設定してもよい。 The cost mentioned above is a value determined based on the distance between nodes. It may be determined according to road conditions that change due to a traffic accident. Parameters other than the distance may change with the time of day, or may change with the season or day of the week. In the case of public transportation, the cost may be determined including the fare. The cost may be unique between nodes, i.e. the same cost for reverse links, or different along the direction of travel between nodes, i.e. for reverse links. You may set so that it may not necessarily be the same cost.
処理対象リンク記憶部322は、処理対象リンクの情報を格納するバッファである。この処理対象リンク記憶部322は、リングバッファを備えて構成されていてもよい。複数の演算コアにより並列演算を行っている場合、このリングバッファは、アトミックアクセスされるようにしておいてもよい。このようにすることで、複数の演算コアから同じ処理対象リンクにアクセスされることを防止する。
The target
図2は、本実施形態に係るサーバ3のハードウェア構成の一例を示す図である。この図2に示すように、サーバ3は、ホスト36と、デバイス38とを備える。
FIG. 2 is a diagram showing an example of the hardware configuration of the
ホスト36は、CPU 360と、ホストメモリ362と、を備え、サーバ3の制御を行う装置である。例えば、ホスト36は、コンピュータ、ワークステーション等を備えて構成される。
The
CPU 360は、ホスト36及びデバイス38を制御するためのプロセッサである。一般的に使用されているCPUであればよく、種類や方式、クロック数等は特に問われるものではない。
ホストメモリ362は、プログラムの起動又はデータの保持のために用いられるデータを保持するようにホスト36に備えられているメモリである。例えば、RAM(Random Access Memory)を備えて構成されている。RAMの種類はどのようなものでもよい。
The
ホスト36には、この他に、ホスト36の機能を発揮させるための機能を有する多数のモジュール等が備えられていてもよい。また、ネットワークインタフェースを有し、端末装置2との通信を行う。さらに、入出力インタフェースを有し、例えば、ディスプレイ等へのデータの出力、キーボード等を介したユーザからの入力を受け付けるようにしておいてもよい。
In addition, the
デバイス38は、演算部380と、デバイスメモリ382と、を備え、ホスト36からの制御信号に基づいて並列演算処理を行う。デバイス38は、例えば、GPUを備えて構成される。図2において、ホスト36と、デバイス38とは別の構成として示されているが、これには限られず、ホスト36内にデバイス38が内蔵されている構成であってもよい。
The
演算部380は、多数の演算コア384を備える。この演算コア384は、独立して演算を行うことが可能なコアであり、それぞれのコアにおいて演算を行うことが可能である。独立して演算を行うとは、デバイスメモリ382に記録されているプログラムに基づいて所定数の演算コア384が異なるデータに対して同じ演算処理を行うことを含む。
The
所定数の演算コア384で、1ブロックを構成するようにしてもよい。また、1つの演算コア384における単位を1スレッドと呼ぶ。すなわち、所定数のスレッドの処理を1ブロックで同じタイミングで並列に行うことが可能である。さらに、複数ブロックにおいて同じ処理を同じタイミングで並列に行うようにしてもよい。
A predetermined number of
デバイスメモリ382は、演算コア384から参照することのできるメモリである。このデバイスメモリ382はさらに、全ての演算コア384からアクセス可能である大容量メモリと、例えば、1ブロック単位における演算コア384から高速アクセス可能であるメモリとを備えていてもよい。
The
デバイスメモリ382と、ホストメモリ362は、例えば、PCIe(PCI(Peripheral Component Interconnect) Express)を介して接続される。演算コア384を制御するためのプログラムは、ホスト36からPCIeを介してデバイスメモリ382へと転送され、デバイス38に備えられているコンパイラ等によりコンパイルされ、演算コア384が制御されてもよい。別の例としては、バイナリファイルとしてプログラムが転送され、演算コア384を制御するようにしてもよい。
The
図3は、本実施形態に係る情報処理システム1の動作を示すフローチャートである。この図3を用いて、情報処理システム1の経路探索の動作について説明する。
FIG. 3 is a flow chart showing the operation of the
まず、サーバ3は、通信部34を介して出発地、目的地に関する情報を取得し、経路探索の始点、終点として出発地、目的地を設定する(ステップS100)。
First, the
次に、設定された出発地から処理対象リンクを抽出する(ステップS102)。これらのステップS100及びステップS102の処理は、例えば、サーバ3のホスト36で処理対象リンクの抽出が実行され、デバイス38の処理対象リンク記憶部322に初期の処理対象リンクを転送するようにしてもよい。別の例として、デバイス38へリンクの始点を転送し、デバイス38において処理対象リンクを抽出し、処理対象リンク記憶部322へと記憶するようにしてもよい。このように、処理対象リンク抽出部300は、ホスト36及びデバイス38の少なくとも1つに備えられていればよく、抽出したリンクを処理対象リンク記憶部322へと格納する。
Next, a link to be processed is extracted from the set departure point (step S102). The processes of steps S100 and S102 can be executed even if, for example, the
次に、コスト演算部302は、1又は複数の抽出された処理対象リンクのそれぞれについて、設定されているコストをデクリメントする(ステップS104)。処理対象リンクのコストは、経路ネットワークDB 320に格納されているデータに基づいて取得される。このコスト演算部302は、例えば、1つの演算コア384内に1つ備えられ、1スレッドにおいて1つの処理対象リンクについてのコスト演算が行われる。
Next, the
例えば、デバイスとしてGPUを用いる場合、この演算コア384は、数千から数万コアとなり、すなわち、数千から数万スレッドにおいて数千から数万個の処理対象リンクについて個々に同じタイミングでコストの演算を行うことが可能となる。上述したように、1スレッドで演算を行うリンクは、1つには限られず、複数の処理対象リンクについての演算を1スレッドで行うようにしてもよい。
For example, when a GPU is used as a device, the
次に、コスト演算部302は、処理対象リンクのコストが0になったか否かを判断する(ステップS106)。このコストが0になったか否かの判断についても各々の演算コア384について実行され、同じタイミングで複数の処理対象リンクについて判断が実行される。
Next, the
処理対象リンクのコストが0であるスレッドを備える演算コア384において(ステップS106:YES)、コスト演算部302は、コストが0となった処理対象リンクを処理済リンクとして更新する(ステップS108)。処理済リンクとなった処理対象リンクは、処理対象リンク記憶部322から消去される。消去される代わりに、バッファにおいて空きリンクであることを示すインデクスをスレッドに共通して持たせるようにしてもよい。これは、上述したように、コスト演算部302ではなく、処理対象リンク更新部として機能する処理対象リンク抽出部300が実行してもよい。
In the
続いて、処理済リンクの終点ノードを始点ノードとして有する未処理リンクを経路ネットワークDB 320から抽出し、処理対象リンクとして更新する(ステップS110)。新たに抽出された処理対象リンクは、その情報が処理対象リンク記憶部322へと記憶される。記憶する際、アトミックアクセスを行うことにより、他のスレッド、すなわち、他の演算コア384とは排他的なアクセスをすることが可能となり、重複したバッファ(アドレス)への書き込みを防止することができる。
Subsequently, an unprocessed link having the end node of the processed link as the start node is extracted from the
あらたに抽出された処理対象リンクが複数である場合、処理対象リンクの演算を行っていない演算コア384のスレッドにおいて当該処理対象リンクの演算を行うようにしてもよい。複数の新たな処理対象リンクのうち1つは、引き続き処理済リンクとなった処理対象リンクの演算をしていた演算コア384が演算を行うようにしてもよい。別の例として、処理済リンクとなった処理対象リンクの演算をしていた演算コア384が複数の新たな処理対象リンクの演算を行うようにしてもよい。
When there are a plurality of newly extracted links to be processed, the threads of the
処理済リンクの情報、又は、新たに抽出された処理対象リンクには、抽出の基点となった処理済リンクの情報を記憶しておいてもよい。記憶された処理済リンクの情報は、記憶部32に格納されてもよい。このように、処理済リンク、又は、新たな処理対象リンクの情報に、当該リンクに到達するまでに辿ってきたリンクの情報を持たせることにより、当該リンクがどのようなリンク、すなわち、どのような経路を辿ってきたのかが格納される。
The processed link information or the newly extracted link to be processed may store information of the processed link used as a base point for extraction. The stored processed link information may be stored in the
次に、演算コア384同士の同期を行う(ステップS112)。この同期処理により、コストが0でないと判断されたスレッド(ステップS106:NO)、及び、コストが0となり、処理対象リンクの更新を実行したスレッドが同期され、次の処理を同じタイミングで行うことが可能となる。
Next, synchronization between the
同期したのち、目的地に到達したリンクが存在するか否かが判断される(ステップS114)。目的地に到達したリンクが存在しない場合(ステップS114:NO)、各演算コア384においてステップS104からステップS112までの処理が繰り返される。このように、コストを-1する処理からの一連の処理を1イテレーションとして各スレッドにおいてループ処理が実行される。
After synchronization, it is determined whether or not there is a link that reaches the destination (step S114). If there is no link that reaches the destination (step S114: NO), each
一方、目的地に到達したリンクが存在する場合(ステップS114:YES)、経路取得部304は、目的地に到達したリンクの情報を取得する(ステップS116)。
On the other hand, if there is a link reaching the destination (step S114: YES), the
次に、経路取得部304は、格納されたリンクの経路情報から、目的地に到達したリンクが、目的地に到達するまでに経由してきたリンクの情報を取得することが可能となる(ステップS118)。
Next, the
次に、経路取得部304は、取得した経路を出力して処理を終了する(ステップS120)。このように、複数の演算コア384においてコストの計算を各々実行し、リンク情報を格納しながらリンクを更新することにより、コストを加味した最適な経路を取得することが可能となる。
Next, the
ステップS104からステップS114の処理は、上述したように、複数の演算コア384により、すなわち、複数のスレッドにより同じタイミングで行われる。ここで、同じタイミングとは、正確に同時である必要は無く、ある程度の時間的なずれが生じていても構わない。同期処理については、1ブロック内にある複数スレッドについては、実行されるが、ブロック同士の同期が行われているか否かは問わない。
The processing from step S104 to step S114 is performed at the same timing by a plurality of
ブロック同士について同期が行われない場合、例えば、所定の回数のステップS104からステップS114の処理が行われた後に、デバイスでの演算を中断し、いったんホストへと処理を戻すことにより、処理対象リンク全体としての同期をとるようにしてもよい。この場合、演算途中のリンクについては、記憶部32にその状態、すなわち、処理対象リンクの中断タイミングにおける残りコスト等を記憶するようにしてもよい。
If the blocks are not synchronized, for example, after the processing from step S104 to step S114 is performed a predetermined number of times, the processing target link Synchronization may be performed as a whole. In this case, the state of the link in the middle of the calculation, that is, the remaining cost at the interruption timing of the link to be processed may be stored in the
このように残りのコストを記憶しておくことにより、再度ホスト36がデバイス38における演算処理の制御を実行する際に、スレッドを再配置することが可能となる。スレッドの再配置を行うことにより、例えば、近くにある処理対象リンク同士を同じブロック内に配置することも可能となり、近くにある処理対象リンク同士について、同期を行える状態で処理を行うことが可能となる。
By storing the remaining costs in this way, it becomes possible to rearrange the threads when the
探索において最適経路の他に複数の候補となる経路を出力する場合、目的地に到達するリンクについて、目的地の1つ前のノードまでの経路を再度探索するようにしてもよい。 When outputting a plurality of candidate routes in addition to the optimum route in the search, for the link reaching the destination, the route to the node immediately before the destination may be searched again.
別の例として、ある処理対象リンクのコストが0となり、既に当該リンクの終点のノードを終点とする処理済リンクが存在する場合に、そのコストの差を計算し、所定値以内であれば当該リンクを候補リンクとして情報を格納しておくようにしてもよい。すなわち、処理済リンクにおいては、所定数のイテレーション分コストの計算を継続して行っておき、この情報を元に最適経路以外の経路候補の情報を取得するようにしてもよい。 As another example, if the cost of a certain link to be processed is 0 and there is already a processed link whose end point is the end node of that link, the cost difference is calculated, and if it is within a predetermined value, the Information may be stored with links as candidate links. That is, in the processed link, the calculation of the cost for a predetermined number of iterations may be continued, and information on route candidates other than the optimum route may be acquired based on this information.
図4は、本実施形態に係る情報処理システム1の経路探索の様子を示す図である。○はノードを表し、中に記載されているアルファベットをノードの識別子とする。ノード間を繋ぐ線分がリンクであり、リンクの先に記載されている数値がコストを表す。例えば、図4(a)のような経路の場合、AからBのリンクは、そのコストは2である。BからCのリンクは、コストは2であり、逆向きのCからBへのリンクは、コストが3であることをしめす。この経路において出発地Aから目的地Hまでの経路を探索する場合について説明する。以下、AからBへのリンクを、AB等と表す。この図4においては、ノードHに到達するリンク以外の全てにコストが設定されているがこれには限られない。例えば、一方通行の道路を含むリンクである場合、コストを無限大(又は、きわめて大きい数値)にして、リンクを設定しないようにしてもよい。
FIG. 4 is a diagram showing how the
まず、出発地Aと目的地Hの情報が設定される。経路ネットワークDB 320から、Aを始点とするリンク、AB、AC、ADが抽出される。
First, information on the departure point A and the destination H is set. From the
AB、AC、ADに関するコストの演算は、それぞれ別の演算コア384に割り当てられる。各イテレーションでは、コストが1ずつ減算される。概念的に説明すると、AからB、C、Dにそれぞれ同じタイミングで出発した仮想的な車両等が存在し、1イテレーションごとに、1のコスト分リンクを進むと言う処理で置き換えられる。
The cost calculations for AB, AC, and AD are assigned to
2イテレーション後、図4(b)に示すように、ABを進んでいた車両がBへと到達する。いっぽう、AC、ADを進んでいた車両は、それぞれのリンクを2進んだ位置に存在し、C、Dには到着していない状態である。 After two iterations, the vehicle traveling on AB reaches B as shown in FIG. 4(b). On the other hand, the vehicle traveling on AC and AD is in a position two links ahead, and has not arrived at C and D yet.
ABのリンクの処理を行っていた演算コア384は、Bにおいて処理対象リンクの更新を行う。ABのリンクは、処理対象リンクから、処理済リンクへと更新される。一方で、未処理リンクBA、BC、BEが新たな処理対象リンクとして更新され、それぞれ別の演算コア384において続く処理が行われる。また、このタイミングでBに到達しているリンクは1つであるので、Bへの最適な経路として、ABが記憶される。
The
続いて、1イテレーション後、ACを辿っていた車両がCへと到達し、ACが処理済リンク、CA、CB、CD、CE、CFが新たな処理対象リンクとして更新され、Cへの最適経路は、ACが記憶される。 Subsequently, after one iteration, the vehicle following AC reaches C, AC is updated as a processed link, CA, CB, CD, CE, and CF are updated as new links to be processed, and the optimal route to C , AC is stored.
図4(c)は、さらに2イテレーション後の様子を示す図である。破線で示すリンクは、既に他のリンクが到達したノードに到達したリンクであり、到達したタイミングでは、到達ノードにおいて全てのリンクが処理対象リンク又は処理済リンクとなっているリンクを示す。細線の矢印は、処理済リンクを示す。 FIG. 4(c) is a diagram showing the state after two more iterations. A link indicated by a dashed line is a link that has reached a node that has already been reached by another link, and indicates a link that, at the time of arrival, is a link to be processed or a link that has already been processed at the destination node. Thin arrows indicate processed links.
ABを走っていた車両等は、BCのリンクを介してCに到達、及び、BEのリンク上の残りコスト1の箇所に存在する。Cのノードにおいては、ACのリンクを辿った車両が既に存在しているため、Cにおける未処理リンクは、既に存在せず、AB、BCを辿ってきたリンクは、処理対象リンクを処理済リンクとした後、新たな処理対象リンクを更新せずに、処理を終了する。BからBAを辿ったリンクは、Aに到達するが、Aにおけるリンクも同様に全てが処理済リンクとなっているため、処理を終了する。 A vehicle or the like running on AB reaches C via the BC link and is present at a remaining cost of 1 on the BE link. At node C, there is already a vehicle following the link AC, so the unprocessed link at C no longer exists, and the links following AB and BC are the processed links. After that, the process ends without updating the new link to be processed. A link following BA from B reaches A, but since all the links in A are similarly processed links, the process ends.
ACのリンクを辿っていた車両等は、まず、初期状態から3イテレーション後にCに到達する。そこから2イテレーションが経過し、CA、CBのリンクは、それぞれ残りコストが1の箇所、CFのリンクは、残りコストが2の箇所まで進行する。CEのリンクを進んでいた車両等は、Eに到達し、この時点でEに到達している車両等が存在しないため、Eに到達するリンクとして、AC、CEを辿るリンクが記憶される。そして、CEのリンクを処理済リンクとし、EB、EHのリンクを新たな処理対象リンクとして更新する。 A vehicle following the link of AC first reaches C after three iterations from the initial state. After two iterations have passed, the CA and CB links progress to a point where the remaining cost is 1, and the CF link progresses to a point where the remaining cost is 2. Vehicles, etc. that have been proceeding on the link of CE have reached E, and since there is no vehicle, etc. that has reached E at this point, a link following AC and CE is stored as a link to reach E. Then, the CE link is updated as a processed link, and the EB and EH links are updated as new links to be processed.
CDのリンクを進行していた車両等は、Dに到着後、Dにおいて処理済リンクに更新され、さらに、DA、DC、DF、DGが新たな処理対象リンクとして更新される。また、Dに到達する最適な経路として、AC、CDを辿る経路が記憶される。経路更新後、1イテレーションの演算がされているため、各リンクを進行する車両は、Dから1コスト分遠ざかった位置に存在する。 After arriving at D, the vehicle or the like traveling on the CD link is updated to a processed link at D, and DA, DC, DF, and DG are updated as new links to be processed. Also, as the optimum route to reach D, the route following AC and CD is stored. Since one iteration of computation is performed after the route is updated, the vehicle traveling on each link is located at a distance from D by one cost.
このような処理が、目的地Hに到達するリンクが発生するまで繰り返し行われる。図4(a)のような経路ネットワークの場合、上記の処理を繰り返すことにより、AC、CE、EHのリンクを辿る経路が最適経路として取得され、出力される。 Such processing is repeated until a link reaching the destination H is generated. In the case of a route network as shown in FIG. 4A, by repeating the above processing, a route following the links of AC, CE, and EH is acquired as an optimum route and output.
デバイス38からホスト36への出力、及び、サーバ3から端末装置2への出力は、リンク情報であってもよいが、端末装置2からユーザへの出力は、これらのリンク情報を、例えば、地図上の経路情報へと変換して出力してもよい。ユーザは、例えば、ディスプレイに出力された地図上の情報から最適経路を取得することが可能となる。
The output from the
このように、並列にコストの処理を行い、リンクを未処理リンク、処理対象リンク及び処理済リンクへと変更することにより、演算を行う上でボトルネックとなりがちな重い処理であるソートの処理を省くことが可能となる。すなわち、並列処理を行わないダイクストラ法のように各処理対象リンクのコストのソートを行い、いずれの処理対象リンクが最適経路を構成するかを探索するのではなく、1イテレーションごとにコストを並列演算によりデクリメントすることで、同じタイミングでの各経路における車の位置をシミュレートすることが可能となり比較的重い処理となるソート処理を省略することが可能となる。なお、上述しにおいてはデクリメントにより処理を行ったが、イテレーションごとにインクリメントされるパラメータを備え、当該パラメータと、リンクのコストとを比較するようにしても同じ効果を得ることが可能である。すなわち、デクリメントで処理を行ってもよいし、インクリメントで処理を行ってもよい。 In this way, by performing cost processing in parallel and changing links into unprocessed links, processed links, and processed links, sort processing, which is a heavy process that tends to become a bottleneck in computation, can be reduced. can be omitted. In other words, unlike Dijkstra's algorithm, which does not perform parallel processing, the cost of each target link is sorted and the cost is calculated in parallel for each iteration instead of searching for which link to be processed constitutes the optimal route. By decrementing by , it is possible to simulate the position of the car on each route at the same timing, and it is possible to omit the sorting process, which is a relatively heavy process. In the above description, processing is performed by decrementing, but the same effect can be obtained by providing a parameter that is incremented for each iteration and comparing the parameter with the cost of the link. That is, the processing may be performed by decrementing or by incrementing.
次に、メモリ管理について説明する。図5は、図4における経路の場合の処理対象リンクの情報のメモリ配置を概念的に示す図である。上述したように、本実施形態において、処理対象リンク記憶部322として、リングバッファを用いてもよい。
Next, memory management will be described. FIG. 5 is a diagram conceptually showing the memory allocation of information on links to be processed in the case of the route in FIG. As described above, in this embodiment, a ring buffer may be used as the target
初期状態において、図5(a)にしめすように、リングバッファには、何も記録されていない、又は、どのような数値が記録されていてもよい。 In the initial state, as shown in FIG. 5A, nothing is recorded in the ring buffer, or any numerical value may be recorded.
出発地がAと決まり、処理対象リンクの初期値がAB、AC、ADであると抽出されると、図5(b)に示すように、AB、AC、AD用のバッファが割り当てられる。なお、説明のためにリンクは記号を用いて示しているが、これらのリンクはユニークに割り当てられたIDを有してもよく、当該IDを用いて管理するようにしてもよい。これは、経路ネットワークDB 320においても同様である。この際、それぞれのタイミングにおいて、どのバッファまでが用いられているかを併せて記憶しておく。例えば、図5(b)に示す矢印の位置のアドレスを共有して記憶するようにする。
When the departure point is determined as A and the initial values of the links to be processed are extracted as AB, AC, and AD, buffers for AB, AC, and AD are allocated as shown in FIG. 5(b). For the purpose of explanation, the links are shown using symbols, but these links may have IDs assigned uniquely, and may be managed using the IDs. This is the same for the
1イテレーション後の同期後には、図5(c)に示すように各バッファに記憶されている数値が1ずつ減少される。各数値の減算処理は、それぞれのリンクの処理を行う演算コア384により実行される。
After synchronization after one iteration, the numerical value stored in each buffer is decremented by one as shown in FIG. 5(c). Subtraction processing of each numerical value is executed by the
さらに1イテレーション後の同期後には、図5(d)に示すようにバッファが使用される。ADに続くバッファに、BA、BC、BDの値が格納され、矢印は、BDのバッファの後ろ側のアドレスを示す。なお、Bから派生したリンクは、図のようにBA、BC、BDの順番に割り当てられている必要は無く、メモリの取得処理の早かったスレッドの順番に割り当てられてもよい。複数のスレッドが重複したアドレスを取得しないように、アトミックアクセス、すなわち、アトミック処理によるメモリ領域の確保をしてもよい。 Further, after synchronization after one iteration, the buffer is used as shown in FIG. 5(d). The buffer following AD stores the values of BA, BC, and BD, and the arrow indicates the address behind the buffer of BD. Note that the links derived from B need not be assigned in the order of BA, BC, and BD as shown in the figure, and may be assigned in the order of the thread with the earliest memory acquisition processing. A memory area may be secured by atomic access, that is, atomic processing so that multiple threads do not obtain duplicate addresses.
次の1イテレーション後の同期後には、図5(e)に示すようにバッファが使用される。この際、ABに関する数値が0のままであるが、これには限られず、-1となるように処理してもよい。処理済リンクとしてスレッドを破棄し、又は、破棄後さらに新たな処理対象リンクのためのスレッドとして使用する場合は、図5(e)にしめすように、ABのコストは0のままとなる。 After synchronization after the next one iteration, the buffer is used as shown in FIG. 5(e). At this time, the numerical value related to AB remains 0, but is not limited to this, and may be processed to become -1. If a thread is discarded as a processed link, or if it is used as a thread for a new link to be processed after being discarded, the cost of AB remains 0 as shown in FIG. 5(e).
最後のバッファまで到達した際には、ABのバッファから順に再利用される。次の1イテレーション後には、BCについてのバッファが、AD、BAについてのバッファよりも先に0となるが、このような場合においても、次の周回のバッファの取得においては、先頭から順番にバッファを確保する。なお、上述したようにデクリメントでは無く、インクリメントで処理をしてもよい。インクリメントの場合、例えば、コストをマイナス値で表し、インクリメントして0になるタイミングで処理済リンクとするようにしてもよいし、上述したようにパラメータを用意し、インクリメントされた値とリンクのコスト値とを比較するようにしてもよい。 When the last buffer is reached, the AB buffers are reused in order. After the next one iteration, the buffer for BC becomes 0 before the buffer for AD and BA. ensure Incidentally, as described above, the processing may be performed by increment instead of decrement. In the case of increment, for example, the cost may be represented by a negative value, and the link may be processed when the cost is incremented to 0. Alternatively, the parameter may be prepared as described above, and the incremented value and the link cost You may make it compare with a value.
このように、バッファを処理することにより、バッファの再利用を、スレッド内でのメモリの演算等において複雑な処理を行うことなく、効率よく行うことが可能となる。リングバッファの容量を、処理対象となるリンクの最大値よりも大きくとる、すなわち、現在までに処理対象となったリンク数から、処理済となったリンク数を引いた数よりも十分大きくとることにより、リングバッファにおいて、使用中のリンクとかぶることなく次の処理対象リンクのバッファを割り当てることが可能となる。 By processing the buffer in this way, it is possible to efficiently reuse the buffer without performing complicated processing such as memory calculation within the thread. Set the capacity of the ring buffer to be larger than the maximum number of links to be processed, that is, to be sufficiently larger than the number of links that have been processed so far minus the number of links that have been processed. Therefore, in the ring buffer, it is possible to allocate the buffer for the next link to be processed without overlapping with the link in use.
処理対象リンクをリングバッファに格納できるようにするために、処理対象リンクとなるリンクの制限を加える、所謂枝切りをしてもよい。 In order to store the link to be processed in the ring buffer, the link to be processed may be restricted, that is, branch pruning may be performed.
枝切りの第1例として、目的地と反対側のリンクに関して処理対象リンクとして更新する制限を加えてもよい。例えば、出発地から目的地までの方向及び距離を取得した後、出発地から目的地までの方向と、出発地から見て逆方向に進むリンクについては、出発地から目的地までの距離の1/10以上離れた場合には、処理対象リンクとして抽出しないようにしてもよい。一例として、大阪から東京まで向かう経路を取得する場合、大阪から東京方面と逆方向に60kmを超えてしまうようなリンクを処理対象リンクとして取得しないようにする。 As a first example of pruning, a restriction may be added to update the link on the opposite side of the destination as the link to be processed. For example, after obtaining the direction and distance from the starting point to the destination, for a link that goes in the opposite direction from the starting point to the destination, 1 of the distance from the starting point to the destination If the distance is /10 or more, it may not be extracted as a link to be processed. As an example, when obtaining a route from Osaka to Tokyo, a link exceeding 60 km in the opposite direction from Osaka to Tokyo is not obtained as a link to be processed.
なお、割合ではなく、所定の距離、例えば、20km等としてもよい。この場合、大阪から東京都は逆方向に20kmを超えるようなリンクは、処理対象リンクとしないようにする。 A predetermined distance, for example, 20 km, may be used instead of the ratio. In this case, a link exceeding 20 km in the opposite direction from Osaka to Tokyo is not treated as a link to be processed.
この枝切りは、出発地と目的地までの距離に基づいて行わないようにしてもよい。例えば、出発地と目的地の距離が10kmである場合に、1km逆走しても早く到着する場合がある。このような場合に処理対象リンクの制限をしない場合に、例えば、出発地と目的地の距離が20km程である場合には、距離に基づいた枝切りをしないように設定してもよい。この他、所定の距離までは、固定の距離を超えると枝切りをするが、当該所定の距離を超えた場合には、割合に基づいた枝切りをするようにしてもよい。 This pruning may not be done based on the distance between the origin and destination. For example, when the distance between the starting point and the destination is 10 km, even if the vehicle travels 1 km in the opposite direction, it may arrive early. In such a case, if the target link is not restricted, for example, if the distance between the departure point and the destination is about 20 km, it may be set so that branch pruning is not performed based on the distance. Alternatively, branches may be pruned up to a predetermined distance when the fixed distance is exceeded, but when the predetermined distance is exceeded, branch pruning may be performed based on the ratio.
枝切りの第2例として、リンクを道の広さに基づいて分類し、出発地及び目的地の付近以外では、例えば、両側1車線ずつも無いような道路(以下、未保証道とよぶ)を除外するように処理対象リンクとするようにしてもよい。未保証道は、両側1車線ずつ無いような道路には限られず、例えば、住宅街を通る道路、又は、道の広さが5m以下等、別の指標を用いてもよい。このように未保証道を設定することにより、出発地及び目的地の付近、例えば、出発地及び目的地のそれぞれ1kmの範囲外においては、未保証道を処理対象リンクから外すようにリンクの抽出を行ってもよい。 As a second example of pruning, links are classified based on road width, and roads that do not have, for example, one lane on each side other than the vicinity of the departure point and destination (hereinafter referred to as unguaranteed roads) may be set as the link to be processed so as to exclude the . An unguaranteed road is not limited to a road that does not have one lane on each side. For example, a road passing through a residential area, or a road with a width of 5 m or less, or another index may be used. By setting unguaranteed roads in this way, links are extracted so as to exclude unguaranteed roads from the links to be processed in the vicinity of the departure point and the destination, for example, outside the range of 1 km from the departure point and the destination. may be performed.
枝切りの第3例として、リンクの存在する領域を、例えば、都市部、郊外部として分割し、都市部、郊外部で別の指標を用いてリンクの拡散をするようにしてもよい。例えば、都市部においては未保証道も処理対象リンクとして抽出するが、郊外部においては、未保証道は処理対象リンクとして抽出しないようにしてもよい。 As a third example of pruning, an area in which links exist may be divided into, for example, an urban area and a suburban area, and links may be diffused using different indexes for the urban area and the suburban area. For example, in urban areas, non-guaranteed roads are extracted as links to be processed, but in suburban areas, non-guaranteed roads may not be extracted as links to be processed.
枝切りの第4例として、現在処理対象リンクの保存領域として用いているバッファ数が所定の数を超えるような場合に、上述した第1例から第3例のような制限を加えるようにしてもよい。 As a fourth example of pruning, when the number of buffers currently used as the storage area for the link to be processed exceeds a predetermined number, restrictions such as those in the first to third examples are added. good too.
これらのように、リングバッファの容量を十分大きくとることに加え、処理対象リンクとして抽出されるリンクに制限を加えるようにしてもよい。 As described above, in addition to securing a sufficiently large capacity of the ring buffer, it is also possible to limit the links extracted as the links to be processed.
もっとも、リングバッファを用いることなく、メモリにおいてメモリの使用状況を、例えば、処理済リンクとなったリンクに関するメモリにコストとして使用しない数値(例えば、2147483647)の値を代入する等して、空きメモリであることを管理するテーブルを記憶部32に備えておき、当該テーブルを参照することにより、あいているアドレスに処理対象リンクを記憶するようにしてもよい。
However, without using a ring buffer, the memory usage status in the memory can be checked by, for example, substituting a numerical value (eg, 2147483647) that is not used as a cost in the memory related to the link that has become a processed link. The
以上のように、本実施形態に係る情報処理システム1は、マルチコアプロセッサを備えるアクセラレータ、例えば、GPGPUを用いるGPUにおいて、並列演算を行うことにより、経路探索の時間を逐次処理を行った場合と比較して大きく減少することを可能とする。この実施形態のように、マルチコアプロセッサを用いることによる並列演算を行えるようにすることにより、サーバにおける処理を軽くするとともに、複数のユーザからの処理を高速に対処することが可能となる。
As described above, the
なお、上述した実施形態においては、コストが0になるごとに処理対象リンクを抽出するようにしたが、それには限られない。例えば、現在の処理対象リンクのコストが0になるまで演算処理を行い、まとめて次の処理対象リンクを抽出するようにしてもよい。この際、処理済リンクとして更新する処理対象リンクの情報に基づいて、新たな処理対象リンクに最適な経路を記憶させ、目的地までの最適経路を取得するようにしてもよい。このようにコストではなくリンクで処理を行うと、リンクの拡散ごとにスレッドを管理することが可能となるため、前述した実施形態と比較して、リンクの管理をより簡易なものへと変更することが可能となる。 In the above-described embodiment, the link to be processed is extracted each time the cost becomes 0, but the present invention is not limited to this. For example, arithmetic processing may be performed until the cost of the current link to be processed becomes 0, and the next link to be processed may be extracted collectively. At this time, based on the information of the link to be processed that is updated as the processed link, the optimal route to the new link to be processed may be stored, and the optimal route to the destination may be acquired. When processing is performed by link instead of cost in this way, it is possible to manage threads for each spread of links, so link management is changed to a simpler one compared to the above-described embodiment. becomes possible.
上述した実施形態で説明した情報処理システムの少なくとも一部は、ハードウェアで構成してもよいし、ソフトウェアで構成してもよい。ソフトウェアで構成する場合には、情報処理システムの少なくとも一部の機能を実現するプログラムをフレキシブルディスクやCD-ROM等の記録媒体に収納し、コンピュータに読み込ませて実行させてもよい。記録媒体は、磁気ディスクや光ディスク等着脱可能なものに限定されず、ハードディスク装置やメモリなど固定型の記録媒体でもよい。 At least part of the information processing system described in the above embodiments may be configured with hardware or software. When configured with software, a program that implements at least part of the functions of the information processing system may be stored in a recording medium such as a flexible disk or CD-ROM, and read and executed by a computer. The recording medium is not limited to a detachable one such as a magnetic disk or an optical disk, and may be a fixed recording medium such as a hard disk device or a memory.
また、情報処理システムの少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線(無線通信も含む)を介して頒布してもよい。さらに、同プログラムを暗号化したり、変調を掛けたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、或いは記録媒体に収納して頒布してもよい。 Also, a program that implements at least part of the functions of the information processing system may be distributed via a communication line (including wireless communication) such as the Internet. Furthermore, the program may be encrypted, modulated, or compressed, and distributed via a wired line such as the Internet or a wireless line, or stored in a recording medium and distributed.
さらに、1つ又は複数の情報処理装置によって情報処理システムを機能させてもよい。複数の情報処理装置を用いる場合、情報処理装置のうち1つをコンピュータとし、当該コンピュータが所定のプログラムを実行することにより情報処理システムの少なくとも1つの手段として機能が実現されてもよい。 Furthermore, the information processing system may be operated by one or more information processing devices. When a plurality of information processing apparatuses are used, one of the information processing apparatuses may be a computer, and the computer may implement a function as at least one means of the information processing system by executing a predetermined program.
上記の記載に基づいて、当業者であれば、本発明の追加や効果や種々の変形を想到できるかもしれないが、本発明の態様は、上述した個々の実施形態に限定されるものではない。特許請求の範囲に規定された内容及びその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲で種々の追加、変更及び部分的削除が可能である。 Additions, effects, and various modifications of the present invention may be conceived by those skilled in the art based on the above description, but aspects of the present invention are not limited to the individual embodiments described above. . Various additions, changes, and partial deletions are possible without departing from the conceptual idea and spirit of the present invention derived from the content defined in the claims and equivalents thereof.
例えば、上記において、経路探索の範囲を出発地、目的地としているが、これには限られるものではない。例えば、出発地及び目的地までの間に存在する第1地点及び第2地点の経路の探索を上記の実施形態のように求めてもよい。具体的には、出発地、目的地には限られず、任意の第1地点から第2地点までの経路の探索を上記の実施形態のように求めるようにしてもよい。このようにすることにより、区間的に詳細な経路探索を行うことも可能である。すなわち、上述した説明において、出発地を任意の第1地点と、目的地を任意の第2地点と置き換えて実現することも可能である。 For example, in the above description, the range of route search is defined as the starting point and the destination, but the range is not limited to this. For example, a route search for the first point and the second point existing between the departure point and the destination may be obtained as in the above embodiment. Specifically, a route search from an arbitrary first point to a second point may be obtained as in the above-described embodiment, without being limited to the starting point and the destination. By doing so, it is also possible to perform a detailed route search section by section. That is, in the above description, it is also possible to replace the starting point with an arbitrary first point and the destination with an arbitrary second point.
さらに、上記においては、サーバ側のGPUで経路探索を行うものとしたが、これには限られない。すなわち、端末装置2にGPUが搭載されており、この端末装置2のGPUを用いて経路探索をするようにしてもよい。このような構成である場合、経路探索を行うタイミングにおいてサーバ3及びネットワーク4は、必須の構成ではなく、図1に示すサーバ3の構成要素のうち経路探索に必要なものが、端末装置2に備えられる構成であってもよい。
Furthermore, in the above description, the GPU on the server side performs the route search, but the present invention is not limited to this. That is, a GPU may be installed in the
1 情報処理システム
2 端末装置
3 サーバ
30 制御部
300 処理対象リンク抽出部
302 コスト演算部
304 経路取得部
32 記憶部
320 経路ネットワークDB
322 処理対象リンク記憶部
34 通信部
36 ホスト
360 CPU
362 ホストメモリ
38 デバイス
380 演算部
382 デバイスメモリ
384 演算コア
1
322 target
362
Claims (8)
経路ネットワークデータを記憶する、経路ネットワークデータ記憶手段と、
処理対象となるリンクである処理対象リンクを記憶する、処理対象リンク記憶手段と、
前記経路ネットワークデータに基づいて、第1地点における1又は複数の処理対象リンクを抽出する、処理対象リンク抽出手段と、
1又は複数の前記処理対象リンクについてそれぞれのコストを並列演算する、コスト演算手段と、
前記コストの演算が終了した前記処理対象リンクを処理済リンクとして更新するとともに、前記処理済リンクに接続する1又は複数の未処理リンクを前記処理対象リンクとして新たに設定する、処理対象リンク更新手段と、
それぞれの前記処理済リンクに対して算出されたコストに基づいて前記第1地点から第2地点までの経路を取得する、経路取得手段と、
を備え、
前記GPU上に、少なくとも、前記経路ネットワークデータ記憶手段及び前記コスト演算手段、を備え、
前記リンクは、方向情報を備え、同一の2地点を接続する前記リンクは、双方向で異なるコストを有することができる、
情報処理システム。 A GPU (Graphical Processing Unit) comprising a built-in device memory and a plurality of arithmetic cores that execute a plurality of arithmetic processes in parallel;
route network data storage means for storing route network data;
a processing target link storage means for storing a processing target link which is a link to be processed;
processing target link extracting means for extracting one or more processing target links at a first point based on the route network data;
cost calculation means for calculating costs in parallel for one or more of the links to be processed;
Processing target link updating means for updating the processing target link for which the cost calculation has been completed as a processing link, and newly setting one or a plurality of unprocessed links connected to the processing link as the processing target link. When,
route acquisition means for acquiring a route from the first point to the second point based on the cost calculated for each of the processed links;
with
comprising at least the route network data storage means and the cost calculation means on the GPU ;
The links comprise directional information, and the links connecting the same two points can have different costs in both directions.
Information processing system.
前記デバイスメモリ上に、前記経路ネットワークデータ記憶手段と、前記処理対象リンク記憶手段と、を備え、
前記演算コア上に、前記処理対象リンク抽出手段と、前記コスト演算手段と、前記処理対象リンク更新手段と、を備える、
請求項1乃至請求項3のいずれかに記載の情報処理システム。 The GPU is
comprising the route network data storage means and the processing target link storage means on the device memory;
The processing target link extraction means, the cost calculation means, and the processing target link update means are provided on the computing core,
The information processing system according to any one of claims 1 to 3.
経路ネットワークデータを記憶する、経路ネットワークデータ記憶手段、
処理対象となるリンクである処理対象リンクを記憶する、処理対象リンク記憶手段、
前記経路ネットワークデータに基づいて、第1地点における1又は複数の処理対象リンクを抽出する、処理対象リンク抽出手段、
1又は複数の前記処理対象リンクについてそれぞれのコストを並列演算する、コスト演算手段、
コストの演算が終了した前記処理対象リンクを処理済リンクとして更新するとともに、前記処理済リンクに接続する1又は複数の未処理リンクを前記処理対象リンクとして新たに設定する、処理対象リンク更新手段、
それぞれの前記処理済リンクに対して算出されたコストに基づいて前記第1地点から第2地点までの経路を取得する、経路取得手段、
として機能させ、
前記リンクは、方向情報を備え、同一の2地点を接続する前記リンクは、双方向で異なるコストを有することができる、
情報処理プログラム。 A computer comprising a GPU, comprising a built-in device memory and a plurality of arithmetic cores that execute a plurality of arithmetic processes in parallel,
path network data storage means for storing path network data;
processing target link storage means for storing a processing target link which is a link to be processed;
Processing target link extraction means for extracting one or more processing target links at a first point based on the route network data;
cost calculation means for calculating costs in parallel for one or more of the links to be processed;
processing target link updating means for updating the processing target link for which cost calculation has been completed as a processing link, and newly setting one or a plurality of unprocessed links connected to the processing link as the processing target link;
route acquisition means for acquiring a route from the first point to the second point based on the cost calculated for each of the processed links;
function as
The links comprise directional information, and the links connecting the same two points can have different costs in both directions.
Information processing program.
経路ネットワークデータを記憶する、経路ネットワークデータ記憶手段、
処理対象となるリンクである処理対象リンクを記憶する、処理対象リンク記憶手段、
前記経路ネットワークデータに基づいて、第1地点における1又は複数の処理対象リンクを抽出する、処理対象リンク抽出手段、
1又は複数の前記処理対象リンクについてそれぞれのコストを並列演算する、コスト演算手段、
コストの演算が終了した前記処理対象リンクを処理済リンクとして更新するとともに、前記処理済リンクに接続する1又は複数の未処理リンクを前記処理対象リンクとして新たに設定する、処理対象リンク更新手段、
それぞれの前記処理済リンクに対して算出されたコストに基づいて前記第1地点から第2地点までの経路を取得する、経路取得手段、
を備えた情報処理システムであって、前記リンクは、方向情報を備え、同一の2地点を接続する前記リンクは、双方向で異なるコストを有することができる、
情報処理システムを構成するために、上記手段の少なくとも1つを備える情報処理装置。 By a plurality of information processing devices communicatively connected, at least one of which includes a GPU,
path network data storage means for storing path network data;
processing target link storage means for storing a processing target link which is a link to be processed;
Processing target link extraction means for extracting one or more processing target links at a first point based on the route network data;
cost calculation means for calculating costs in parallel for one or more of the links to be processed;
processing target link updating means for updating the processing target link for which cost calculation has been completed as a processing link, and newly setting one or a plurality of unprocessed links connected to the processing link as the processing target link;
route acquisition means for acquiring a route from the first point to the second point based on the cost calculated for each of the processed links;
wherein the links comprise direction information, and the links connecting the same two points can have different costs in both directions.
An information processing apparatus comprising at least one of the means described above to constitute an information processing system.
経路ネットワークデータを記憶する、経路ネットワークデータ記憶手段、
処理対象となるリンクである処理対象リンクを記憶する、処理対象リンク記憶手段、
前記経路ネットワークデータに基づいて、第1地点における1又は複数の処理対象リンクを抽出する、処理対象リンク抽出手段、
1又は複数の前記処理対象リンクについてそれぞれのコストを並列演算する、コスト演算手段、
コストの演算が終了した前記処理対象リンクを処理済リンクとして更新するとともに、前記処理済リンクに接続する1又は複数の未処理リンクを前記処理対象リンクとして新たに設定する、処理対象リンク更新手段、
それぞれの前記処理済リンクに対して算出されたコストに基づいて前記第1地点から第2地点までの経路を取得する、経路取得手段、
としてさせるためのプログラムであって、前記リンクは、方向情報を備え、同一の2地点を接続する前記リンクは、双方向で異なるコストを有することができる、
情報処理プログラム。 a computer with a GPU,
path network data storage means for storing path network data;
processing target link storage means for storing a processing target link which is a link to be processed;
Processing target link extraction means for extracting one or more processing target links at a first point based on the route network data;
cost calculation means for calculating costs in parallel for one or more of the links to be processed;
processing target link updating means for updating the processing target link for which cost calculation has been completed as a processing link, and newly setting one or a plurality of unprocessed links connected to the processing link as the processing target link;
route acquisition means for acquiring a route from the first point to the second point based on the cost calculated for each of the processed links;
wherein the links comprise directional information, and the links connecting the same two points can have different costs in both directions,
Information processing program .
経路ネットワークデータ記憶手段が経路ネットワークデータを記憶するステップ、
処理対象リンク記憶手段が処理対象となるリンクである処理対象リンクを記憶するステップ、
処理対象リンク抽出手段が前記経路ネットワークデータに基づいて、第1地点における1又は複数の処理対象リンクを抽出するステップ、
コスト演算手段が1又は複数の前記処理対象リンクについてそれぞれのコストを並列演算するステップ、
処理対象リンク更新手段がコストの演算が終了した前記処理対象リンクを処理済リンクとして更新するとともに、前記処理済リンクに接続する1又は複数の未処理リンクを前記処理対象リンクとして新たに設定するステップ、
経路取得手段がそれぞれの前記処理済リンクに対して算出されたコストに基づいて前記第1地点から第2地点までの経路を取得するステップ、
を備え、
前記リンクは、方向情報を備え、同一の2地点を接続する前記リンクは、双方向で異なるコストを有することができる、
情報処理方法。 In an information processing device equipped with a GPU,
the path network data storage means storing the path network data;
a step of storing, in the processing target link storage means, a processing target link which is a link to be processed;
a step of extracting one or a plurality of links to be processed at a first point based on the route network data by the target link extracting means;
a step in which the cost computing means computes the respective costs in parallel for one or more of the links to be processed;
A step of updating the link to be processed, for which cost calculation has been completed, as a processed link, and newly setting one or a plurality of unprocessed links connected to the processed link as the link to be processed. ,
obtaining a route from the first point to the second point based on the cost calculated for each of the processed links;
with
The links comprise directional information, and the links connecting the same two points can have different costs in both directions.
Information processing methods.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018093090A JP7198473B2 (en) | 2018-05-14 | 2018-05-14 | Information processing system, information processing program, information processing apparatus, and information processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018093090A JP7198473B2 (en) | 2018-05-14 | 2018-05-14 | Information processing system, information processing program, information processing apparatus, and information processing method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019200058A JP2019200058A (en) | 2019-11-21 |
JP7198473B2 true JP7198473B2 (en) | 2023-01-04 |
Family
ID=68613056
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018093090A Active JP7198473B2 (en) | 2018-05-14 | 2018-05-14 | Information processing system, information processing program, information processing apparatus, and information processing method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7198473B2 (en) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003075177A (en) | 2001-09-03 | 2003-03-12 | Pioneer Electronic Corp | Communications navigation device and server device |
JP2007306442A (en) | 2006-05-15 | 2007-11-22 | Ip Flex Kk | System and method for searching shortest path between nodes included in network |
WO2012067210A1 (en) | 2010-11-19 | 2012-05-24 | 日本電気株式会社 | Pathway selection device, program and method |
JP2016116067A (en) | 2014-12-15 | 2016-06-23 | 株式会社ソニー・インタラクティブエンタテインメント | Information processing device, control method, and program |
WO2018025341A1 (en) | 2016-08-03 | 2018-02-08 | 三菱電機株式会社 | Road state diagnosis system, diagnosis information generation device, and diagnosis information generation method |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11325935A (en) * | 1998-05-11 | 1999-11-26 | Xanavi Informatics Corp | Course searching unit |
-
2018
- 2018-05-14 JP JP2018093090A patent/JP7198473B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003075177A (en) | 2001-09-03 | 2003-03-12 | Pioneer Electronic Corp | Communications navigation device and server device |
JP2007306442A (en) | 2006-05-15 | 2007-11-22 | Ip Flex Kk | System and method for searching shortest path between nodes included in network |
WO2012067210A1 (en) | 2010-11-19 | 2012-05-24 | 日本電気株式会社 | Pathway selection device, program and method |
JP2016116067A (en) | 2014-12-15 | 2016-06-23 | 株式会社ソニー・インタラクティブエンタテインメント | Information processing device, control method, and program |
WO2018025341A1 (en) | 2016-08-03 | 2018-02-08 | 三菱電機株式会社 | Road state diagnosis system, diagnosis information generation device, and diagnosis information generation method |
Also Published As
Publication number | Publication date |
---|---|
JP2019200058A (en) | 2019-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3152523B1 (en) | Customizable route planning using graphics processing unit | |
US10169402B2 (en) | Geographic space management | |
US9857196B2 (en) | Geographic space management | |
US9222791B2 (en) | Query scenarios for customizable route planning | |
Luo et al. | Finding time period-based most frequent path in big trajectory data | |
US8364717B2 (en) | Hardware accelerated shortest path computation | |
US8831875B2 (en) | Solving traffic congestion using vehicle grouping | |
Geisberger et al. | Efficient routing in road networks with turn costs | |
US8681635B2 (en) | Computer-implemented systems and methods for planning a route | |
US9875247B2 (en) | Geographic space management | |
US20130231862A1 (en) | Customizable route planning | |
Delling et al. | Faster batched shortest paths in road networks | |
US11466996B2 (en) | Pathfinding through a road network with turn complexities | |
JP5919950B2 (en) | Route search method, route search device, and program | |
US8214527B2 (en) | Fast algorithm for peer-to-peer shortest path problem | |
JP2011007713A (en) | Multi-pairs shortest path finding method and system | |
US20120310523A1 (en) | Customizable route planning | |
US20150088417A1 (en) | System and Method for Dynamic Path Optimization | |
EP2691740A1 (en) | Method and system for generating viable pattern-transfers for an itinerary-planning system | |
JP2020095701A (en) | Apparatus and system for optimal dynamic shard creation in storage | |
JP7198473B2 (en) | Information processing system, information processing program, information processing apparatus, and information processing method | |
Delling et al. | Robust mobile route planning with limited connectivity | |
US9106560B2 (en) | Solving network traffic congestion using device grouping | |
CN112115072B (en) | Method and device for processing timing diagram | |
Hamme | Customizable route planning in external memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210325 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20220228 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220318 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20220425 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220711 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20221118 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20221212 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7198473 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |