あまりにも性能が出てないので可視化してみた。何が見えたわけでもないが、GCC と ICC は異なった実装方法をしていることは確認できる。ひとまず、このまま残しておこう。
[注意]
ちなみにグラフは NY(264346 nodes 733846 arcs), クエリは P2P x 256。
[注意]
ちなみにグラフは NY(264346 nodes 733846 arcs), クエリは P2P x 256。
◆OpenMP [sec.] [1] [2] [4] [8] gcc 4.546 6.148 4.605 2.951 icc 4.631 5.350 6.073 2.918
◆Pthreads [sec.] [1] [2] [4] [8] gcc 4.769 2.424 1.220 0.687 icc 4.528 2.280 1.142 0.674
int chunk_size = 1; int num_threads = omp_get_max_threads(); thread_arguments *ta = initialize_threads(num_threads); # pragma omp parallel for schedule(dynamic, chunk_size) private(i,tid) for (i = 0; i <trials; i++) {
int tid = omp_get_thread_num(); results[i] = dijkstra(i, ta[tid]); } finalize_threads(ta);
$ chsh -s /bin/zsh
x = parseInt( x * 1e6 ) / 1e6; y = parseInt( y * 1e6 ) / 1e6;
<?php $MAP_DETAILS = array( array("name" => "NY", "description" => "New York City", "nodes" => 264346, "arcs" => 733846, "low_lat" => 40.3000009, "high_lat" => 41.299997, "low_long" => -74.499998, "high_long" => -73.500016), ..., ); ?>