전송 성능 벤치마크(rblnBandwidthLatencyTest)¶
rblnBandwidthLatencyTest는 호스트–NPU 및 NPU–NPU 간 전송 성능을 측정하고 다음을 보고합니다:
- 대역폭 결과(GB/s)
- 지연 시간 결과(us)
- NPU 연결성(거리 행렬) 및 토폴로지 컨텍스트
이 도구는 모든 RBLN NPU에서 동작하며, 측정 옵션은 제품 계열과 무관하게 동일합니다. 메모리를 특정 칩렛에 고정하는 전송은 멀티 칩렛 디바이스(현재는 Rebel100™)를 필요로 합니다. 자세한 내용은 멀티 칩렛 메모리 affinity에서 확인할 수 있습니다.
빠른 시작¶
기본 실행(권장)
환경 및 토폴로지
주요 개념 및 용어¶
전송 방향¶
- H2D: host → NPU
- D2H: NPU → host
- D2D: NPU → NPU(peer-to-peer)
NPU-to-NPU 전송에만 집중하려면 --only_d2d를 사용합니다.
측정 구성¶
--test_size: 대역폭 테스트의 페이로드 크기입니다(기본값:512M). 지연 시간 테스트는 이 값을 쓰지 않습니다.--iteration_cnt: 측정 반복 횟수.--warmup: 측정 전 워밍업 반복을 실행합니다.
대상 선택¶
- 식별자
- NPU ID:
--npu_id_list에서 사용하는 숫자 인덱스(예:0,1). - Device label: 출력에 표시되는 런타임 레이블(예:
rbln0,rbln1).
- NPU ID:
- 선택 규칙
--npu_id_list: NPU ID의 쉼표로 구분된 목록(예:0,1,2).- 테스트 케이스
3-6의 경우, 관련된 NPU 집합은--npu_id_list가 제공되는지 여부에 따라 달라집니다.
멀티 칩렛 메모리 affinity¶
Rebel100™(RBLN-CR13)은 칩렛이 여러 개이고, 칩렛마다 자기 DRAM을 끼고 있습니다. 기본값은 컨텍스트 메모리를 칩렛 0에 두는 것이고, --src_cl·--dst_cl로 소스·목적지 버퍼를 다른 칩렛의 DRAM에 고정할 수 있습니다. 전송 경로와 버퍼가 같은 칩렛에 있을 때와 아닐 때를 비교해 보고 싶을 때 씁니다.
--src_cl: 소스 컨텍스트 메모리를 지정한 칩렛의 DRAM에 고정합니다.--dst_cl: 목적지 컨텍스트 메모리를 지정한 칩렛의 DRAM에 고정합니다.- 두 옵션 모두
15(0xF)를 주면 affinity를 끕니다.
도구는 실행 시점에 디바이스의 칩렛 개수를 조회해 지원 여부를 판단합니다. ATOM처럼 칩렛이 하나인 디바이스에서는 고정할 대상이 없으므로 실행되지 않고 건너뛴 것으로 보고됩니다. 이때의 해결 방법은 멀티 칩렛 옵션이 건너뛰어질 때에 정리되어 있습니다.
테스트 케이스¶
사용 가능한 테스트 케이스 ID는 --test_list로 출력됩니다. ID는 목록의 0-based 인덱스입니다.
이 페이지에 나중에 표시되는 --test_list 출력을 기반으로:
ID(--tc) | --test_list 항목 | 목적(고수준) |
|---|---|---|
0 | RBLN_PERF_TEST_ALL | 기본 벤치마크 세트 실행(대역폭 + 지연 시간 스윕 결합). |
1 | RBLN_PERF_BANDWIDTH_TEST_ALL | 대역폭 전용 스윕. |
2 | RBLN_PERF_LATENCY_TEST_ALL | 지연 시간 전용 스윕. |
3 | RBLN_PERF_BANDWIDTH_TEST | 특정 쌍에 대한 대역폭 테스트(--npu_id_list가 제공되지 않은 경우 "첫 번째 디바이스 vs 다른 디바이스"). |
4 | RBLN_PERF_LATENCY_TEST | 특정 쌍에 대한 지연 시간 테스트(--npu_id_list가 제공되지 않은 경우 "첫 번째 디바이스 vs 다른 디바이스"). |
5 | RBLN_PERF_BIDIR_BANDWIDTH_TEST | 양방향 동시 전송 대역폭 테스트. |
6 | RBLN_PERF_PARALLEL_BANDWIDTH_TEST | 여러 NPU 쌍을 병렬로 실행하는 대역폭 테스트. |
--tc 옵션에 ID를 지정하여 특정 테스트 케이스를 실행할 수 있습니다.
Note
환경에 따라 --test_list가 다른 순서를 출력하면 위 표는 참고용으로만 보고 --test_list 출력을 기준으로 삼아야 합니다.
명령어 참조¶
전역 옵션¶
이 옵션들은 기본 실행과 테스트 케이스 실행 모두에서 사용할 수 있습니다.
Common options
| Option | Description |
|---|---|
-h, --help | 도움말 메시지를 표시하고 종료합니다. |
-V, --version | 버전을 표시하고 종료합니다. |
-t, --timeout <int> | job 대기 타임아웃을 마이크로초 단위로 설정합니다. 기본값: 30000000(30초). |
-i, --iteration_cnt <int> | 반복 횟수를 설정합니다. |
--warmup | 측정 전 워밍업 반복을 실행합니다. |
--test_size <str> | 데이터 크기를 설정합니다(예: 4K, 128M, 1G). 기본값: 512M. --tc 6을 빼면 4G 미만이어야 하고, 초과하면 경고 없이 기본값으로 돌아갑니다. |
--npu_id_list <list> | NPU ID의 쉼표로 구분된 목록을 제공합니다(예: 0,1,2). 최대 32개까지이고, 더 길면 거부됩니다. |
--only_d2d | D2D 전송만 실행합니다. H2D/D2H 단계를 건너뜁니다. |
--test_list | 사용 가능한 테스트 케이스 목록을 출력합니다. |
--tc <int> | 실행할 테스트 케이스 ID를 선택합니다(0-based 인덱스). --test_list의 인덱스를 사용합니다. |
--test_env_info | 시스템 및 디바이스 정보를 출력합니다. |
--skip_test_env_info | 테스트 실행 시 환경 정보 출력을 건너뜁니다. |
Advanced options
| Option | Description |
|---|---|
-n, --device_name <int> | 컨텍스트 생성에 쓸 NPU 타입입니다(0: any(기본값), 2: ATOM, 5: Rebel100™). 디바이스 인덱스가 아니며, 디바이스 선택은 --npu_id_list로 합니다. |
--get_perf <int> | 동작하지 않습니다. 하위 호환을 위해 인자만 받습니다. |
--priority <int> | 컨텍스트 우선순위를 설정합니다(0-2: min/normal/high, 3: kernel, 4: real-time). |
-r, --hdma_read <int> | HDMA 방향을 설정합니다(0: write, 1: read). |
--numa_node <int> | NUMA 노드를 강제로 설정합니다(기본값: -1). |
--data_pattern <int> | 데이터 패턴 값을 설정합니다. |
-f, --flags <int> | 컨텍스트 플래그를 설정합니다. |
-g, --group_id <int> | 실행 그룹 ID를 설정합니다. 기본값: 0. |
Multi-chiplet options
이 옵션들은 멀티 칩렛 디바이스를 필요로 하며 Rebel100™에서만 사용할 수 있습니다. 자세한 내용은 멀티 칩렛 메모리 affinity에서 다룹니다.
| Option | Description |
|---|---|
--src_cl <int> | 소스 컨텍스트 메모리를 칩렛에 고정합니다. 유효값은 0부터 디바이스 칩렛 수 − 1까지입니다(RBLN-CR13은 0~3). 0이 기본값이고 15/0xF는 affinity를 끕니다. |
--dst_cl <int> | 목적지 컨텍스트 메모리를 칩렛에 고정합니다. 유효값은 0부터 디바이스 칩렛 수 − 1까지입니다(RBLN-CR13은 0~3). 0이 기본값이고 15/0xF는 affinity를 끕니다. |
Tip
옵션을 잘 모른다면 빠른 시작부터 진행하는 것을 권합니다. 전체 도움말은 rblnBandwidthLatencyTest --help로 확인할 수 있습니다.
CLI 예제¶
출력 중 제품 계열에 따라 달라지는 부분은 디바이스 열거뿐이라, 그 블록만 계열별로 분기했습니다. 이 페이지의 나머지 내용은 계열 공통입니다.
Summary
| Output block | 의미 |
|---|---|
| System + device enumeration | CPU 및 디바이스 목록(일반적으로 PCI BDF 및 NUMA 노드 포함). |
P2P Connectivity Distance | NPU-to-NPU 연결성 행렬(도구에서 보고). |
| Bandwidth table | HOST 및 rbln* 디바이스 레이블 전체의 처리량 결과(GB/s). |
| Latency results | 마이크로초(us) 단위의 동기화 지연 시간. |
Command
Output(excerpt)
CPU : AMD EPYC 9355 32-Core Processor, Vendor ID : AuthenticAMD
Device :
0000:00:01.1/01:00.0
0000:03:00.0 NODE 0, rbln0, RBLN-CR13(rev-02), pciDevID: 0x2130, NUMA: 0, IOMMU: 63
0000:04:00.0 NODE 1, rbln1, RBLN-CR13(rev-02), pciDevID: 0x2130, NUMA: 0, IOMMU: 64
...
P2P Connectivity Distance
rbln0 0 4 4 4 8 8 8 8
rbln1 4 0 4 4 8 8 8 8
...
Device Write bandwidth (GB/s)
S \ D HOST rbln0 rbln1 rbln2 rbln3 ...
HOST 0.00 57.32 57.45 57.41 57.41 ...
rbln0 58.92 0.00 58.58 58.74 58.76 ...
Device P2P sync latency (us)
S \ D HOST rbln0 rbln1 rbln2 rbln3 ...
rbln0 0.00 0.00 2.76 2.76 2.78 ...
CPU : AMD EPYC 9355 32-Core Processor, Vendor ID : AuthenticAMD
Device :
0000:00:01.1/01:00.0
0000:05:00.0 NODE 0, rbln0, RBLN-CA25(rev-03), pciDevID: 0x1250, NUMA: 0, IOMMU: 88
0000:06:00.0 NODE 1, rbln1, RBLN-CA25(rev-03), pciDevID: 0x1250, NUMA: 0, IOMMU: 89
...
P2P Connectivity Distance
rbln0 0 4 4 4 8 8 8 8 ...
rbln1 4 0 4 4 8 8 8 8 ...
...
Device Write bandwidth (GB/s)
S \ D HOST rbln0 rbln1 rbln2 rbln3 ...
HOST 0.00 50.04 50.13 50.14 50.12 ...
rbln0 59.13 0.00 58.74 58.94 58.93 ...
Device P2P sync latency (us)
S \ D HOST rbln0 rbln1 rbln2 rbln3 ...
rbln0 0.00 0.00 2.24 2.24 2.24 ...
Summary
사용 가능한 성능 테스트 케이스 목록을 출력합니다.
Command
Output(excerpt)
Summary
CPU 정보 및 시스템 토폴로지 세부 정보를 출력합니다(PCI BDF, NUMA 노드 및 PCIe 링크 정보).
Command
Output(excerpt)
CPU : AMD EPYC 9355 32-Core Processor, Vendor ID : AuthenticAMD
Device :
0000:00:01.1/01:00.0
0000:03:00.0 NODE 0, rbln0, RBLN-CR13(rev-02), pciDevID: 0x2130, NUMA: 0, IOMMU: 61
PCIe full bandwidth 32.0 GB/s (MAX: 32.0), PCIe Gen 5 (MAX: 5), 16 lane (MAX: 16)
MaxPayload 512 bytes, MaxReadReq 512 bytes
0000:04:00.0 NODE 1, rbln1, RBLN-CR13(rev-02), pciDevID: 0x2130, NUMA: 0, IOMMU: 62
...
0000:50:01.1/51:00.0
0000:55:00.0 NODE 2, rbln2, RBLN-CR13(rev-02), pciDevID: 0x2130, NUMA: 0, IOMMU: 39
...
디바이스 개수, PCI 주소, NUMA 배치는 호스트와 장착 카드 구성에 따라 달라집니다.
CPU : AMD EPYC 9254 24-Core Processor, Vendor ID : AuthenticAMD
Device :
0000:00:01.1/01:00.0 PCI bridge: Broadcom / LSI PEX890xx PCIe Gen 5 Switch (rev b0)
0000:05:00.0 NODE 0, rbln0, RBLN-CA25(rev-03), pciDevID: 0x1250, NUMA: 0, IOMMU: 70
PCIe full bandwidth 64.0 GB/s (MAX: 64.0), PCIe Gen 5 (MAX: 5), 16 lane (MAX: 16)
MaxPayload 512 bytes, MaxReadReq 512 bytes
...
0000:ce:00.0 NODE 30, rbln30, RBLN-CA25(rev-03), pciDevID: 0x1250, NUMA: 1, IOMMU: 136
PCIe full bandwidth 64.0 GB/s (MAX: 64.0), PCIe Gen 5 (MAX: 5), 16 lane (MAX: 16)
MaxPayload 512 bytes, MaxReadReq 512 bytes
0000:cf:00.0 NODE 31, rbln31, RBLN-CA25(rev-03), pciDevID: 0x1250, NUMA: 1, IOMMU: 137
PCIe full bandwidth 64.0 GB/s (MAX: 64.0), PCIe Gen 5 (MAX: 5), 16 lane (MAX: 16)
MaxPayload 512 bytes, MaxReadReq 512 bytes
Summary
특정 NPU 쌍에 대한 단일 대역폭 테스트 케이스(RBLN_PERF_BANDWIDTH_TEST)를 실행합니다.
Command
$ rblnBandwidthLatencyTest --tc 3 --npu_id_list 0,1 --iteration_cnt 1 --test_size 1M --skip_test_env_info
Output(excerpt)
This test will run with size (0x100000)
==============================================================================
[ Run ] : RBLN_PERF_BANDWIDTH_TEST
==============================================================================
[Measure Iteration cnt : 1]
[Measure Buffer Size : 0x100000]
P2P Connectivity Distance
rbln0 0 4 4 4 8 ...
rbln1 4 0 4 4 8 ...
---------------------------------
Device bandwidth (GB/s) *Write
---------------------------------
[H2D] HOST -> rbln0 : MAX 14.71, MIN 14.71, AVG 14.71
[D2D] rbln0 -> rbln1 : MAX 10.29, MIN 10.29, AVG 10.29
[D2H] rbln1 -> HOST : MAX 19.41, MIN 19.41, AVG 19.41
==============================================================================
[ PASS ] : RBLN_PERF_BANDWIDTH_TEST
==============================================================================
Summary
특정 NPU 쌍에 대한 단일 지연 시간 테스트 케이스(RBLN_PERF_LATENCY_TEST)를 실행합니다.
Command
Output(excerpt)
==============================================================================
[ Run ] : RBLN_PERF_LATENCY_TEST
==============================================================================
[Measure Iteration cnt : 1]
[Measure Buffer Size : 0x20000000]
P2P Connectivity Distance
rbln0 0 4 4 4 8 ...
rbln1 4 0 4 4 8 ...
---------------------------------
Device P2P sync latency (us)
---------------------------------
rbln0 -> rbln1 2.07 (us)
==============================================================================
[ PASS ] : RBLN_PERF_LATENCY_TEST
==============================================================================
문제 해결¶
명령 타임아웃¶
--timeout을 늘립니다.--test_size또는--iteration_cnt를 줄여 테스트 시간을 단축합니다.- 먼저
--test_env_info를 실행하여 디바이스가 감지되고 토폴로지가 출력되는지 확인합니다.
측정 결과 편차¶
--warmup을 사용합니다.--iteration_cnt를 증가시키고 평균을 비교합니다.- 시스템 부하를 안정적으로 유지합니다(워크로드를 고정하고 벤치마킹 중 백그라운드 작업을 피합니다).
NPU-to-NPU 전용 출력¶
NPU-to-NPU 전송에만 집중하려면 --only_d2d를 사용하여 H2D/D2H 단계를 건너뜁니다.
멀티 칩렛 옵션이 건너뛰어질 때¶
기본값이 아닌 --src_cl·--dst_cl은 칩렛이 둘 이상인 디바이스를 필요로 합니다. 선택한 NPU 중 하나라도 칩렛이 하나면 해당 디바이스를 알리고 실행을 건너뜁니다:
- 대상이 멀티 칩렛 디바이스인지 확인합니다. ATOM처럼 칩렛이 하나인 디바이스에서는 이 옵션들을 빼고 기본값으로 실행합니다.
--npu_id_list의 모든 NPU를 확인합니다. 하나라도 칩렛이 하나면 실행이 건너뛰어집니다.- 칩렛 번호가 디바이스의 칩렛 개수를 벗어나면 건너뛰는 대신
chiplet index out of range오류로 끝납니다.
디바이스가 하나도 보이지 않을 때¶
RSD 그룹이 기본값(0)이 아닌 호스트에서는 -g 없이 실행하면 디바이스를 하나도 찾지 못합니다. --test_env_info의 Device : 뒤가 비어 있거나, 테스트가 아래처럼 끝납니다:
[RBLN_UMD_ioctl_ERR] rbln_rsd_get_dev_id_str: logical_dev_id is greater than device count(logical 0 dev_cnt 0)
[RBLN_UMD_api_ERR] rblnCreateContext: failed to init device
[RBLN_RSD_PERF_ERR] rbln_rsd_perf_create_ctx: failed to create rsd context (rc -22)
rbln-smi -g로 디바이스가 속한 그룹 ID를 확인합니다./sys/class/rebellions/rsd/rsd_group로도 볼 수 있습니다.- 확인한 ID를
-g <id>로 지정해 다시 실행합니다.
관련 문서¶
rbln-smi: 디바이스 모니터링 및 토폴로지 검사rbln-bios: 시스템 검증rbln-flash: 펌웨어 업데이트 도구