GPUDirectによるPeerアクセスの速度

出典: トータル・ディスクロージャ・サイト(事実をありのままに)

前回扱った、GPUDirectによるPeerアクセスであるが、速度について検証が欲しいという話が出てきたので、今回はこの速度を測定することにした。

目次

測定方法

2枚のGPUに、それぞれ1 GBのデバイスメモリを確保し、この間での転送速度を、データサイズを変えながら測定する。測定に使ったプログラムは、以下のものである。


#include <stdio.h>
#include <sys/time.h>

#define LOGN 30

int
main()
{
  void *h_a, *d_a[2];
  struct timeval tv[2];
  double second[2];
  cudaHostAlloc(&h_a, 1 << LOGN, cudaHostAllocPortable);
  for (ptrdiff_t i = 0; i < 2; ++i) {
    cudaSetDevice(i);
    cudaMalloc(&d_a[i], 1 << LOGN);
  }
  for (ptrdiff_t i = 0; i <= LOGN; ++i) {
    gettimeofday(&tv[0], NULL);
    cudaSetDevice(0);
    cudaMemcpy(h_a, d_a[0], 1 << i, cudaMemcpyDeviceToHost);
    cudaSetDevice(1);
    cudaMemcpy(d_a[1], h_a, 1 << i, cudaMemcpyHostToDevice);
    gettimeofday(&tv[1], NULL);
    second[0] =
      tv[1].tv_sec - tv[0].tv_sec + (tv[1].tv_usec - tv[0].tv_usec) * 1.0e-6;
    gettimeofday(&tv[0], NULL);
    cudaMemcpyPeer(d_a[1], 1, d_a[0], 0, 1 << i);
    cudaDeviceSynchronize();
    gettimeofday(&tv[1], NULL);
    second[1] =
      tv[1].tv_sec - tv[0].tv_sec + (tv[1].tv_usec - tv[0].tv_usec) * 1.0e-6;
    printf("%d\t%f\t%f\n", 1 << i, second[0], second[1]);
  }
  return 0;
}

測定環境

Tesla環境

CPU: クアッドコア Xeon W3520 2.67 GHz
GPU: Tesla C2050 × 2
OS: CentOS 5.7
CUDA: CUDA 4.0
GPUドライバ: バージョン270.41開発用ドライバ

GeForce環境

CPU: クアッドコア Xeon W3565 3.20 GHz
GPU: GeForce GTX 580 × 4のうち2枚使用
OS: CentOS 5.7
CUDA: CUDA 4.0
GPUドライバ: バージョン290.10

測定結果

ファイル:Memcpypeer.png

データサイズ(Byte) Tesla: Peer未使用(秒) Tesla: Peer使用(秒) GeForce: Peer未使用(秒) GeForce: Peer使用(秒)
1 0.000094 0.000046 0.000065 0.000034
2 0.000058 0.000040 0.000026 0.000025
4 0.000053 0.000039 0.000023 0.000025
8 0.000052 0.000043 0.000023 0.000025
16 0.000058 0.000040 0.000023 0.000025
32 0.000056 0.000040 0.000022 0.000024
64 0.000052 0.000039 0.000023 0.000025
128 0.000052 0.000038 0.000023 0.000025
256 0.000053 0.000038 0.000023 0.000025
512 0.000052 0.000039 0.000023 0.000024
1024 0.000052 0.000039 0.000023 0.000025
2048 0.000052 0.000038 0.000023 0.000026
4096 0.000053 0.000039 0.000024 0.000025
8192 0.000055 0.000040 0.000026 0.000028
16384 0.000061 0.000048 0.000032 0.000032
32768 0.000064 0.000049 0.000034 0.000034
65536 0.000074 0.000058 0.000044 0.000046
131072 0.000094 0.000079 0.000065 0.000067
262144 0.000136 0.000122 0.000107 0.000109
524288 0.000223 0.000210 0.000190 0.000192
1048576 0.000388 0.000373 0.000361 0.000360
2097152 0.000727 0.000622 0.000697 0.000632
4194304 0.001400 0.001114 0.001369 0.001173
8388608 0.002750 0.002102 0.002712 0.002258
16777216 0.005433 0.004081 0.005394 0.004430
33554432 0.010806 0.008046 0.010750 0.008765
67108864 0.021542 0.015965 0.021480 0.017444
134217728 0.043024 0.031767 0.042942 0.034829
268435456 0.085979 0.063421 0.085842 0.069523
536870912 0.171893 0.126739 0.171670 0.138937
1073741824 0.343748 0.253363 0.343369 0.277693

Teslaを使った場合、データサイズに関わらず、Peerアクセスが高速化に寄与していることがわかる。GeForceの場合、データサイズが小さい場合は、むしろわずかに遅くなっているようであるが、1 MB以上のサイズのコピーに関しては、GeForceでも20 %程度速くなっていて、有用性が確認できる。


この記事へのコメントをお寄せください

  • サイトへの書き込みに差し支えございましたら トータルディスクロージャーサイトサポート係へメールをお送りください
  • トータル・ディスクロージャ・サイトに投稿された文章と画像は、すべてその著作権がHPCシステムズ株式会社に帰属し、HPCシステムズ株式会社が著作権を所有することに同意してください。
  • あなたの文章が他人によって自由に編集、配布されることを望まない場合は、投稿を控えてください。
  • コメントを書き込む場合は名前にひらがなを織り交ぜてください。
  • あなたの投稿する文章と画像はあなた自身によって書かれたものであるか、パブリック・ドメインかそれに類する自由なリソースからの複製であることを約束してください。あなたが著作権を保持していない作品を許諾なしに投稿してはいけません!

<comments hideform="false" />


Comments

ノート:GPUDirectによるPeerアクセスの速度

個人用ツール