本当は怖いHPC

HPC屋の趣味&実益ブログ

UCXを試すメモ(2)

test/examples/uct_hello_world.c を参考にして、まずは Memory Domain, Device, Transport Layer の一覧を取得するコードを書いてみます。

https://gist.github.com/keisukefukuda/bfa28464b10d36ae2321b22db73f7b38

通信のためのデバイス/ハードウェアは、上記の3つの階層によって抽象化されています。Memory domain(MD)は、Memoryと名前はついていますが、通信のためのハードウェアリソースを抽象化したもの。ちょっとイマイチ具体的なイメージがわかない。TransportLayer(TL)は、MDの中でサポートされている通信モデル(?)を表し、それにDeviceもセットで付いてきます。基本的には、TLはデバイス依存です。Infinibandの場合はRCUD に対応するrcudが出力されています。

とりあえず、このコードでは、一覧取得までを書き、次に uct_md_attr を使った属性の取得は次回。

コンパイル&実行例(IBが接続されているマシン上で実行):

$ g++ -std=c++11 -g -o ucx_dev_query ucx_dev_query.cpp -Wall -Wextra -Werror -I${UCX}/install/include -L${UCX}/install/lib -pedantic  -lucs -luct -Wl,-rpath,${UCX}/install/lib

$ ./ucx_dev_query mlx4_0:1 rc
Resources:
    self
        self/self
    tcp
        ib0/tcp
        eth0/tcp
        eth1/tcp
    ib/mlx4_0
        mlx4_0:1/rc
        mlx4_0:1/ud
    cuda_cpy
        cudacopy0/cuda_copy
    sysv
        sysv/mm
    posix
        posix/mm
    cma
        cma/cma
Using rc/mlx4_0:1
【広告】