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 PDF

Info

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
Application number
JP2018093090A
Other languages
Japanese (ja)
Other versions
JP2019200058A (en
Inventor
濱 誠 吉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Navitime Japan Co Ltd
Original Assignee
Navitime Japan Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Navitime Japan Co Ltd filed Critical Navitime Japan Co Ltd
Priority to JP2018093090A priority Critical patent/JP7198473B2/en
Publication of JP2019200058A publication Critical patent/JP2019200058A/en
Application granted granted Critical
Publication of JP7198473B2 publication Critical patent/JP7198473B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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.

清水翔、他「リコンフィギュラブルプロセッサを用いた最短経路探索に関する一検討」、電気情報通信学会技術研究報告、社団法人電気情報通信学会、平成17年12月、第105巻、第451号、p.1-6Sho Shimizu, et al., "Study on Shortest Path Search Using Reconfigurable Processor", Institute of Electronics, Information and Communication Engineers Technical Research Report, The Institute of Electronics, Information and Communication Engineers, December 2005, Vol.105, No.451, p. .1-6

そこで、本発明は、マルチコアプロセッサを用いて経路探索を高速かつ精度よく行うことができる情報処理システム、情報処理プログラム、情報処理装置及び情報処理方法を提案する。 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.

一実施形態に係る情報処理システムの機能の一例を示すブロック図。1 is a block diagram showing an example of functions of an information processing system according to an embodiment; FIG. 一実施形態に係る情報処理システムのハードウェア構成の一例を示す図。1 illustrates an example hardware configuration of an information processing system according to an embodiment; FIG. 一実施形態に係る情報処理システムの処理の流れを示すフローチャート。4 is a flowchart showing the flow of processing of the information processing system according to one embodiment; 一実施形態に係るリンク処理の概略の一例を示す図。The figure which shows an example of the outline of the link process which concerns on one Embodiment. 一実施形態に係るメモリ管理の概略の一例を示す図。FIG. 4 is a diagram illustrating an example of an outline of memory management according to one embodiment;

まず、本実施形態における用語について説明する。なお、用語の説明においては本実施形態の説明に必要な箇所だけを説明しており、厳密に正確なものに限られず、また、詳しい説明は省略している。 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 information processing system 1 includes a terminal device 2 and a server 3 . The terminal device 2 and the server 3 are connected via a wired or wireless network 4 .

端末装置2は、サーバ3により探索された経路探索情報を取得し、出力する装置であり、例えば、クライアントPC、携帯電話、タブレット、スマートホン等の表示又は音声で探索結果を出力するデバイスである。また、端末装置2から、探索条件となる出発地、目的地の情報を入力するようにしてもよい。 The terminal device 2 is a device that acquires and outputs route search information searched by the server 3. For example, a device such as a client PC, a mobile phone, a tablet, a smart phone, etc., that outputs search results by display or voice. . Alternatively, the terminal device 2 may be used to input information on the starting point and the destination as search conditions.

サーバ3は、ユーザ等により指定された出発地、目的地に基づいて最適な経路を探索し、端末装置2へと探索結果を出力する。 The server 3 searches for the optimum route based on the starting point and destination designated by the user or the like, and outputs the search result to the terminal device 2 .

ネットワーク4は、端末装置2と、サーバ3と、を接続するネットワークであり、例えば、イントラネット、インターネット、Wi-Fi(登録商標)、Bluetooth(登録商標)等の通信手段により、端末装置2からのリクエストをサーバ3へと、サーバ3からの出力結果を端末装置2へと通信により伝達する。 The network 4 is a network that connects the terminal device 2 and the server 3. For example, communication means from the terminal device 2 such as an intranet, the Internet, Wi-Fi (registered trademark), or Bluetooth (registered trademark). The request is transmitted to the server 3, and the output result from the server 3 is transmitted to the terminal device 2 by communication.

サーバ3は、制御部30と、記憶部32と、通信部34と、を備える。 The server 3 includes a control section 30 , a storage section 32 and a communication section 34 .

制御部30は、処理対象リンク抽出部300と、コスト演算部302と、経路取得部304と、を備え、サーバ3の制御を行う。これらの他に、サーバ3が起動するため、又は、動作するために必要な制御を行う手段が備えられていてもよい。 The control unit 30 includes a target link extraction unit 300 , a cost calculation unit 302 and a route acquisition unit 304 , and controls the server 3 . In addition to these, means for performing necessary control for the server 3 to start up or operate may be provided.

処理対象リンク抽出部300は、探索において、処理対象リンクを抽出する。例えば、ある処理対象リンクの走査が終了し、リンクの終点のノードへと到達した場合、当該ノードにおける次の処理対象リンクの抽出を行う。探索開始時においては、出発地点を開始点とするリンクを抽出する。すなわち、処理対象リンク抽出部300は、処理対象リンクのコスト演算が終了した後、処理対象リンクを更新する処理対象リンク更新手段として動作する。別の例として、処理対象リンクを更新する処理対象リンク更新手段を、処理対象リンク抽出部300とは別の構成として備えていてもよい。 The processing target link extraction unit 300 extracts the processing target link in the search. For example, when scanning of a certain link to be processed ends and the node at the end point of the link is reached, the next link to be processed at the node is extracted. At the start of the search, links starting from the starting point are extracted. That is, the processing target link extraction unit 300 operates as processing target link updating means for updating the processing target link after the cost calculation of the processing target link is completed. As another example, processing target link updating means for updating the processing target link may be provided as a separate configuration from the processing target link extraction unit 300 .

処理対象リンクとして抽出されるリンクが複数ある場合、処理対象リンク抽出部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 link extraction unit 300 assigns each process target link to one calculation core, and causes each calculation core to execute the calculation of each process target link. In other words, the relationship between the arithmetic core and the link to be processed may be one-to-one. Further, the number of processing target links is not limited to one-to-one, and a predetermined number of processing target links may be calculated by one calculation core. That is, the relationship between the arithmetic cores and the links to be processed may be one-to-many.

コスト演算部302は、処理対象リンクのコストを演算する。コストは、後述する経路ネットワークDB 320にリンク情報とともに格納されている。例えば、全ての処理対象リンクに対して、1イテレーションごとにコストを1ずつ減少させていき、コストが0となった時点で当該処理対象リンクの処理を終了させ、処理済リンクへとその状態を更新する。リンクの到達ノードにおいて未処理リンクが存在する場合、当該未処理リンクを新たな処理対象リンクとしてコストの演算を継続する。 The cost calculator 302 calculates the cost of the target link. The costs are stored together with the link information in the route network DB 320, which will be described later. For example, for all links to be processed, the cost is decreased by 1 for each iteration, and when the cost reaches 0, the processing of the link to be processed is terminated, and the state is transferred to the processed link. Update. If there is an unprocessed link at the destination node of the link, the cost calculation is continued with the unprocessed link as a new link to be processed.

コストが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 cost calculation unit 302 calculates the cost and updates the link to be processed when the cost becomes 0, the present invention is not limited to this. For example, based on the result calculated by the cost calculation unit 302, the processing target link extraction unit 300, which operates as a processing target link updating unit, updates the processing target link to a processed link, and the end point of the processed link becomes the starting point. , may be updated as a new link to be processed. In this way, cost calculation and processing target link update processing may be performed by separate modules.

記憶部32は、経路ネットワークDB 320と、処理対象リンク記憶部322と、を備え、サーバ3が探索処理を行う場合に必要となるデータを格納する。 The storage unit 32 includes a route network DB 320 and a processing target link storage unit 322, and stores data required when the server 3 performs search processing.

経路ネットワークDB 320は、経路の探索に必要な経路ネットワークデータを格納する経路ネットワークデータ記憶手段として機能する。また、探索中に必要となるデータとして、経過時間、探索元リンクのデータ等が格納されていてもよい。経路ネットワークデータとは、例えば、道路における基準点となるノードの情報と、当該ノードから近接するノードへと移動する場合のコストの情報とを紐付けるデータである。経路としては、道路に限られず、公共交通機関の経路情報であってもよい。この経路ネットワークDB 320は、アトミックアクセスされるようにしてもよい。 The route network DB 320 functions as route network data storage means for storing route network data necessary for route searches. Further, the elapsed time, the data of the search source link, and the like may be stored as data required during the search. Route network data is, for example, data that associates information on a node that serves as a reference point on a road with information on the cost of moving from that node to an adjacent node. The route is not limited to roads, and may be route information of public transportation. This routing network DB 320 may be atomically accessed.

上記のコストとは、ノード間の距離に基づいて決定される値であるが、距離だけには拘わらず、道路の混み具合、坂道であるとか道路の幅であるとかの道路の態様、天候や交通事故により変化する道路の状況等により決定されてもよい。距離以外のパラメータについては、時刻で変化するものであってもよいし、時期、曜日で変化するものであってもよい。公共交通機関の場合には、その運賃を含めてコストを決定してもよい。コストは、ノード間においてユニーク、すなわち、逆方向のリンクに対して同じコストを設定してもよいし、ノード間においても進行方向に沿って別のもの、すなわち、逆方向のリンクに対しても同じコストであるとは限らないように設定してもよい。 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 link storage unit 322 is a buffer that stores information on target links. The processing target link storage unit 322 may be configured with a ring buffer. When parallel computation is performed by a plurality of computation cores, this ring buffer may be atomically accessed. By doing so, it is possible to prevent the same processing target link from being accessed by a plurality of operation cores.

図2は、本実施形態に係るサーバ3のハードウェア構成の一例を示す図である。この図2に示すように、サーバ3は、ホスト36と、デバイス38とを備える。 FIG. 2 is a diagram showing an example of the hardware configuration of the server 3 according to this embodiment. As shown in FIG. 2, the server 3 has a host 36 and devices 38 .

ホスト36は、CPU 360と、ホストメモリ362と、を備え、サーバ3の制御を行う装置である。例えば、ホスト36は、コンピュータ、ワークステーション等を備えて構成される。 The host 36 is a device that includes a CPU 360 and a host memory 362 and controls the server 3 . For example, host 36 may comprise a computer, workstation, or the like.

CPU 360は、ホスト36及びデバイス38を制御するためのプロセッサである。一般的に使用されているCPUであればよく、種類や方式、クロック数等は特に問われるものではない。 CPU 360 is a processor for controlling host 36 and device 38 . Any CPU that is commonly used may be used, and the type, system, number of clocks, etc. are not particularly limited.

ホストメモリ362は、プログラムの起動又はデータの保持のために用いられるデータを保持するようにホスト36に備えられているメモリである。例えば、RAM(Random Access Memory)を備えて構成されている。RAMの種類はどのようなものでもよい。 The host memory 362 is memory provided in the host 36 to hold data used for running programs or holding data. For example, it is configured with a RAM (Random Access Memory). Any type of RAM may be used.

ホスト36には、この他に、ホスト36の機能を発揮させるための機能を有する多数のモジュール等が備えられていてもよい。また、ネットワークインタフェースを有し、端末装置2との通信を行う。さらに、入出力インタフェースを有し、例えば、ディスプレイ等へのデータの出力、キーボード等を介したユーザからの入力を受け付けるようにしておいてもよい。 In addition, the host 36 may be provided with a large number of modules and the like having functions for causing the functions of the host 36 to be exhibited. It also has a network interface and communicates with the terminal device 2 . Furthermore, it may have an input/output interface, for example, to output data to a display or the like and receive input from a user via a keyboard or the like.

デバイス38は、演算部380と、デバイスメモリ382と、を備え、ホスト36からの制御信号に基づいて並列演算処理を行う。デバイス38は、例えば、GPUを備えて構成される。図2において、ホスト36と、デバイス38とは別の構成として示されているが、これには限られず、ホスト36内にデバイス38が内蔵されている構成であってもよい。 The device 38 includes an arithmetic unit 380 and a device memory 382 and performs parallel arithmetic processing based on control signals from the host 36 . Device 38 is configured with a GPU, for example. In FIG. 2, the host 36 and the device 38 are shown as separate configurations, but the present invention is not limited to this, and a configuration in which the device 38 is built in the host 36 is also possible.

演算部380は、多数の演算コア384を備える。この演算コア384は、独立して演算を行うことが可能なコアであり、それぞれのコアにおいて演算を行うことが可能である。独立して演算を行うとは、デバイスメモリ382に記録されているプログラムに基づいて所定数の演算コア384が異なるデータに対して同じ演算処理を行うことを含む。 The computing unit 380 includes a large number of computing cores 384 . The arithmetic core 384 is a core capable of independently performing an arithmetic operation, and each core can perform an arithmetic operation. Performing calculations independently includes performing the same calculation processing on different data by a predetermined number of calculation cores 384 based on a program recorded in the device memory 382 .

所定数の演算コア384で、1ブロックを構成するようにしてもよい。また、1つの演算コア384における単位を1スレッドと呼ぶ。すなわち、所定数のスレッドの処理を1ブロックで同じタイミングで並列に行うことが可能である。さらに、複数ブロックにおいて同じ処理を同じタイミングで並列に行うようにしてもよい。 A predetermined number of operation cores 384 may constitute one block. Also, a unit in one arithmetic core 384 is called one thread. That is, it is possible to perform processing of a predetermined number of threads in parallel in one block at the same timing. Furthermore, the same processing may be performed in parallel at the same timing in a plurality of blocks.

デバイスメモリ382は、演算コア384から参照することのできるメモリである。このデバイスメモリ382はさらに、全ての演算コア384からアクセス可能である大容量メモリと、例えば、1ブロック単位における演算コア384から高速アクセス可能であるメモリとを備えていてもよい。 The device memory 382 is memory that can be referenced from the arithmetic core 384 . This device memory 382 may further comprise a large-capacity memory that is accessible from all the arithmetic cores 384, and a memory that is fast accessible from the arithmetic cores 384 in units of one block, for example.

デバイスメモリ382と、ホストメモリ362は、例えば、PCIe(PCI(Peripheral Component Interconnect) Express)を介して接続される。演算コア384を制御するためのプログラムは、ホスト36からPCIeを介してデバイスメモリ382へと転送され、デバイス38に備えられているコンパイラ等によりコンパイルされ、演算コア384が制御されてもよい。別の例としては、バイナリファイルとしてプログラムが転送され、演算コア384を制御するようにしてもよい。 The device memory 382 and the host memory 362 are connected via PCIe (PCI (Peripheral Component Interconnect) Express), for example. A program for controlling the arithmetic core 384 may be transferred from the host 36 to the device memory 382 via PCIe, compiled by a compiler or the like provided in the device 38 , and the arithmetic core 384 may be controlled. As another example, a program may be transferred as a binary file to control computing core 384 .

図3は、本実施形態に係る情報処理システム1の動作を示すフローチャートである。この図3を用いて、情報処理システム1の経路探索の動作について説明する。 FIG. 3 is a flow chart showing the operation of the information processing system 1 according to this embodiment. The route search operation of the information processing system 1 will be described with reference to FIG.

まず、サーバ3は、通信部34を介して出発地、目的地に関する情報を取得し、経路探索の始点、終点として出発地、目的地を設定する(ステップS100)。 First, the server 3 acquires information about the starting point and the destination via the communication unit 34, and sets the starting point and the destination as the starting point and the ending point of the route search (step S100).

次に、設定された出発地から処理対象リンクを抽出する(ステップ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 host 36 of the server 3 extracts the link to be processed and transfers the initial link to be processed to the link storage unit 322 of the device 38. good. As another example, the starting point of the link may be transferred to the device 38 , the target link may be extracted in the device 38 , and stored in the target link storage section 322 . In this way, the target link extraction unit 300 may be provided in at least one of the host 36 and the device 38 and stores the extracted link in the target link storage unit 322 .

次に、コスト演算部302は、1又は複数の抽出された処理対象リンクのそれぞれについて、設定されているコストをデクリメントする(ステップS104)。処理対象リンクのコストは、経路ネットワークDB 320に格納されているデータに基づいて取得される。このコスト演算部302は、例えば、1つの演算コア384内に1つ備えられ、1スレッドにおいて1つの処理対象リンクについてのコスト演算が行われる。 Next, the cost calculator 302 decrements the set cost for each of the one or more extracted links to be processed (step S104). The cost of the link to be processed is obtained based on data stored in the route network DB 320 . For example, one cost calculation unit 302 is provided in one calculation core 384, and one thread performs cost calculation for one link to be processed.

例えば、デバイスとしてGPUを用いる場合、この演算コア384は、数千から数万コアとなり、すなわち、数千から数万スレッドにおいて数千から数万個の処理対象リンクについて個々に同じタイミングでコストの演算を行うことが可能となる。上述したように、1スレッドで演算を行うリンクは、1つには限られず、複数の処理対象リンクについての演算を1スレッドで行うようにしてもよい。 For example, when a GPU is used as a device, the arithmetic cores 384 are thousands to tens of thousands of cores. Arithmetic can be performed. As described above, the number of links for which calculations are performed in one thread is not limited to one, and calculations for a plurality of links to be processed may be performed in one thread.

次に、コスト演算部302は、処理対象リンクのコストが0になったか否かを判断する(ステップS106)。このコストが0になったか否かの判断についても各々の演算コア384について実行され、同じタイミングで複数の処理対象リンクについて判断が実行される。 Next, the cost calculator 302 determines whether or not the cost of the link to be processed has become 0 (step S106). Determination of whether or not this cost has become 0 is also executed for each arithmetic core 384, and determination is executed for a plurality of processing target links at the same timing.

処理対象リンクのコストが0であるスレッドを備える演算コア384において(ステップS106:YES)、コスト演算部302は、コストが0となった処理対象リンクを処理済リンクとして更新する(ステップS108)。処理済リンクとなった処理対象リンクは、処理対象リンク記憶部322から消去される。消去される代わりに、バッファにおいて空きリンクであることを示すインデクスをスレッドに共通して持たせるようにしてもよい。これは、上述したように、コスト演算部302ではなく、処理対象リンク更新部として機能する処理対象リンク抽出部300が実行してもよい。 In the arithmetic core 384 including the thread whose cost of the link to be processed is 0 (step S106: YES), the cost calculator 302 updates the link to be processed whose cost is 0 as a processed link (step S108). A processed link that has become a processed link is erased from the processed link storage unit 322 . Instead of being erased, the threads may share an index indicating an empty link in the buffer. As described above, this may be performed by the target link extraction unit 300 functioning as the target link update unit instead of the cost calculation unit 302 .

続いて、処理済リンクの終点ノードを始点ノードとして有する未処理リンクを経路ネットワーク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 route network DB 320 and updated as the process target link (step S110). Information about the newly extracted link to be processed is stored in the link to be processed storage unit 322 . By performing atomic access when storing, it becomes possible to perform exclusive access with other threads, that is, with other arithmetic cores 384, and it is possible to prevent writing to duplicate buffers (addresses). .

あらたに抽出された処理対象リンクが複数である場合、処理対象リンクの演算を行っていない演算コア384のスレッドにおいて当該処理対象リンクの演算を行うようにしてもよい。複数の新たな処理対象リンクのうち1つは、引き続き処理済リンクとなった処理対象リンクの演算をしていた演算コア384が演算を行うようにしてもよい。別の例として、処理済リンクとなった処理対象リンクの演算をしていた演算コア384が複数の新たな処理対象リンクの演算を行うようにしてもよい。 When there are a plurality of newly extracted links to be processed, the threads of the computation core 384 that are not performing the computations for the links to be processed may perform the computations for the links to be processed. One of the plurality of new links to be processed may be operated by the computation core 384 that has been performing the computation of the link to be processed that has subsequently become the processed link. As another example, the calculation core 384 that has been performing calculations for the link to be processed that has become a processed link may perform calculations for a plurality of new links to be processed.

処理済リンクの情報、又は、新たに抽出された処理対象リンクには、抽出の基点となった処理済リンクの情報を記憶しておいてもよい。記憶された処理済リンクの情報は、記憶部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 storage unit 32 . In this way, by providing the information of the processed link or the new link to be processed with the information of the link that has been traced until reaching the link, what kind of link the link is, that is, what kind of link It stores whether the route has been traced.

次に、演算コア384同士の同期を行う(ステップS112)。この同期処理により、コストが0でないと判断されたスレッド(ステップS106:NO)、及び、コストが0となり、処理対象リンクの更新を実行したスレッドが同期され、次の処理を同じタイミングで行うことが可能となる。 Next, synchronization between the arithmetic cores 384 is performed (step S112). Through this synchronization processing, the thread whose cost is determined not to be 0 (step S106: NO) and the thread whose cost is 0 and have updated the link to be processed are synchronized, and the next processing is performed at the same timing. becomes possible.

同期したのち、目的地に到達したリンクが存在するか否かが判断される(ステップ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 arithmetic core 384 repeats the processing from step S104 to step S112. In this way, loop processing is executed in each thread with a series of processing starting from the processing that reduces the cost by 1 as one iteration.

一方、目的地に到達したリンクが存在する場合(ステップS114:YES)、経路取得部304は、目的地に到達したリンクの情報を取得する(ステップS116)。 On the other hand, if there is a link reaching the destination (step S114: YES), the route acquisition unit 304 acquires information on the link reaching the destination (step S116).

次に、経路取得部304は、格納されたリンクの経路情報から、目的地に到達したリンクが、目的地に到達するまでに経由してきたリンクの情報を取得することが可能となる(ステップS118)。 Next, the route acquisition unit 304 can acquire information on links through which the link that reached the destination traveled to reach the destination from the stored route information of the links (step S118). ).

次に、経路取得部304は、取得した経路を出力して処理を終了する(ステップS120)。このように、複数の演算コア384においてコストの計算を各々実行し、リンク情報を格納しながらリンクを更新することにより、コストを加味した最適な経路を取得することが可能となる。 Next, the route acquisition unit 304 outputs the acquired route and terminates the process (step S120). In this way, by executing cost calculations in the plurality of arithmetic cores 384 and updating the links while storing the link information, it is possible to obtain the optimum route taking into consideration the cost.

ステップS104からステップS114の処理は、上述したように、複数の演算コア384により、すなわち、複数のスレッドにより同じタイミングで行われる。ここで、同じタイミングとは、正確に同時である必要は無く、ある程度の時間的なずれが生じていても構わない。同期処理については、1ブロック内にある複数スレッドについては、実行されるが、ブロック同士の同期が行われているか否かは問わない。 The processing from step S104 to step S114 is performed at the same timing by a plurality of arithmetic cores 384, that is, by a plurality of threads, as described above. Here, the same timing does not have to be exactly the same time, and a certain amount of time lag may occur. Synchronization processing is executed for multiple threads in one block, but it does not matter whether blocks are synchronized or not.

ブロック同士について同期が行われない場合、例えば、所定の回数のステップ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 storage unit 32 .

このように残りのコストを記憶しておくことにより、再度ホスト36がデバイス38における演算処理の制御を実行する際に、スレッドを再配置することが可能となる。スレッドの再配置を行うことにより、例えば、近くにある処理対象リンク同士を同じブロック内に配置することも可能となり、近くにある処理対象リンク同士について、同期を行える状態で処理を行うことが可能となる。 By storing the remaining costs in this way, it becomes possible to rearrange the threads when the host 36 again controls the arithmetic processing in the device 38 . By rearranging the threads, for example, it is possible to place nearby links to be processed in the same block, and it is possible to perform processing in a state in which nearby links to be processed can be synchronized. becomes.

探索において最適経路の他に複数の候補となる経路を出力する場合、目的地に到達するリンクについて、目的地の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 information processing system 1 according to this embodiment searches for a route. ○ represents a node, and the alphabet described therein is the identifier of the node. A line segment connecting nodes is a link, and a numerical value written at the end of the link represents the cost. For example, for a route like FIG. 4(a), the A to B link has a cost of two. We show that the B to C link has a cost of 2 and the reverse C to B link has a cost of 3. A case of searching for a route from the starting point A to the destination H on this route will be described. Below, the link from A to B is denoted as AB and so on. In FIG. 4, costs are set for all links other than the link reaching the node H, but the present invention is not limited to this. For example, if the link includes a one-way road, the cost may be infinite (or a very large numerical value) and the link may not be set.

まず、出発地Aと目的地Hの情報が設定される。経路ネットワークDB 320から、Aを始点とするリンク、AB、AC、ADが抽出される。 First, information on the departure point A and the destination H is set. From the path network DB 320, links starting from A, AB, AC, and AD are extracted.

AB、AC、ADに関するコストの演算は、それぞれ別の演算コア384に割り当てられる。各イテレーションでは、コストが1ずつ減算される。概念的に説明すると、AからB、C、Dにそれぞれ同じタイミングで出発した仮想的な車両等が存在し、1イテレーションごとに、1のコスト分リンクを進むと言う処理で置き換えられる。 The cost calculations for AB, AC, and AD are assigned to separate calculation cores 384, respectively. Each iteration decrements the cost by one. Conceptually, there are virtual vehicles that depart from A to B, C, and D at the same timing, and each iteration is replaced by a process of advancing the link at a cost of 1.

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 arithmetic core 384 that has been processing the AB link updates the process target link in B. FIG. The AB link is updated from a processed link to a processed link. On the other hand, unprocessed links BA, BC, and BE are updated as new links to be processed, and subsequent processing is performed in separate arithmetic cores 384 respectively. Also, since only one link reaches B at this timing, AB is stored as the optimum route to B. FIG.

続いて、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 device 38 to the host 36 and the output from the server 3 to the terminal device 2 may be link information. It may be converted to the above route information and output. The user can, for example, obtain the optimum route from information on the map output to the display.

このように、並列にコストの処理を行い、リンクを未処理リンク、処理対象リンク及び処理済リンクへと変更することにより、演算を行う上でボトルネックとなりがちな重い処理であるソートの処理を省くことが可能となる。すなわち、並列処理を行わないダイクストラ法のように各処理対象リンクのコストのソートを行い、いずれの処理対象リンクが最適経路を構成するかを探索するのではなく、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 link storage unit 322 .

初期状態において、図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 route network DB 320 as well. At this time, up to which buffer is used at each timing is also stored. For example, the address of the position of the arrow shown in FIG. 5(b) is shared and stored.

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 arithmetic core 384 that processes each link.

さらに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 storage unit 32 may be provided with a table for managing that the target link is stored in an open address by referring to the table.

以上のように、本実施形態に係る情報処理システム1は、マルチコアプロセッサを備えるアクセラレータ、例えば、GPGPUを用いるGPUにおいて、並列演算を行うことにより、経路探索の時間を逐次処理を行った場合と比較して大きく減少することを可能とする。この実施形態のように、マルチコアプロセッサを用いることによる並列演算を行えるようにすることにより、サーバにおける処理を軽くするとともに、複数のユーザからの処理を高速に対処することが可能となる。 As described above, the information processing system 1 according to the present embodiment performs parallel computation in an accelerator equipped with a multi-core processor, for example, a GPU using a GPGPU. can be greatly reduced. As in this embodiment, by enabling parallel computation by using a multi-core processor, it becomes possible to lighten the processing in the server and handle processing from a plurality of users at high speed.

なお、上述した実施形態においては、コストが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 terminal device 2, and the route search may be performed using the GPU of the terminal device 2. FIG. In such a configuration, the server 3 and the network 4 are not essential components at the timing of performing the route search, but the components of the server 3 shown in FIG. It may be a configuration provided.

1 情報処理システム
2 端末装置
3 サーバ
30 制御部
300 処理対象リンク抽出部
302 コスト演算部
304 経路取得部
32 記憶部
320 経路ネットワークDB
322 処理対象リンク記憶部
34 通信部
36 ホスト
360 CPU
362 ホストメモリ
38 デバイス
380 演算部
382 デバイスメモリ
384 演算コア
1 information processing system 2 terminal device 3 server 30 control unit 300 processing target link extraction unit 302 cost calculation unit 304 route acquisition unit 32 storage unit 320 route network DB
322 target link storage unit 34 communication unit 36 host 360 CPU
362 host memory 38 device 380 arithmetic unit 382 device memory 384 arithmetic core

Claims (8)

内蔵されたデバイスメモリと、複数の演算処理を並列に実行する複数の演算コアと、を備える、GPU(Graphical Processing Unit)と、
経路ネットワークデータを記憶する、経路ネットワークデータ記憶手段と、
処理対象となるリンクである処理対象リンクを記憶する、処理対象リンク記憶手段と、
前記経路ネットワークデータに基づいて、第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つについてのコストの演算を行う、請求項1に記載の情報処理システム。 2. The information processing system according to claim 1, wherein each of said calculation cores calculates a cost for one of said links to be processed. 前記処理対象リンク抽出手段は、前記第1地点及び前記第2地点のうち少なくとも1つから所定距離の範囲を、前記経路ネットワークデータに基づいて抽出し、前記所定距離の範囲内についての前記処理対象リンクの抽出粒度を、前記所定距離の範囲外についての前記処理対象リンクの抽出粒度よりも高くする、請求項1又は請求項2に記載の情報処理システム。 The process target link extracting means extracts a range within a predetermined distance from at least one of the first point and the second point based on the route network data, and extracts the process target within the predetermined distance range. 3. The information processing system according to claim 1, wherein the extraction granularity of links is higher than the extraction granularity of the links to be processed outside the range of the predetermined distance. 前記GPUは、
前記デバイスメモリ上に、前記経路ネットワークデータ記憶手段と、前記処理対象リンク記憶手段と、を備え、
前記演算コア上に、前記処理対象リンク抽出手段と、前記コスト演算手段と、前記処理対象リンク更新手段と、を備える、
請求項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.
内蔵されたデバイスメモリと、複数の演算処理を並列に実行する複数の演算コアと、を備える、GPUを備えるコンピュータを、
経路ネットワークデータを記憶する、経路ネットワークデータ記憶手段、
処理対象となるリンクである処理対象リンクを記憶する、処理対象リンク記憶手段、
前記経路ネットワークデータに基づいて、第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つにGPUを備える情報処理装置によって、
経路ネットワークデータを記憶する、経路ネットワークデータ記憶手段、
処理対象となるリンクである処理対象リンクを記憶する、処理対象リンク記憶手段、
前記経路ネットワークデータに基づいて、第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.
GPUを備えるコンピュータを、
経路ネットワークデータを記憶する、経路ネットワークデータ記憶手段、
処理対象となるリンクである処理対象リンクを記憶する、処理対象リンク記憶手段、
前記経路ネットワークデータに基づいて、第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 .
GPUを備える情報処理装置において、
経路ネットワークデータ記憶手段が経路ネットワークデータを記憶するステップ、
処理対象リンク記憶手段が処理対象となるリンクである処理対象リンクを記憶するステップ、
処理対象リンク抽出手段が前記経路ネットワークデータに基づいて、第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.
JP2018093090A 2018-05-14 2018-05-14 Information processing system, information processing program, information processing apparatus, and information processing method Active JP7198473B2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11325935A (en) * 1998-05-11 1999-11-26 Xanavi Informatics Corp Course searching unit

Patent Citations (5)

* Cited by examiner, † Cited by third party
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