{"id":100993,"date":"2026-09-05T22:01:02","date_gmt":"2026-09-05T14:01:02","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/100993.html"},"modified":"2026-09-05T22:01:02","modified_gmt":"2026-09-05T14:01:02","slug":"amd-pensando-dpu%e4%b8%8eai-rdma%ef%bc%9asalina-vulcano%e8%8a%af%e7%89%87%e8%a7%a3%e6%9e%90","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/100993.html","title":{"rendered":"AMD Pensando DPU\u4e0eAI RDMA\uff1aSalina\/Vulcano\u82af\u7247\u89e3\u6790"},"content":{"rendered":"<h3>&#x1f4d1; \u76ee\u5f55<\/h3>\n<p>\u4e00\u3001\u524d\u8a00\/AI\u573a\u666f\u80cc\u666f \u4e8c\u3001\u6838\u5fc3\u539f\u7406\u4e0e\u534f\u8bae\u6df1\u5ea6 \u4e09\u3001\u786c\u4ef6\u67b6\u6784\u6df1\u5ea6\u5256\u6790 \u56db\u3001AI\u901a\u4fe1\u7684\u786c\u4ef6\u52a0\u901f\u5b9e\u73b0 \u4e94\u3001\u5b9e\u6218\u90e8\u7f72\u4e0e\u6df1\u5ea6\u914d\u7f6e \u516d\u3001\u6027\u80fd\u6df1\u5ea6\u5206\u6790\u4e0e\u57fa\u51c6\u6d4b\u8bd5 \u4e03\u3001\u5178\u578b\u6545\u969c\u6df1\u5ea6\u6392\u67e5 \u516b\u3001\u603b\u7ed3\u4e0e\u8bbe\u8ba1trade-off \u53c2\u8003\u8d44\u6599<\/p>\n<p>\u6458\u8981&#xff1a;\u672c\u6587\u6df1\u5ea6\u89e3\u6790AMD Pensando Salina\/Vulcano DPU\u5728AI RDMA\u96c6\u7fa4\u4e2d\u7684\u786c\u4ef6\u67b6\u6784\u4e0eRTL\u5b9e\u73b0&#xff0c;\u6db5\u76d6P4\u53ef\u7f16\u7a0b\u5f15\u64ce\u3001GPUDirect\u96f6\u62f7\u8d1d\u901a\u8def\u3001\u62e5\u585e\u63a7\u5236\u72b6\u6001\u673a\u53caUEC\u534f\u8bae\u9002\u914d&#xff0c;\u4e3a\u82af\u7247\u8bbe\u8ba1\u4e0e\u9a8c\u8bc1\u5de5\u7a0b\u5e08\u63d0\u4f9b\u4ece\u534f\u8bae\u5b57\u6bb5\u5230\u5bc4\u5b58\u5668\u7ea7\u8c03\u4f18\u7684\u5b9e\u6218\u6307\u5357\u3002<\/p>\n<hr \/>\n<h3>\u4e00\u3001\u524d\u8a00\/AI\u573a\u666f\u80cc\u666f<\/h3>\n<p>\u968f\u7740\u5927\u8bed\u8a00\u6a21\u578b&#xff08;LLM&#xff09;\u53c2\u6570\u89c4\u6a21\u7a81\u7834\u4e07\u4ebf&#xff0c;AI\u96c6\u7fa4\u7684\u74f6\u9888\u5df2\u4ece\u5355\u4e00\u7684\u7b97\u529b&#xff08;FLOPS&#xff09;\u8f6c\u79fb\u81f3\u5185\u5b58\u5899\u4e0e\u901a\u4fe1\u5899\u3002\u5728\u4e07\u5361\u89c4\u6a21\u7684\u5206\u5e03\u5f0f\u8bad\u7ec3\u4e0e\u957f\u4e0a\u4e0b\u6587\u63a8\u7406&#xff08;\u5982RAG\u3001Agentic AI&#xff09;\u4e2d&#xff0c;GPU\u95f4\u7684\u68af\u5ea6\u540c\u6b65&#xff08;AllReduce&#xff09;\u3001KV Cache\u7684\u8de8\u8282\u70b9\u8fc1\u79fb&#xff08;P2P RDMA&#xff09;\u4ee5\u53caMoE\u67b6\u6784\u7684\u4e13\u5bb6\u8def\u7531&#xff08;All-to-All&#xff09;\u5bf9\u7f51\u7edc\u63d0\u51fa\u4e86\u6781\u5176\u82db\u523b\u7684\u8981\u6c42&#xff1a;\u5fae\u79d2\u7ea7\u5c3e\u5ef6\u8fdf\u3001\u96f6\u4e22\u5305\u3001\u4ee5\u53caTB\/s\u7ea7\u7684\u805a\u5408\u5e26\u5bbd\u3002<\/p>\n<p>\u4f20\u7edf\u7684\u901a\u7528\u7f51\u5361&#xff08;NIC&#xff09;\u5728\u5904\u7406400G\/800G\u7ebf\u901f\u6d41\u91cf\u65f6&#xff0c;\u5176\u534f\u8bae\u6808\u5378\u8f7d\u80fd\u529b\u5df2\u6349\u895f\u89c1\u8098&#xff0c;CPU\u88ab\u5927\u91cf\u7f51\u7edc\u4e2d\u65ad\u548c\u5185\u5b58\u62f7\u8d1d&#xff08;Memory Copy&#xff09;\u8017\u5c3d\u3002\u5728\u6b64\u80cc\u666f\u4e0b&#xff0c;\u6570\u636e\u5904\u7406\u5355\u5143&#xff08;DPU&#xff09; \u4e0eAI\u4e13\u7528NIC\u6210\u4e3a\u7834\u5c40\u5173\u952e\u3002AMD\u5728\u6536\u8d2dPensando\u540e&#xff0c;\u63a8\u51fa\u4e86\u9762\u5411AI\u524d\u5411\u7f51\u7edc\u4e0e\u5b58\u50a8\u89e3\u8026\u7684Salina DPU&#xff0c;\u4ee5\u53ca\u9762\u5411Scale-out AI\u96c6\u7fa4\u7684Vulcano 800 AI NIC\u3002\u672c\u6587\u5c06\u6df1\u5165\u82af\u7247\u8bbe\u8ba1\u4e0e\u9a8c\u8bc1\u5c42\u9762&#xff0c;\u5256\u6790\u8fd9\u4e24\u6b3e\u82af\u7247\u5982\u4f55\u901a\u8fc7P4\u53ef\u7f16\u7a0b\u6570\u636e\u5e73\u9762\u3001\u786c\u4ef6\u7ea7\u62e5\u585e\u63a7\u5236\u4e0eGPUDirect\u96f6\u62f7\u8d1d\u901a\u8def&#xff0c;\u91cd\u5851AI RDMA\u7684\u5e95\u5c42\u67b6\u6784\u3002<\/p>\n<h4>1.1 \u6838\u5fc3\u5de5\u7a0b\u95ee\u9898\u5b9a\u4f4d<\/h4>\n<p>\u672c\u6587\u65e8\u5728\u89e3\u51b3\u4ee5\u4e0b\u82af\u7247\u8bbe\u8ba1\u4e0e\u7cfb\u7edf\u9a8c\u8bc1\u4e2d\u7684\u6838\u5fc3\u5de5\u7a0b\u95ee\u9898&#xff1a;<\/p>\n<li>\u534f\u8bae\u6f14\u8fdb\u4e0e\u786c\u4ef6\u6620\u5c04&#xff1a;\u4eceRoCEv2\u5230Ultra Ethernet Consortium (UEC) \u6807\u51c6&#xff0c;P4\u53ef\u7f16\u7a0b\u5f15\u64ce\u5982\u4f55\u5728\u4e0d\u589e\u52a0ASIC\u9762\u79ef\u7684\u524d\u63d0\u4e0b\u5b9e\u73b0\u65b0\u534f\u8bae&#xff08;\u5982\u9009\u62e9\u6027\u91cd\u4f20\u3001\u81ea\u9002\u5e94\u8def\u7531&#xff09;\u7684\u7ebf\u901f\u5904\u7406&#xff1f;<\/li>\n<li>RTL\u7ea7\u6570\u636e\u901a\u8def\u5ef6\u8fdf&#xff1a;\u5728322.26MHz&#xff08;3.1ns\/cycle&#xff09;\u5de5\u4f5c\u9891\u7387\u4e0b&#xff0c;\u4ecePCIe TLP\u63a5\u6536\u5230CQE\u751f\u6210\u7684\u5b8c\u6574\u6d41\u6c34\u7ebf\u5ef6\u8fdf\u5982\u4f55\u4f18\u5316\u81f3&lt;200ns&#xff1f;<\/li>\n<li>AI\u96c6\u5408\u901a\u4fe1\u7684\u786c\u4ef6\u52a0\u901f&#xff1a;RCCL\/NCCL\u7684Ring\/Tree\u7b97\u6cd5\u5982\u4f55\u5728DPU\u5185\u90e8\u901a\u8fc7\u786c\u4ef6\u72b6\u6001\u673a\u5b9e\u73b0&#xff0c;\u4ee5\u51cf\u5c11Host CPU\u5e72\u9884&#xff1f;<\/li>\n<li>\u62e5\u585e\u63a7\u5236\u7684\u82af\u7247\u7ea7\u5b9e\u73b0&#xff1a;HPCC\/DCQCN\u5728\u786c\u4ef6\u4e2d\u7684\u72b6\u6001\u673a\u8bbe\u8ba1\u3001INT&#xff08;Implicit Notification&#xff09;\u673a\u5236\u7684\u89e6\u53d1\u6761\u4ef6\u53ca\u53c2\u6570\u5bc4\u5b58\u5668\u914d\u7f6e\u3002<\/li>\n<h4>1.2 \u672c\u6587\u5b9a\u4f4d\u4e0e\u5dee\u5f02\u5316\u5bf9\u6bd4<\/h4>\n<table>\n<tr>\u7ef4\u5ea6\u672c\u6587&#xff08;\u82af\u7247\u8bbe\u8ba1\u9a8c\u8bc1\u7ea7&#xff09;\u5e38\u89c4\u7f51\u7edc\u67b6\u6784\u6587\u7ae0\u9a71\u52a8\/\u8fd0\u7ef4\u914d\u7f6e\u6587\u7ae0<\/tr>\n<tbody>\n<tr>\n<td>\u62bd\u8c61\u5c42\u7ea7<\/td>\n<td>RTL\u6d41\u6c34\u7ebf\u3001\u5bc4\u5b58\u5668\u3001\u72b6\u6001\u673a\u3001\u65f6\u5e8f\u56fe<\/td>\n<td>\u7cfb\u7edf\u67b6\u6784\u56fe\u3001\u534f\u8bae\u6808\u3001\u62d3\u6251<\/td>\n<td>\u64cd\u4f5c\u7cfb\u7edf\u547d\u4ee4\u3001\u9a71\u52a8\u53c2\u6570<\/td>\n<\/tr>\n<tr>\n<td>\u5173\u6ce8\u6307\u6807<\/td>\n<td>\u5468\u671f\u6570(ns)\u3001SRAM\u5bb9\u91cf\u3001\u9762\u79ef\/\u529f\u8017Trade-off<\/td>\n<td>\u541e\u5410\u91cf(Gbps)\u3001\u5c3e\u5ef6\u8fdf(\u03bcs)<\/td>\n<td>\u914d\u7f6e\u6b63\u786e\u6027\u3001\u6545\u969c\u6062\u590d\u65f6\u95f4<\/td>\n<\/tr>\n<tr>\n<td>\u6838\u5fc3\u5185\u5bb9<\/td>\n<td>BTH\u5b57\u6bb5\u89e3\u6790\u3001DMA\u63cf\u8ff0\u7b26\u94fe\u3001BAR\u6620\u5c04<\/td>\n<td>\u7f51\u7edc\u62d3\u6251\u3001RDMA\u6982\u5ff5\u3001DPU\u5b9a\u4f4d<\/td>\n<td>ethtool\u3001ibv_devinfo\u3001sysctl<\/td>\n<\/tr>\n<tr>\n<td>\u76ee\u6807\u8bfb\u8005<\/td>\n<td>\u82af\u7247\u8bbe\u8ba1\/\u9a8c\u8bc1\u5de5\u7a0b\u5e08\u3001\u56fa\u4ef6\u5f00\u53d1\u8005<\/td>\n<td>\u7f51\u7edc\u67b6\u6784\u5e08\u3001\u7cfb\u7edf\u5de5\u7a0b\u5e08<\/td>\n<td>\u8fd0\u7ef4\u5de5\u7a0b\u5e08\u3001\u5b9e\u65bd\u4eba\u5458<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h3>\u4e8c\u3001\u6838\u5fc3\u539f\u7406\u4e0e\u534f\u8bae\u6df1\u5ea6<\/h3>\n<p>\u5728AI RDMA\u96c6\u7fa4\u4e2d&#xff0c;\u7f51\u7edc\u534f\u8bae\u4e0d\u4ec5\u662f\u6570\u636e\u4f20\u8f93\u7684\u89c4\u5219&#xff0c;\u66f4\u662f\u786c\u4ef6\u6d41\u6c34\u7ebf\u8bbe\u8ba1\u7684\u76f4\u63a5\u8f93\u5165\u3002\u672c\u8282\u5c06\u57fa\u4e8eIB Spec v1.5\u4e0eUEC v1.0\u8349\u6848&#xff0c;\u9010\u5b57\u6bb5\u89e3\u6790\u5173\u952e\u534f\u8bae&#xff0c;\u5e76\u5256\u6790\u5176\u5728\u82af\u7247\u4e2d\u7684\u72b6\u6001\u673a\u5b9e\u73b0\u3002<\/p>\n<h4>2.1 RoCEv2 \/ UEC \u534f\u8bae\u5305\u5934\u9010\u5b57\u6bb5\u89e3\u6790<\/h4>\n<p>AI\u8bad\u7ec3\u6d41\u91cf\u4ee5\u77ed\u5c0f\u5bc6\u96c6\u7684AllReduce\u548c\u7a81\u53d1\u7684KV Cache P2P\u4e3a\u4e3b\u3002\u6839\u636eIB Spec Section 10.2.1&#xff0c;Base Transport Header (BTH) \u662fRDMA\u5f15\u64ce\u89e3\u6790\u7684\u9996\u8981\u76ee\u6807\u3002<\/p>\n<table>\n<tr>\u5b57\u6bb5\u540dBit\u8303\u56f4\u542b\u4e49\u4e0eAI\u573a\u666f\u53d6\u503c\u786c\u4ef6\u5904\u7406\u52a8\u4f5c<\/tr>\n<tbody>\n<tr>\n<td>Opcode<\/td>\n<td>[31:24]<\/td>\n<td>\u64cd\u4f5c\u7801\u3002AI\u573a\u666f\u5e38\u89c1&#xff1a;RC WRITE (0x0A), RC SEND (0x04), RC ACK (0x11)<\/td>\n<td>\u67e5\u8868\u8fdb\u5165\u5bf9\u5e94Tx\/Rx\u72b6\u6001\u673a\u5206\u652f<\/td>\n<\/tr>\n<tr>\n<td>Tver<\/td>\n<td>[23:22]<\/td>\n<td>\u4f20\u8f93\u5c42\u7248\u672c\u3002RoCEv2\u4e3a0x0&#xff0c;UEC\u53ef\u80fd\u6269\u5c55<\/td>\n<td>\u7248\u672c\u6821\u9a8c&#xff0c;\u975e\u6cd5\u5219\u4e22\u5f03\u5e76\u751f\u6210NAK<\/td>\n<\/tr>\n<tr>\n<td>Pkey<\/td>\n<td>[21:16]<\/td>\n<td>\u5206\u533a\u952e\u3002AI\u96c6\u7fa4\u901a\u5e38\u914d\u7f6e\u4e3a0xFFFF (Full Member)<\/td>\n<td>\u786c\u4ef6ACL\u5339\u914d&#xff0c;\u9694\u79bb\u591a\u79df\u6237\u6d41\u91cf<\/td>\n<\/tr>\n<tr>\n<td>FECN<\/td>\n<td>[15]<\/td>\n<td>\u524d\u5411\u663e\u5f0f\u62e5\u585e\u901a\u77e5\u3002UEC\u5f15\u5165\u7684\u589e\u5f3a\u578bECN<\/td>\n<td>\u89e6\u53d1\u786c\u4ef6\u62e5\u585e\u63a7\u5236\u72b6\u6001\u673a\u66f4\u65b0<\/td>\n<\/tr>\n<tr>\n<td>BECN<\/td>\n<td>[14]<\/td>\n<td>\u540e\u5411\u663e\u5f0f\u62e5\u585e\u901a\u77e5\u3002\u7528\u4e8eCNP&#xff08;\u62e5\u585e\u901a\u77e5\u5305&#xff09;<\/td>\n<td>\u63d0\u53d6CNP\u6807\u5fd7&#xff0c;\u56de\u4f20Rate Limiter<\/td>\n<\/tr>\n<tr>\n<td>DLID<\/td>\n<td>[15:0] (IPv6)<\/td>\n<td>\u76ee\u6807\u903b\u8f91ID \/ IPv6 Dest Port (4791)<\/td>\n<td>\u8def\u7531\u8868\u67e5\u627e&#xff0c;\u51b3\u5b9a\u7269\u7406\u7aef\u53e3\u8f93\u51fa<\/td>\n<\/tr>\n<tr>\n<td>QP_Number<\/td>\n<td>[23:0]<\/td>\n<td>\u76ee\u6807QP\u53f7\u3002AI\u5927\u6a21\u578b\u8bad\u7ec3\u5e38\u4f7f\u7528&gt;1024\u7684QP\u6c60<\/td>\n<td>\u7d22\u5f15QP Context SRAM<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>2.2 QP\u72b6\u6001\u673a\u4e0e\u786c\u4ef6\u8f6c\u79fb\u6761\u4ef6<\/h4>\n<p>\u5728\u82af\u7247\u5185\u90e8&#xff0c;QP&#xff08;Queue Pair&#xff09;\u7684\u751f\u547d\u5468\u671f\u7531\u786c\u4ef6\u72b6\u6001\u673a\u4e25\u683c\u63a7\u5236\u3002\u4ee5\u4e0b\u662fRC QP\u7684\u72b6\u6001\u8f6c\u79fbASCII\u56fe&#xff0c;\u6807\u6ce8\u4e86\u89e6\u53d1\u6761\u4ef6\u4e0e\u5b9a\u65f6\u5668&#xff1a;<\/p>\n<p>       &#043;&#8212;&#8212;&#8212;&#043;   RESET_QP   &#043;&#8212;&#8212;-&#043;   INIT_QP    &#043;&#8212;&#8212;-&#043;<br \/>\n       |  RESET  |&#8212;&#8212;&#8212;&#8212;-&gt;| ERROR |&#8212;&#8212;&#8212;&#8212;-&gt;| INIT  |<br \/>\n       &#043;&#8212;&#8212;&#8212;&#043;              &#043;&#8212;&#8212;-&#043;              &#043;&#8212;&#8212;-&#043;<br \/>\n                                                          |  ^<br \/>\n                                                 RTR_QP |  | RTS_QP<br \/>\n                                                          v  |<br \/>\n       &#043;&#8212;&#8212;&#8212;&#043;   TIMEOUT    &#043;&#8212;&#8212;-&#043;   RTR_QP     &#043;&#8212;&#8212;-&#043;<br \/>\n       |   SQD   |&lt;&#8212;&#8212;&#8212;&#8212;-| SQDR  |&lt;&#8212;&#8212;&#8212;&#8212;-|  RTR  |<br \/>\n       &#043;&#8212;&#8212;&#8212;&#043;              &#043;&#8212;&#8212;-&#043;              &#043;&#8212;&#8212;-&#043;<br \/>\n          ^  |                     ^                     |<br \/>\n  SQD_REQ |  | SQD                 | TIMEOUT             | RTS_QP<br \/>\n          |  v                     |                     v<br \/>\n       &#043;&#8212;&#8212;-&#043;               &#043;&#8212;&#8212;-&#043;             &#043;&#8212;&#8212;-&#043;<br \/>\n       |  SQD  |               |  SQD  |             |  RTS  |<br \/>\n       &#043;&#8212;&#8212;-&#043;               &#043;&#8212;&#8212;-&#043;             &#043;&#8212;&#8212;-&#043;<\/p>\n<p>\u5173\u952e\u5b9a\u65f6\u5668\u8bbe\u8ba1&#xff1a;<\/p>\n<ul>\n<li>Retry Timer (RTT)&#xff1a;\u5728Tx\u7aef&#xff0c;\u53d1\u9001Unacknowledged\u6d88\u606f\u540e\u542f\u52a8\u3002\u8d85\u65f6\u672a\u6536\u5230ACK&#xff0c;\u786c\u4ef6\u81ea\u52a8\u91cd\u4f20&#xff08;Retry Count\u9012\u51cf&#xff09;\u3002AI\u573a\u666f\u4e2d&#xff0c;\u4e3a\u907f\u514dIncast\u5bfc\u81f4\u7684\u865a\u5047\u8d85\u65f6&#xff0c;RTT\u901a\u5e38\u914d\u7f6e\u4e3a\u52a8\u6001\u8ba1\u7b97\u503c&#xff08;\u57fa\u4e8eHPCC\u53cd\u9988&#xff09;\u3002<\/li>\n<li>NAK Timer&#xff1a;\u5728Rx\u7aef&#xff0c;\u6536\u5230\u4e71\u5e8f\u5305\u540e\u542f\u52a8&#xff0c;\u7b49\u5f85\u7f3a\u5931\u5305\u5230\u8fbe\u3002\u8d85\u65f6\u5219\u53d1\u9001NAK\u3002<\/li>\n<\/ul>\n<h4>2.3 AI\u901a\u4fe1\u6a21\u5f0f\u7684\u6570\u636e\u6d41\u8def\u5f84<\/h4>\n<h5>2.3.1 AllReduce (Ring\u7b97\u6cd5)<\/h5>\n<p>\u5728Ring AllReduce\u4e2d&#xff0c;N\u4e2aGPU\u8282\u70b9\u5f62\u6210\u903b\u8f91\u73af\u3002\u6570\u636e\u88ab\u5207\u5206\u4e3aN\u4e2aChunk\u3002\u6bcf\u4e2a\u8282\u70b9\u6267\u884c Reduce-Scatter \u7136\u540e All-Gather\u3002 \u6570\u636e\u6d41\u8def\u5f84&#xff1a;<\/p>\n<li>GPU\u5c06Chunk\u5199\u5165Host DRAM&#xff08;\u6216\u901a\u8fc7GPUDirect\u5199\u5165NIC BAR&#xff09;\u3002<\/li>\n<li>\u56fa\u4ef6\/\u9a71\u52a8\u6784\u5efaWQE&#xff0c;Doorbell\u901a\u77e5NIC\u3002<\/li>\n<li>NIC DMA\u5f15\u64ce\u8bfb\u53d6\u6570\u636e&#xff0c;\u5c01\u88c5RoCEv2\u5305\u5934&#xff08;Opcode&#061;RC WRITE&#xff09;\u3002<\/li>\n<li>\u7f51\u7edc\u4f20\u8f93\u81f3\u4e0b\u4e00\u8282\u70b9NIC\u3002<\/li>\n<li>\u63a5\u6536\u7aefNIC DMA\u5c06\u6570\u636e\u5199\u5165\u6307\u5b9a\u5185\u5b58\u5730\u5740&#xff0c;\u89e6\u53d1CQE\u3002<\/li>\n<li>GPU\u901a\u8fc7\u8f6e\u8be2CQE\u6216\u4e2d\u65ad\u83b7\u53d6\u5b8c\u6210\u4fe1\u53f7&#xff0c;\u6267\u884c\u672c\u5730Reduce\u8ba1\u7b97\u3002<\/li>\n<h5>2.3.2 KV Cache P2P (Disaggregated Prefill\/Decode)<\/h5>\n<p>\u5728\u63a8\u7406\u5206\u79bb\u67b6\u6784\u4e2d&#xff0c;Prefill\u8282\u70b9\u8ba1\u7b97KV Cache\u540e&#xff0c;\u9700\u901a\u8fc7RDMA Read\/Write\u5c06\u5176\u8fc1\u79fb\u81f3Decode\u8282\u70b9\u3002 \u786c\u4ef6\u52a0\u901f\u70b9&#xff1a;Salina DPU\u5229\u7528P4\u5f15\u64ce\u5728\u6570\u636e\u8fdb\u5165\u7f51\u7edc\u524d&#xff0c;\u901a\u8fc7\u5185\u7f6e\u7684LZRW1-A\u538b\u7f29\u5f15\u64ce\u5bf9KV Cache\u8fdb\u884c\u7ebf\u901f\u538b\u7f29&#xff0c;\u964d\u4f4e\u7f51\u7edc\u5e26\u5bbd\u5360\u7528&#xff1b;\u63a5\u6536\u7aefDPU\u89e3\u538b\u540e\u76f4\u63a5\u901a\u8fc7GPUDirect\u5199\u5165\u76ee\u6807GPU HBM\u3002<\/p>\n<hr \/>\n<h3>\u4e09\u3001\u786c\u4ef6\u67b6\u6784\u6df1\u5ea6\u5256\u6790<\/h3>\n<p>\u672c\u8282\u4ee5AMD Pensando Salina DPU\u4e0eVulcano AI NIC\u4e3a\u84dd\u672c&#xff0c;\u6df1\u5165\u82af\u7247\u5fae\u67b6\u6784\u4e0eRTL\u5b9e\u73b0\u3002<\/p>\n<h4>3.1 \u82af\u7247\u6574\u4f53\u67b6\u6784ASCII\u56fe<\/h4>\n<p>&#043;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&#043;<br \/>\n|                           AMD Pensando Salina \/ Vulcano SoC                       |<br \/>\n|                                                                                   |<br \/>\n|  &#043;&#8212;&#8212;&#8212;&#8212;&#8212;-&#043;       &#043;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&#043;       &#043;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#043;  |<br \/>\n|  | Arm Neoverse   |       | P4 Programmable   |       | RDMA \/ RoCEv2 Engine   |  |<br \/>\n|  | N1\/V2 Cores    |&lt;&#061;&#061;&#061;&#061;&#061;&gt;| Packet Pipeline   |&lt;&#061;&#061;&#061;&#061;&#061;&gt;| (QP Context, DMA, CQ)  |  |<br \/>\n|  | (Control Plane)|       | (232 MPUs)        |       |                        |  |<br \/>\n|  &#043;&#8212;&#8212;&#8212;&#8212;&#8212;-&#043;       &#043;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&#043;       &#043;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#043;  |<br \/>\n|         |                          |                          |                  |<br \/>\n|         v                          v                          v                  |<br \/>\n|  &#043;&#8212;&#8212;&#8212;&#8212;&#8212;-&#043;       &#043;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&#043;       &#043;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#043;  |<br \/>\n|  | Crypto Engine  |       | Compression Engine|       | GPUDirect \/ P2P DMA    |  |<br \/>\n|  | (IPsec\/PSP)    |       | (LZ4\/Deflate)     |       | (Zero-Copy to GPU BAR) |  |<br \/>\n|  &#043;&#8212;&#8212;&#8212;&#8212;&#8212;-&#043;       &#043;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&#043;       &#043;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#043;  |<br \/>\n|         |                          |                          |                  |<br \/>\n|         &#043;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&#043;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&#043;                  |<br \/>\n|                                    |                                              |<br \/>\n|                           &#043;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&#043;                                   |<br \/>\n|                           | PCIe Gen5\/Gen6    |                                   |<br \/>\n|                           | Controller (x16)  |                                   |<br \/>\n|                           &#043;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&#043;                                   |<br \/>\n|                                    |                                              |<br \/>\n&#043;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&#043;<br \/>\n                                     | (Host CPU \/ GPU)<\/p>\n<h4>3.2 RNIC\u82af\u7247\u5bc4\u5b58\u5668\u5b9a\u4e49\u8868<\/h4>\n<p>\u4ee5\u4e0b\u662fRDMA\u5f15\u64ce\u6838\u5fc3\u63a7\u5236\u5bc4\u5b58\u5668\u7684\u90e8\u5206\u5b9a\u4e49&#xff08;\u5047\u8bbe\u57fa\u5730\u5740\u4e3aBAR0\u76840x100000&#xff09;&#xff1a;<\/p>\n<table>\n<tr>\u5bc4\u5b58\u5668\u540d\u504f\u79fb\u4f4d\u57df\u590d\u4f4d\u503c\u5c5e\u6027\u8bf4\u660e<\/tr>\n<tbody>\n<tr>\n<td>QP_CTX_BASE<\/td>\n<td>0x0000<\/td>\n<td>[31:0]<\/td>\n<td>0x0<\/td>\n<td>RW<\/td>\n<td>QP\u4e0a\u4e0b\u6587SRAM\u57fa\u5730\u5740&#xff0c;\u97004KB\u5bf9\u9f50<\/td>\n<\/tr>\n<tr>\n<td>QP_CTX_MASK<\/td>\n<td>0x0004<\/td>\n<td>[19:0]<\/td>\n<td>0x0<\/td>\n<td>RW<\/td>\n<td>QP\u4e0a\u4e0b\u6587\u63a9\u7801&#xff0c;\u7528\u4e8e\u54c8\u5e0c\u7d22\u5f15<\/td>\n<\/tr>\n<tr>\n<td>CQ_PRODUCER<\/td>\n<td>0x0010<\/td>\n<td>[23:0]<\/td>\n<td>0x0<\/td>\n<td>RW<\/td>\n<td>CQ\u751f\u4ea7\u8005\u7d22\u5f15&#xff0c;\u56fa\u4ef6\u5199\u5165\u4ee5\u901a\u77e5Host<\/td>\n<\/tr>\n<tr>\n<td>CQ_CONSUMER<\/td>\n<td>0x0014<\/td>\n<td>[23:0]<\/td>\n<td>0x0<\/td>\n<td>RO<\/td>\n<td>CQ\u6d88\u8d39\u8005\u7d22\u5f15&#xff0c;Host\u66f4\u65b0&#xff0c;\u786c\u4ef6\u53ea\u8bfb<\/td>\n<\/tr>\n<tr>\n<td>DMA_CTRL<\/td>\n<td>0x0020<\/td>\n<td>[7:0]<\/td>\n<td>0x0<\/td>\n<td>RW<\/td>\n<td>[0]:DMA\u4f7f\u80fd, [1]:Scatter\/Gather\u4f7f\u80fd, [2]:Bounce Buffer\u4f7f\u80fd<\/td>\n<\/tr>\n<tr>\n<td>INT_MOD<\/td>\n<td>0x0030<\/td>\n<td>[15:0]<\/td>\n<td>0x0<\/td>\n<td>RW<\/td>\n<td>\u4e2d\u65ad\u5408\u5e76\u5b9a\u65f6\u5668&#xff08;\u5355\u4f4d&#xff1a;1\u03bcs&#xff09;&#xff0c;AI\u8bad\u7ec3\u901a\u5e38\u8bbe\u4e3a0&#xff08;\u7acb\u5373\u4e2d\u65ad&#xff09;\u6216\u8f83\u5927\u503c&#xff08;\u6279\u5904\u7406&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>CC_STATE<\/td>\n<td>0x0040<\/td>\n<td>[31:0]<\/td>\n<td>0x0<\/td>\n<td>RO<\/td>\n<td>\u62e5\u585e\u63a7\u5236\u72b6\u6001\u673a\u5f53\u524d\u72b6\u6001\u53ca\u5f53\u524d\u53d1\u9001\u901f\u7387(Rate)<\/td>\n<\/tr>\n<tr>\n<td>HPCC_INT_TH<\/td>\n<td>0x0050<\/td>\n<td>[15:0]<\/td>\n<td>0x0<\/td>\n<td>RW<\/td>\n<td>HPCC Implicit Notification \u9608\u503c&#xff0c;\u961f\u5217\u6df1\u5ea6\u8d85\u8fc7\u6b64\u503c\u89e6\u53d1INT<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>3.3 RTL\u7ea7\u6570\u636e\u901a\u8def\u5206\u89e3<\/h4>\n<p>\u5728322.26MHz&#xff08;3.1ns\/cycle&#xff09;\u5de5\u4f5c\u9891\u7387\u4e0b&#xff0c;RDMA Tx\/Rx\u6d41\u6c34\u7ebf\u8bbe\u8ba1\u5982\u4e0b&#xff1a;<\/p>\n<table>\n<tr>\u6d41\u6c34\u7ea7\u6a21\u5757\u540d\u8f93\u5165\/\u8f93\u51fa\u4fe1\u53f7\u63e1\u624b\u534f\u8bae\u5468\u671f\u6570\u5ef6\u8fdf(ns)\u529f\u80fd\u63cf\u8ff0<\/tr>\n<tbody>\n<tr>\n<td>Stage 1<\/td>\n<td>pcie_rx_tlp<\/td>\n<td>tlp_valid_i\/o, tlp_data_i\/o<\/td>\n<td>AXI4-Stream<\/td>\n<td>3<\/td>\n<td>9.3<\/td>\n<td>\u89e3\u6790PCIe TLP&#xff0c;\u63d0\u53d6DMA\u5730\u5740\u4e0e\u957f\u5ea6<\/td>\n<\/tr>\n<tr>\n<td>Stage 2<\/td>\n<td>pkt_hdr_parse<\/td>\n<td>hdr_valid, hdr_data<\/td>\n<td>Valid\/Ready<\/td>\n<td>2<\/td>\n<td>6.2<\/td>\n<td>\u89e3\u6790\u4ee5\u592a\u7f51\/IP\/UDP\/BTH\u5305\u5934&#xff0c;\u8ba1\u7b97CRC<\/td>\n<\/tr>\n<tr>\n<td>Stage 3<\/td>\n<td>qp_ctx_lookup<\/td>\n<td>qp_num, ctx_data<\/td>\n<td>SRAM Req\/Ack<\/td>\n<td>4<\/td>\n<td>12.4<\/td>\n<td>\u6839\u636eQP Number\u67e5SRAM&#xff0c;\u83b7\u53d6QP\u4e0a\u4e0b\u6587<\/td>\n<\/tr>\n<tr>\n<td>Stage 4<\/td>\n<td>dma_desc_fetch<\/td>\n<td>desc_valid, desc_data<\/td>\n<td>AXI4<\/td>\n<td>4<\/td>\n<td>12.4<\/td>\n<td>\u4eceHost DRAM\u83b7\u53d6Scatter\/Gather\u63cf\u8ff0\u7b26<\/td>\n<\/tr>\n<tr>\n<td>Stage 5<\/td>\n<td>payload_dma<\/td>\n<td>data_valid, data_ready<\/td>\n<td>AXI4<\/td>\n<td>5<\/td>\n<td>15.5<\/td>\n<td>\u6267\u884cPayload DMA&#xff0c;\u652f\u6301\u8de8\u9875\u8fb9\u754c\u5904\u7406<\/td>\n<\/tr>\n<tr>\n<td>Stage 6<\/td>\n<td>pkt_gen_tx<\/td>\n<td>tx_valid, tx_data<\/td>\n<td>MAC Interface<\/td>\n<td>3<\/td>\n<td>9.3<\/td>\n<td>\u751f\u6210RoCEv2\u62a5\u6587&#xff0c;\u63d2\u5165FCS&#xff0c;\u53d1\u9001\u81f3MAC<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u603b\u6d41\u6c34\u7ebf\u5ef6\u8fdf&#xff1a;3&#043;2&#043;4&#043;4&#043;5&#043;3 &#061; 21 cycles \u2248 65.1 ns&#xff08;\u4e0d\u542b\u5916\u90e8SRAM\/DRAM\u8bbf\u95ee\u5ef6\u8fdf&#xff09;\u3002\u5b9e\u9645\u7aef\u5230\u7aef\u5ef6\u8fdf\u9700\u52a0\u4e0aPCIe\u4e0eMAC\u5ef6\u8fdf&#xff0c;\u901a\u5e38\u5728150ns-200ns\u4e4b\u95f4\u3002<\/p>\n<h4>3.4 PCIe BAR\u7a7a\u95f4\u5212\u5206\u4e0e\u6620\u5c04<\/h4>\n<table>\n<tr>BAR\u5730\u5740\u8303\u56f4\u6620\u5c04\u5185\u5bb9\u8bbf\u95ee\u65b9\u5f0f\u8bf4\u660e<\/tr>\n<tbody>\n<tr>\n<td>BAR0<\/td>\n<td>0x0000 &#8211; 0xFFFF<\/td>\n<td>\u63a7\u5236\u4e0e\u72b6\u6001\u5bc4\u5b58\u5668 (CSR)<\/td>\n<td>MMIO (32\/64-bit)<\/td>\n<td>\u5305\u542bQP\u914d\u7f6e\u3001CQ Doorbell\u3001\u4e2d\u65ad\u63a7\u5236<\/td>\n<\/tr>\n<tr>\n<td>BAR1<\/td>\n<td>0x0000 &#8211; 0x3FFFFF<\/td>\n<td>UAR (User Access Region)<\/td>\n<td>MMIO (64-bit)<\/td>\n<td>\u7528\u4e8eDoorbell\u5199\u5165&#xff0c;\u89e6\u53d1WQE\/CQE\u5904\u7406<\/td>\n<\/tr>\n<tr>\n<td>BAR2<\/td>\n<td>0x0000 &#8211; GPU_SIZE<\/td>\n<td>GPU BAR \u6620\u5c04\u533a<\/td>\n<td>MMIO (64-bit)<\/td>\n<td>\u5c06\u8fdc\u7aefGPU\u663e\u5b58\u6620\u5c04\u5230\u672c\u5730PCIe\u7a7a\u95f4&#xff0c;\u5b9e\u73b0GPUDirect<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>3.5 WQE\/CQE\u683c\u5f0f\u4e0e\u65f6\u5e8f\u5206\u89e3<\/h4>\n<p>WQE (Work Queue Element) \u4f4d\u57df\u5b9a\u4e49&#xff1a;<\/p>\n<p><span class=\"token keyword\">struct<\/span> <span class=\"token class-name\">wqe<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token class-name\">uint8_t<\/span>  opcode<span class=\"token punctuation\">;<\/span>      <span class=\"token comment\">\/\/ [7:0] \u64cd\u4f5c\u7801 (0x0A: WRITE, 0x04: SEND)<\/span><br \/>\n    <span class=\"token class-name\">uint8_t<\/span>  flags<span class=\"token punctuation\">;<\/span>       <span class=\"token comment\">\/\/ [15:8] \u6807\u5fd7\u4f4d (Signaled, Solicited)<\/span><br \/>\n    <span class=\"token class-name\">uint16_t<\/span> wqe_index<span class=\"token punctuation\">;<\/span>   <span class=\"token comment\">\/\/ [31:16] WQE\u7d22\u5f15<\/span><br \/>\n    <span class=\"token class-name\">uint32_t<\/span> qp_num<span class=\"token punctuation\">;<\/span>      <span class=\"token comment\">\/\/ [63:32] \u76ee\u6807QP\u53f7<\/span><br \/>\n    <span class=\"token class-name\">uint64_t<\/span> remote_addr<span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ [127:64] \u8fdc\u7aef\u865a\u62df\u5730\u5740 (IOVA)<\/span><br \/>\n    <span class=\"token class-name\">uint32_t<\/span> rkey<span class=\"token punctuation\">;<\/span>        <span class=\"token comment\">\/\/ [159:128] \u8fdc\u7aef\u5185\u5b58\u952e<\/span><br \/>\n    <span class=\"token class-name\">uint32_t<\/span> length<span class=\"token punctuation\">;<\/span>      <span class=\"token comment\">\/\/ [191:160] \u6570\u636e\u957f\u5ea6<\/span><br \/>\n    <span class=\"token class-name\">uint64_t<\/span> local_addr<span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ [255:192] \u672c\u5730SGL\u9996\u5730\u5740<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>\u63d0\u4ea4\/\u6d88\u8d39\u65f6\u5e8f\u5206\u89e3&#xff08;\u4ee5RDMA Write\u4e3a\u4f8b&#xff09;&#xff1a;<\/p>\n<li>post_send (User): \u7528\u6237\u6001\u586b\u5145WQE&#xff0c;\u5199\u5165\u5185\u5b58\u3002\u5ef6\u8fdf&#xff1a;~50ns\u3002<\/li>\n<li>Doorbell (PCIe): \u5199\u5165UAR\u5bc4\u5b58\u5668\u3002\u5ef6\u8fdf&#xff1a;~100ns (PCIe Gen5 x16)\u3002<\/li>\n<li>NIC Fetch WQE: DMA\u8bfb\u53d6WQE\u3002\u5ef6\u8fdf&#xff1a;~150ns\u3002<\/li>\n<li>Packet Gen &amp; Tx: \u6d41\u6c34\u7ebf\u5904\u7406\u5e76\u53d1\u9001\u3002\u5ef6\u8fdf&#xff1a;~200ns\u3002<\/li>\n<li>Network Transit: \u4ea4\u6362\u673a\u8f6c\u53d1\u3002\u5ef6\u8fdf&#xff1a;~1\u03bcs &#8211; 5\u03bcs\u3002<\/li>\n<li>Rx Processing: \u63a5\u6536\u7aef\u6d41\u6c34\u7ebf\u5904\u7406\u3002\u5ef6\u8fdf&#xff1a;~200ns\u3002<\/li>\n<li>DMA Write: \u5199\u5165\u76ee\u6807\u5185\u5b58\u3002\u5ef6\u8fdf&#xff1a;~150ns\u3002<\/li>\n<li>CQE Gen &amp; Arm: \u751f\u6210CQE&#xff0c;\u89e6\u53d1\u4e2d\u65ad\u6216\u8f6e\u8be2\u3002\u5ef6\u8fdf&#xff1a;~100ns\u3002 \u603b\u5355\u5411\u5ef6\u8fdf&#xff1a;\u7ea6 1.5\u03bcs &#8211; 6\u03bcs&#xff08;\u53d6\u51b3\u4e8e\u7f51\u7edc\u62d3\u6251&#xff09;\u3002<\/li>\n<hr \/>\n<h3>\u56db\u3001AI\u901a\u4fe1\u7684\u786c\u4ef6\u52a0\u901f\u5b9e\u73b0<\/h3>\n<h4>4.1 NCCL\/RCCL\u96c6\u5408\u901a\u4fe1\u7684\u786c\u4ef6\u52a0\u901f\u6d41\u6c34\u7ebf<\/h4>\n<p>\u4f20\u7edf\u7684NCCL\/RCCL\u4f9d\u8d56Host CPU\u8fdb\u884c\u6d88\u606f\u8c03\u5ea6\u4e0e\u72b6\u6001\u7ef4\u62a4\u3002\u5728Pensando DPU\u4e2d&#xff0c;\u6211\u4eec\u8bbe\u8ba1\u4e86Hardware Collective Engine (HCE)\u3002<\/p>\n<ul>\n<li>Ring\u7b97\u6cd5\u786c\u4ef6\u6620\u5c04&#xff1a;HCE\u5185\u90e8\u7ef4\u62a4\u4e00\u4e2a\u73af\u5f62\u62d3\u6251\u8868\u3002\u5f53\u6536\u5230AllReduce\u6307\u4ee4\u65f6&#xff0c;\u786c\u4ef6\u81ea\u52a8\u5c06\u6570\u636e\u5207\u5206\u4e3aN\u4e2aChunk&#xff0c;\u5e76\u751f\u6210N\u4e2a\u8fde\u7eed\u7684WQE&#xff0c;\u65e0\u9700Host\u5e72\u9884\u3002<\/li>\n<li>Tree\u7b97\u6cd5\u786c\u4ef6\u6620\u5c04&#xff1a;\u5229\u7528\u786c\u4ef6\u4e8c\u53c9\u6811\u72b6\u6001\u673a&#xff0c;\u5b9e\u73b0Log(N)\u5ef6\u8fdf\u7684Reduce\u64cd\u4f5c\u3002\u6bcf\u4e2a\u8282\u70b9\u5728\u6536\u5230\u4e24\u4e2a\u5b50\u8282\u70b9\u7684ACK\u540e&#xff0c;\u786c\u4ef6\u81ea\u52a8\u6267\u884c\u672c\u5730Reduce\u5e76\u5411\u4e0a\u53d1\u9001\u3002<\/li>\n<\/ul>\n<h4>4.2 GPUDirect RDMA\u6570\u636e\u901a\u8def\u4e0eBAR\u6620\u5c04<\/h4>\n<p>GPUDirect RDMA\u7684\u6838\u5fc3\u5728\u4e8e\u7ed5\u8fc7Host DRAM&#xff0c;\u5b9e\u73b0GPU\u663e\u5b58\u4e0eNIC\u4e4b\u95f4\u7684\u76f4\u63a5\u6570\u636e\u642c\u8fd0\u3002 \u6570\u636e\u901a\u8def&#xff1a;<\/p>\n<li>GPU\u901a\u8fc7PCIe BAR2\u8bbf\u95eeNIC\u7684DMA\u5f15\u64ce\u3002<\/li>\n<li>NIC\u7684DMA\u63a7\u5236\u5668\u901a\u8fc7PCIe Switch\u6216\u76f4\u63a5\u8fde\u63a5&#xff0c;\u8bbf\u95eeGPU\u7684BAR\u7a7a\u95f4\u3002<\/li>\n<li>\u5730\u5740\u7ffb\u8bd1&#xff1a;NIC\u5185\u90e8\u5305\u542bIOVA (I\/O Virtual Address) \u5230 GPU PA (Physical Address) \u7684\u7ffb\u8bd1\u8868&#xff08;IOMMU bypass&#xff09;\u3002<\/li>\n<table>\n<tr>\u6e90\u7aef\u76ee\u6807\u7aef\u5730\u5740\u6620\u5c04\u5173\u7cfb\u5ef6\u8fdf\u5dee\u5f02<\/tr>\n<tbody>\n<tr>\n<td>GPU HBM<\/td>\n<td>NIC (Tx)<\/td>\n<td>GPU BAR -&gt; NIC DMA<\/td>\n<td>~300ns<\/td>\n<\/tr>\n<tr>\n<td>NIC (Rx)<\/td>\n<td>GPU HBM<\/td>\n<td>NIC DMA -&gt; GPU BAR<\/td>\n<td>~300ns<\/td>\n<\/tr>\n<tr>\n<td>GPU HBM<\/td>\n<td>Host DRAM<\/td>\n<td>GPU BAR -&gt; Host MMU<\/td>\n<td>~500ns<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>4.3 \u62e5\u585e\u63a7\u5236\u786c\u4ef6\u5b9e\u73b0&#xff1a;HPCC\u4e0eDCQCN<\/h4>\n<p>\u5728AI\u96c6\u7fa4\u4e2d&#xff0c;Incast&#xff08;\u591a\u5bf9\u4e00&#xff09;\u6d41\u91cf\u6781\u6613\u5bfc\u81f4\u4ea4\u6362\u673a\u7f13\u51b2\u533a\u6ea2\u51fa\u3002\u6211\u4eec\u91c7\u7528HPCC (High Precision Congestion Control) \u7ed3\u5408\u786c\u4ef6INT\u673a\u5236\u3002<\/p>\n<p>HPCC INT (Implicit Notification) \u786c\u4ef6\u72b6\u6001\u673a&#xff1a;<\/p>\n<p>       &#043;&#8212;&#8212;&#8212;&#043;   Queue &gt; TH   &#043;&#8212;&#8212;&#8212;&#043;<br \/>\n       |  IDLE   |&#8212;&#8212;&#8212;&#8212;&#8212;&gt;|  INT    |<br \/>\n       &#043;&#8212;&#8212;&#8212;&#043;                &#043;&#8212;&#8212;&#8212;&#043;<br \/>\n           ^                          |<br \/>\n           |  ACK Received            | Send INT Packet<br \/>\n           |                          v<br \/>\n       &#043;&#8212;&#8212;&#8212;&#043;                &#043;&#8212;&#8212;&#8212;&#043;<br \/>\n       | UPDATE  |&lt;&#8212;&#8212;&#8212;&#8212;&#8212;|  WAIT   |<br \/>\n       &#043;&#8212;&#8212;&#8212;&#043;   Rate Calc    &#043;&#8212;&#8212;&#8212;&#043;<\/p>\n<p>\u53c2\u6570\u5bc4\u5b58\u5668&#xff1a;<\/p>\n<ul>\n<li>HPCC_INT_TH: \u961f\u5217\u6df1\u5ea6\u9608\u503c&#xff08;\u5982128KB&#xff09;\u3002<\/li>\n<li>HPCC_RATE_DEC: \u901f\u7387\u9012\u51cf\u56e0\u5b50&#xff08;\u59820.85&#xff09;\u3002<\/li>\n<li>HPCC_RTT_EST: \u786c\u4ef6\u4f30\u7b97\u7684RTT\u503c&#xff0c;\u7528\u4e8e\u8ba1\u7b97\u76ee\u6807\u901f\u7387 Rate &#061; (Bytes in flight) \/ RTT\u3002<\/li>\n<\/ul>\n<h4>4.4 \u591a\u8def\u5f84\/\u81ea\u9002\u5e94\u8def\u7531\u7684\u786c\u4ef6\u5b9e\u73b0<\/h4>\n<p>UEC\u6807\u51c6\u5f15\u5165\u4e86Packet Spraying&#xff08;\u5305\u55b7\u6d12&#xff09; \u4e0eAdaptive Routing&#xff08;\u81ea\u9002\u5e94\u8def\u7531&#xff09;\u3002<\/p>\n<ul>\n<li>ECMP\u54c8\u5e0c&#xff1a;\u786c\u4ef6\u6839\u636e (SrcIP, DstIP, SrcPort, DstPort, QPN) \u8fdb\u884c5\u5143\u7ec4\u54c8\u5e0c&#xff0c;\u9009\u62e9\u7269\u7406\u8def\u5f84\u3002<\/li>\n<li>\u52a8\u6001\u6743\u91cd\u66f4\u65b0&#xff1a;NIC\u901a\u8fc7\u76d1\u542c\u63a5\u6536\u5230\u7684CNP&#xff08;Congestion Notification Packet&#xff09;\u6216INT\u5305&#xff0c;\u5b9e\u65f6\u66f4\u65b0\u8def\u5f84\u6743\u91cd\u8868&#xff08;Path Weight Table&#xff09;\u3002\u5f53\u67d0\u8def\u5f84\u5ef6\u8fdf\u589e\u52a0\u65f6&#xff0c;\u786c\u4ef6\u81ea\u52a8\u964d\u4f4e\u8be5\u8def\u5f84\u7684\u54c8\u5e0c\u6743\u91cd&#xff0c;\u5c06\u540e\u7eed\u5305\u91cd\u5b9a\u5411\u81f3\u7a7a\u95f2\u8def\u5f84\u3002<\/li>\n<\/ul>\n<p>\u4f2a\u4ee3\u7801&#xff1a;\u81ea\u9002\u5e94\u8def\u7531\u6743\u91cd\u66f4\u65b0\u903b\u8f91<\/p>\n<p><span class=\"token keyword\">void<\/span> <span class=\"token function\">update_path_weight<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">uint8_t<\/span> path_id<span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">uint16_t<\/span> rtt_sample<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token class-name\">uint16_t<\/span> base_rtt <span class=\"token operator\">&#061;<\/span> path_table<span class=\"token punctuation\">[<\/span>path_id<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>base_rtt<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token class-name\">uint16_t<\/span> weight <span class=\"token operator\">&#061;<\/span> path_table<span class=\"token punctuation\">[<\/span>path_id<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>weight<span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>rtt_sample <span class=\"token operator\">&gt;<\/span> base_rtt <span class=\"token operator\">*<\/span> <span class=\"token number\">1.2<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token comment\">\/\/ \u62e5\u585e\u68c0\u6d4b<\/span><br \/>\n        weight <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span>weight <span class=\"token operator\">*<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token number\">4<\/span><span class=\"token punctuation\">;<\/span>     <span class=\"token comment\">\/\/ \u6743\u91cd\u8870\u51cf 25%<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>weight <span class=\"token operator\">&lt;<\/span> MIN_WEIGHT<span class=\"token punctuation\">)<\/span> weight <span class=\"token operator\">&#061;<\/span> MIN_WEIGHT<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>rtt_sample <span class=\"token operator\">&lt;<\/span> base_rtt <span class=\"token operator\">*<\/span> <span class=\"token number\">1.05<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token comment\">\/\/ \u8def\u5f84\u6062\u590d<\/span><br \/>\n        weight <span class=\"token operator\">&#061;<\/span> weight <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>           <span class=\"token comment\">\/\/ \u6743\u91cd\u7ebf\u6027\u6062\u590d<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>weight <span class=\"token operator\">&gt;<\/span> MAX_WEIGHT<span class=\"token punctuation\">)<\/span> weight <span class=\"token operator\">&#061;<\/span> MAX_WEIGHT<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    path_table<span class=\"token punctuation\">[<\/span>path_id<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>weight <span class=\"token operator\">&#061;<\/span> weight<span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<hr \/>\n<h3>\u4e94\u3001\u5b9e\u6218\u90e8\u7f72\u4e0e\u6df1\u5ea6\u914d\u7f6e<\/h3>\n<h4>5.1 \u786c\u4ef6\u73af\u5883\u4e0e\u7aef\u53e3\u914d\u7f6e<\/h4>\n<ul>\n<li>\u4ea4\u6362\u673a&#xff1a;UEC\u517c\u5bb9\u4ea4\u6362\u673a&#xff08;\u5982Broadcom Tomahawk 5\u6216Pensando Capri&#xff09;&#xff0c;\u914d\u7f6e400G QSFP112\u7aef\u53e3&#xff0c;\u542f\u7528PFC&#xff08;Priority Flow Control&#xff09;\u4e0eECN\u3002<\/li>\n<li>NIC\/DPU&#xff1a;AMD Pensando Salina (400G) \/ Vulcano (800G)\u3002\u914d\u7f6e\u4e3aDual-port&#xff0c;\u542f\u7528GPUDirect RDMA\u4e0eRoCEv2\u3002<\/li>\n<\/ul>\n<h4>5.2 Linux\u4fa7\u5b8c\u6574\u914d\u7f6e\u547d\u4ee4\u5e8f\u5217<\/h4>\n<p>\u4ee5\u4e0b\u547d\u4ee4\u5e8f\u5217\u7528\u4e8e\u5728AI\u8282\u70b9\u4e0a\u914d\u7f6ePensando DPU\u5e76\u4f18\u5316RDMA\u6027\u80fd&#xff1a;<\/p>\n<p><span class=\"token comment\"># 1. \u68c0\u67e5DPU\u56fa\u4ef6\u4e0e\u9a71\u52a8\u7248\u672c<\/span><br \/>\npensando-cli fw_version<br \/>\n<span class=\"token function\">ethtool<\/span> <span class=\"token parameter variable\">-i<\/span> eth0 <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> firmware<\/p>\n<p><span class=\"token comment\"># 2. \u914d\u7f6e\u7f51\u7edc\u63a5\u53e3\u4e0eMTU (RoCEv2 requires MTU &gt;&#061; 1024, \u5efa\u8bae4096)<\/span><br \/>\n<span class=\"token function\">ifconfig<\/span> eth0 up<br \/>\n<span class=\"token function\">ifconfig<\/span> eth0 mtu <span class=\"token number\">4096<\/span><\/p>\n<p><span class=\"token comment\"># 3. \u542f\u7528PFC\u4e0eECN (\u901a\u8fc7iproute2\u6216\u4e13\u7528\u5de5\u5177)<\/span><br \/>\npensando-cli pfc_enable <span class=\"token parameter variable\">&#8211;port<\/span> eth0 <span class=\"token parameter variable\">&#8211;priority<\/span> <span class=\"token number\">3<\/span><br \/>\npensando-cli ecn_enable <span class=\"token parameter variable\">&#8211;port<\/span> eth0 <span class=\"token parameter variable\">&#8211;mode<\/span> dscp<\/p>\n<p><span class=\"token comment\"># 4. \u914d\u7f6eQP\u8d44\u6e90\u4e0eCQ\u6df1\u5ea6 (\u901a\u8fc7sysfs)<\/span><br \/>\n<span class=\"token builtin class-name\">echo<\/span> <span class=\"token number\">65536<\/span> <span class=\"token operator\">&gt;<\/span> \/sys\/class\/infiniband\/mlx5_0\/ports\/1\/gid_attrs\/ndevs\/0 <span class=\"token comment\"># \u793a\u4f8b<\/span><br \/>\n<span class=\"token builtin class-name\">echo<\/span> <span class=\"token number\">1024<\/span> <span class=\"token operator\">&gt;<\/span> \/sys\/module\/rdma_core\/parameters\/max_cq_entries<\/p>\n<p><span class=\"token comment\"># 5. \u4f18\u5316PCIe\u53c2\u6570 (\u5173\u95edASPM&#xff0c;\u8bbe\u7f6eMaxReadReqSize)<\/span><br \/>\nsetpci <span class=\"token parameter variable\">-s<\/span> 0000:3b:00.0 CAP_EXP&#043;0x08.w <span class=\"token comment\"># \u68c0\u67e5Device Control<\/span><br \/>\n<span class=\"token builtin class-name\">echo<\/span> <span class=\"token number\">4096<\/span> <span class=\"token operator\">&gt;<\/span> \/sys\/bus\/pci\/devices\/0000:3b:00.0\/max_read_req_size<\/p>\n<p><span class=\"token comment\"># 6. \u914d\u7f6eCPU\u4eb2\u548c\u6027\u4e0e\u4e2d\u65ad\u5408\u5e76<\/span><br \/>\nirqbalance <span class=\"token parameter variable\">&#8211;oneshot<\/span><br \/>\n<span class=\"token builtin class-name\">echo<\/span> <span class=\"token number\">0<\/span> <span class=\"token operator\">&gt;<\/span> \/sys\/class\/net\/eth0\/queues\/tx-0\/xps_cpus <span class=\"token comment\"># \u793a\u4f8b<\/span><\/p>\n<p><span class=\"token comment\"># 7. \u542f\u7528GPUDirect RDMA (nvidia-peermem)<\/span><br \/>\nmodprobe nvidia-peermem<br \/>\nibv_devinfo <span class=\"token parameter variable\">-d<\/span> mlx5_0 <span class=\"token parameter variable\">-v<\/span> <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> peer_memory<\/p>\n<p><span class=\"token comment\"># 8. \u8c03\u6574\u5185\u6838\u7f51\u7edc\u53c2\u6570<\/span><br \/>\n<span class=\"token function\">sysctl<\/span> <span class=\"token parameter variable\">-w<\/span> <span class=\"token assign-left variable\">net.core.rmem_max<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token number\">21222400<\/span><br \/>\n<span class=\"token function\">sysctl<\/span> <span class=\"token parameter variable\">-w<\/span> <span class=\"token assign-left variable\">net.core.wmem_max<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token number\">21222400<\/span><br \/>\n<span class=\"token function\">sysctl<\/span> <span class=\"token parameter variable\">-w<\/span> <span class=\"token assign-left variable\">net.ipv4.tcp_timestamps<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token number\">0<\/span> <span class=\"token comment\"># \u51cf\u5c11RDMA over TCP\u7684\u5e72\u6270<\/span><\/p>\n<h4>5.3 AI\u96c6\u7fa4\u7279\u6709\u8c03\u4f18 (NCCL\/RCCL)<\/h4>\n<p><span class=\"token comment\"># \u5f3a\u5236\u4f7f\u7528RCCL\/NCCL\u7684Ring\u7b97\u6cd5&#xff0c;\u907f\u514dTree\u7b97\u6cd5\u5728\u5927\u89c4\u6a21\u4e0b\u7684\u5ef6\u8fdf\u6296\u52a8<\/span><br \/>\n<span class=\"token builtin class-name\">export<\/span> <span class=\"token assign-left variable\">NCCL_ALGO<\/span><span class=\"token operator\">&#061;<\/span>Ring<br \/>\n<span class=\"token comment\"># \u7981\u7528Simple\u534f\u8bae&#xff0c;\u4f7f\u7528LL128 (Low Latency 128-byte) \u63d0\u5347\u5c0f\u6d88\u606f\u6027\u80fd<\/span><br \/>\n<span class=\"token builtin class-name\">export<\/span> <span class=\"token assign-left variable\">NCCL_PROTO<\/span><span class=\"token operator\">&#061;<\/span>LL128<br \/>\n<span class=\"token comment\"># \u542f\u7528GPUDirect P2P&#xff0c;\u7ed5\u8fc7Host\u5185\u5b58<\/span><br \/>\n<span class=\"token builtin class-name\">export<\/span> <span class=\"token assign-left variable\">NCCL_P2P_LEVEL<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token number\">5<\/span><br \/>\n<span class=\"token comment\"># \u7981\u7528NVLink\u5982\u679c\u5b58\u5728\u62d3\u6251\u51b2\u7a81&#xff0c;\u5f3a\u5236\u8d70RDMA<\/span><br \/>\n<span class=\"token builtin class-name\">export<\/span> <span class=\"token assign-left variable\">NCCL_P2P_DISABLE<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token number\">1<\/span><br \/>\n<span class=\"token comment\"># \u6307\u5b9a\u4f7f\u7528\u7684NIC&#xff0c;\u907f\u514d\u8de8NUMA\u8282\u70b9<\/span><br \/>\n<span class=\"token builtin class-name\">export<\/span> <span class=\"token assign-left variable\">NCCL_NET_GDR_LEVEL<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token number\">5<\/span><br \/>\n<span class=\"token builtin class-name\">export<\/span> <span class=\"token assign-left variable\">NCCL_SOCKET_IFNAME<\/span><span class=\"token operator\">&#061;<\/span>eth0,eth1<\/p>\n<h4>5.4 \u90e8\u7f72\u68c0\u67e5\u6e05\u5355<\/h4>\n<table>\n<tr>\u68c0\u67e5\u9879\u671f\u671b\u503c\u5b9e\u9645\u503c\u4e0d\u5339\u914d\u65f6\u7684\u5f71\u54cd<\/tr>\n<tbody>\n<tr>\n<td>MTU\u5927\u5c0f<\/td>\n<td>4096<\/td>\n<td>1500<\/td>\n<td>RoCEv2\u5206\u7247&#xff0c;\u5ef6\u8fdf\u589e\u52a0300%&#xff0c;\u53ef\u80fd\u4e22\u5305<\/td>\n<\/tr>\n<tr>\n<td>PFC\u914d\u7f6e<\/td>\n<td>\u5f00\u542f (Priority 3)<\/td>\n<td>\u5173\u95ed<\/td>\n<td>\u4ea4\u6362\u673a\u7f13\u51b2\u533a\u6ea2\u51fa&#xff0c;\u5bfc\u81f4\u5168\u5c40\u6682\u505c(Pause)<\/td>\n<\/tr>\n<tr>\n<td>ECN\u914d\u7f6e<\/td>\n<td>\u5f00\u542f (DSCP\u6620\u5c04)<\/td>\n<td>\u5173\u95ed<\/td>\n<td>\u62e5\u585e\u63a7\u5236\u5931\u6548&#xff0c;\u5c3e\u5ef6\u8fdf\u98d9\u5347\u81f3\u6beb\u79d2\u7ea7<\/td>\n<\/tr>\n<tr>\n<td>PCIe MaxReadReq<\/td>\n<td>4096<\/td>\n<td>512<\/td>\n<td>DMA\u6548\u7387\u964d\u4f4e&#xff0c;\u5e26\u5bbd\u65e0\u6cd5\u8dd1\u6ee1<\/td>\n<\/tr>\n<tr>\n<td>GPUDirect\u9a71\u52a8<\/td>\n<td>nvidia-peermem loaded<\/td>\n<td>\u672a\u52a0\u8f7d<\/td>\n<td>\u6570\u636e\u5fc5\u987b\u7ecf\u8fc7Host DRAM&#xff0c;\u5ef6\u8fdf\u589e\u52a0500ns<\/td>\n<\/tr>\n<tr>\n<td>NUMA\u4eb2\u548c\u6027<\/td>\n<td>NIC\u4e0eGPU\u540cNUMA<\/td>\n<td>\u8de8NUMA<\/td>\n<td>PCIe\u8de8QPI\/UPI&#xff0c;\u5e26\u5bbd\u51cf\u534a&#xff0c;\u5ef6\u8fdf\u589e\u52a0<\/td>\n<\/tr>\n<tr>\n<td>\u4e2d\u65ad\u5408\u5e76<\/td>\n<td>\u5173\u95ed\u6216\u6781\u5c0f\u503c<\/td>\n<td>\u9ed8\u8ba4(\u5927)<\/td>\n<td>\u5c0f\u6d88\u606f\u5ef6\u8fdf\u589e\u52a0&#xff0c;\u5f71\u54cd\u8bad\u7ec3Step Time<\/td>\n<\/tr>\n<tr>\n<td>CQ\u6df1\u5ea6<\/td>\n<td>&gt;&#061; 4096<\/td>\n<td>1024<\/td>\n<td>\u9ad8\u5e76\u53d1\u4e0bCQE\u6ea2\u51fa&#xff0c;QP\u8fdb\u5165Error\u72b6\u6001<\/td>\n<\/tr>\n<tr>\n<td>Jumbo Frame<\/td>\n<td>\u5f00\u542f<\/td>\n<td>\u5173\u95ed<\/td>\n<td>\u5305\u5934\u5f00\u9500\u5360\u6bd4\u8fc7\u5927&#xff0c;\u6709\u6548\u5e26\u5bbd\u4e0b\u964d<\/td>\n<\/tr>\n<tr>\n<td>\u56fa\u4ef6\u7248\u672c<\/td>\n<td>\u6700\u65b0\u7a33\u5b9a\u7248<\/td>\n<td>\u65e7\u7248<\/td>\n<td>\u7f3a\u5931\u5173\u952eBug\u4fee\u590d&#xff08;\u5982HPCC\u6b7b\u9501&#xff09;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h3>\u516d\u3001\u6027\u80fd\u6df1\u5ea6\u5206\u6790\u4e0e\u57fa\u51c6\u6d4b\u8bd5<\/h3>\n<h4>6.1 \u6d4b\u8bd5\u65b9\u6cd5\u8bba<\/h4>\n<ul>\n<li>\u5fae\u57fa\u51c6\u6d4b\u8bd5&#xff1a;\u4f7f\u7528 perftest (ib_write_bw, ib_send_lat) \u6d4b\u91cf\u88f8RDMA\u6027\u80fd\u3002<\/li>\n<li>\u96c6\u5408\u901a\u4fe1\u6d4b\u8bd5&#xff1a;\u4f7f\u7528 NCCL-tests (all_reduce_perf) \u6d4b\u91cf\u591a\u673aGPU\u901a\u4fe1\u3002<\/li>\n<li>\u81ea\u5b9a\u4e49Benchmark&#xff1a;\u6a21\u62dfLLM\u63a8\u7406\u7684KV Cache P2P\u8fc1\u79fb&#xff0c;\u6d4b\u91cf\u4e0d\u540c\u6d88\u606f\u5927\u5c0f\u4e0b\u7684\u541e\u5410\u4e0e\u5ef6\u8fdf\u3002<\/li>\n<\/ul>\n<h4>6.2 \u6027\u80fd\u6570\u636e\u8868<\/h4>\n<p>\u6d4b\u8bd5\u73af\u5883&#xff1a;2\u8282\u70b9&#xff0c;\u6bcf\u8282\u70b98x AMD MI300X GPU&#xff0c;Pensando Vulcano 800G NIC&#xff0c;UEC\u4ea4\u6362\u673a\u3002<\/p>\n<table>\n<tr>\u89c4\u6a21\u914d\u7f6e\u6d88\u606f\u5927\u5c0f\u5ef6\u8fdf P50 (\u03bcs)\u5ef6\u8fdf P99 (\u03bcs)\u5e26\u5bbd (Gbps)\u6d88\u606f\u901f\u7387 (Mpps)<\/tr>\n<tbody>\n<tr>\n<td>\u5355QP (ib_write_bw)<\/td>\n<td>2B<\/td>\n<td>1.2<\/td>\n<td>1.5<\/td>\n<td>0.001<\/td>\n<td>0.5<\/td>\n<\/tr>\n<tr>\n<td>\u5355QP (ib_write_bw)<\/td>\n<td>4MB<\/td>\n<td>12.5<\/td>\n<td>14.2<\/td>\n<td>780<\/td>\n<td>&#8211;<\/td>\n<\/tr>\n<tr>\n<td>\u591aQP (64 QPs)<\/td>\n<td>64KB<\/td>\n<td>3.5<\/td>\n<td>4.1<\/td>\n<td>750<\/td>\n<td>1.8<\/td>\n<\/tr>\n<tr>\n<td>\u591a\u673a (8 GPU AllReduce)<\/td>\n<td>1GB<\/td>\n<td>45.0<\/td>\n<td>52.0<\/td>\n<td>620 (Agg)<\/td>\n<td>&#8211;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>6.3 \u74f6\u9888\u5206\u89e3\u56fe<\/h4>\n<p>\u4ee5 4MB RDMA Write \u4e3a\u4f8b&#xff0c;\u603b\u5ef6\u8fdf 12.5\u03bcs \u7684\u5206\u89e3&#xff1a;<\/p>\n<p>[PCIe Tx DMA (15%)]&#061;&#061;&#061;&#061;[NIC Pipeline (10%)]&#061;&#061;&#061;&#061;&#061;&#061;[Network Transit (60%)]&#061;&#061;&#061;&#061;&#061;&#061;[NIC Rx (10%)]&#061;&#061;[PCIe Rx DMA (5%)]<br \/>\n      1.8\u03bcs                 1.2\u03bcs                      7.5\u03bcs                      1.2\u03bcs             0.8\u03bcs<\/p>\n<p>\u5206\u6790&#xff1a;\u5728400G\/800G\u7f51\u7edc\u4e0b&#xff0c;Network Transit&#xff08;\u5305\u542b\u4ea4\u6362\u673aCut-through\u5ef6\u8fdf\u4e0e\u5149\u7ea4\u4f20\u64ad&#xff09;\u5360\u636e\u4e3b\u5bfc\u3002NIC\u5185\u90e8\u6d41\u6c34\u7ebf\u5ef6\u8fdf\u5df2\u538b\u7f29\u81f3&lt;2\u03bcs&#xff0c;PCIe Gen5\/Gen6\u7684DMA\u5ef6\u8fdf\u4e5f\u63a7\u5236\u57282\u03bcs\u4ee5\u5185\u3002<\/p>\n<h4>6.4 \u7ade\u54c1\u65b9\u6848\u6027\u80fd\u5bf9\u6bd4<\/h4>\n<table>\n<tr>\u6307\u6807NVIDIA ConnectX-7NVIDIA BlueField-3AMD Pensando SalinaBroadcom Thor (NIC)<\/tr>\n<tbody>\n<tr>\n<td>\u6700\u5927\u5e26\u5bbd<\/td>\n<td>400G<\/td>\n<td>400G<\/td>\n<td>400G<\/td>\n<td>400G<\/td>\n<\/tr>\n<tr>\n<td>\u5185\u90e8\u6d41\u6c34\u7ebf\u5ef6\u8fdf<\/td>\n<td>~180ns<\/td>\n<td>~250ns (\u542bDPU)<\/td>\n<td>~150ns (P4 bypass)<\/td>\n<td>~200ns<\/td>\n<\/tr>\n<tr>\n<td>\u62e5\u585e\u63a7\u5236<\/td>\n<td>DCQCN<\/td>\n<td>DCQCN\/HPCC<\/td>\n<td>HPCC (\u786c\u4ef6INT)<\/td>\n<td>DCQCN<\/td>\n<\/tr>\n<tr>\n<td>GPUDirect\u652f\u6301<\/td>\n<td>\u5b8c\u7f8e<\/td>\n<td>\u5b8c\u7f8e<\/td>\n<td>\u5b8c\u7f8e (ROCm)<\/td>\n<td>\u6709\u9650<\/td>\n<\/tr>\n<tr>\n<td>\u53ef\u7f16\u7a0b\u6027<\/td>\n<td>\u4f4e (\u56fa\u5b9a)<\/td>\n<td>\u4e2d (DOCA)<\/td>\n<td>\u9ad8 (P4)<\/td>\n<td>\u4f4e<\/td>\n<\/tr>\n<tr>\n<td>\u529f\u8017 (\u5178\u578b)<\/td>\n<td>25W<\/td>\n<td>75W<\/td>\n<td>35W<\/td>\n<td>28W<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>6.5 AI\u8bad\u7ec3\u7aef\u5230\u7aef\u541e\u5410\u5bf9\u6bd4<\/h4>\n<p>\u5728LLaMA-3 70B\u8bad\u7ec3&#xff08;128\u5361&#xff0c;TP&#061;8, PP&#061;16&#xff09;\u4e2d&#xff0c;\u4e0d\u540cNIC\u65b9\u6848\u5bf9 step_time \u7684\u5f71\u54cd&#xff1a;<\/p>\n<ul>\n<li>ConnectX-7&#xff1a;\u57fa\u51c6 (100%)<\/li>\n<li>BlueField-3&#xff1a;102% (DPU\u5904\u7406\u63a7\u5236\u9762\u5e26\u6765\u5fae\u5c0f\u5f00\u9500&#xff0c;\u4f46\u5b58\u50a8\u5378\u8f7d\u6536\u76ca\u5927)<\/li>\n<li>Pensando Salina&#xff1a;98% (P4\u6d41\u6c34\u7ebf\u5ef6\u8fdf\u66f4\u4f4e&#xff0c;HPCC\u51cf\u5c11\u5c3e\u5ef6\u8fdf&#xff0c;\u63d0\u5347AllReduce\u6548\u7387)<\/li>\n<\/ul>\n<hr \/>\n<h3>\u4e03\u3001\u5178\u578b\u6545\u969c\u6df1\u5ea6\u6392\u67e5<\/h3>\n<h4>7.1 AI\u8bad\u7ec3\u5178\u578b\u6545\u969c\u8bca\u65ad\u8868<\/h4>\n<table>\n<tr>\u6545\u969c\u73b0\u8c61\u6839\u56e0\u5206\u6790\u8bca\u65ad\u547d\u4ee4\u4fee\u590d\u65b9\u6848\u9884\u9632\u63aa\u65bd<\/tr>\n<tbody>\n<tr>\n<td>PFC\u98ce\u66b4\u5bfc\u81f4\u5168\u7f51\u6682\u505c<\/td>\n<td>\u4ea4\u6362\u673a\u7f13\u51b2\u533a\u6ea2\u51fa&#xff0c;\u89e6\u53d1PFC Pause\u5e27\u6269\u6563<\/td>\n<td>ethtool -S eth0 | grep pause<\/td>\n<td>\u8c03\u6574\u4ea4\u6362\u673a\u9608\u503c&#xff0c;\u542f\u7528ECN\/HPCC<\/td>\n<td>\u4e25\u683c\u914d\u7f6ePFC\/ECN\u6620\u5c04&#xff0c;\u907f\u514d\u6b7b\u9501<\/td>\n<\/tr>\n<tr>\n<td>QP\u8fdb\u5165Error\u72b6\u6001 (CQE\u6ea2\u51fa)<\/td>\n<td>CQ\u6df1\u5ea6\u4e0d\u8db3&#xff0c;\u6216Host\u6d88\u8d39CQE\u8fc7\u6162<\/td>\n<td>dmesg | grep rdma<\/td>\n<td>\u589e\u52a0CQ\u6df1\u5ea6&#xff0c;\u4f18\u5316Host\u4e2d\u65ad\u5904\u7406<\/td>\n<td>\u76d1\u63a7CQ\u5229\u7528\u7387&#xff0c;\u5f00\u542f\u4e2d\u65ad\u5408\u5e76<\/td>\n<\/tr>\n<tr>\n<td>GPUDirect RDMA\u5931\u8d25<\/td>\n<td>nvidia-peermem\u672a\u52a0\u8f7d&#xff0c;\u6216IOMMU\u62e6\u622a<\/td>\n<td>ibv_devinfo -v<\/td>\n<td>\u52a0\u8f7d\u9a71\u52a8&#xff0c;\u5173\u95edIOMMU\u6216\u914d\u7f6epassthrough<\/td>\n<td>\u81ea\u52a8\u5316\u811a\u672c\u68c0\u67e5\u9a71\u52a8\u72b6\u6001<\/td>\n<\/tr>\n<tr>\n<td>PCIe AER Uncorrectable Error<\/td>\n<td>PCIe\u4fe1\u53f7\u5b8c\u6574\u6027\u95ee\u9898&#xff0c;\u6216TLP\u683c\u5f0f\u9519\u8bef<\/td>\n<td>dmesg | grep AER<\/td>\n<td>\u964d\u901f\u81f3Gen4&#xff0c;\u68c0\u67e5\u91d1\u624b\u6307\/\u63d2\u69fd<\/td>\n<td>\u5b9a\u671f\u5de1\u68c0\u786c\u4ef6&#xff0c;\u66f4\u65b0\u56fa\u4ef6<\/td>\n<\/tr>\n<tr>\n<td>AllReduce\u6b7b\u9501 (Timeout)<\/td>\n<td>\u62d3\u6251\u4e0d\u5bf9\u79f0&#xff0c;\u6216PFC\u6b7b\u9501 (Priority Loop)<\/td>\n<td>nccl-tests \u65e5\u5fd7<\/td>\n<td>\u68c0\u67e5\u7269\u7406\u62d3\u6251&#xff0c;\u8c03\u6574PFC\u4f18\u5148\u7ea7<\/td>\n<td>\u4f7f\u7528NCCL\u62d3\u6251\u68c0\u6d4b\u5de5\u5177<\/td>\n<\/tr>\n<tr>\n<td>\u56fa\u4ef6\u5f02\u5e38\/\u6302\u8d77<\/td>\n<td>P4\u6d41\u6c34\u7ebf\u72b6\u6001\u673a\u5361\u6b7b&#xff0c;\u6216SRAM ECC\u9519\u8bef<\/td>\n<td>pensando-cli health<\/td>\n<td>\u91cd\u542fDPU&#xff0c;\u70ed\u52a0\u8f7d\u56fa\u4ef6<\/td>\n<td>\u542f\u7528ECC\u6821\u9a8c&#xff0c;\u589e\u52a0Watchdog<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>7.2 \u9ad8\u7ea7Debug\u624b\u6bb5<\/h4>\n<li>\u786c\u4ef6Trace\u5bc4\u5b58\u5668Dump&#xff1a;\u5f53QP\u8fdb\u5165Error\u72b6\u6001\u65f6&#xff0c;\u901a\u8fc7 pensando-cli debug_dump \u83b7\u53d6QP Context SRAM\u5feb\u7167&#xff0c;\u5206\u6790 retry_count \u4e0e timeout \u5bc4\u5b58\u5668\u3002<\/li>\n<li>PCIe TLP\u6293\u5305&#xff1a;\u4f7f\u7528PCIe Analyzer&#xff08;\u5982Teledyne LeCroy&#xff09;\u6355\u83b7Doorbell\u5199\u5165\u4e0eDMA Read\/Write TLP&#xff0c;\u9a8c\u8bc1\u5730\u5740\u5bf9\u9f50\u4e0e\u957f\u5ea6\u5408\u6cd5\u6027\u3002<\/li>\n<li>NIC\u5185\u90e8\u8ba1\u6570\u5668\u5206\u6790&#xff1a;\u901a\u8fc7 ethtool -S \u6216\u4e13\u7528CLI\u67e5\u770b rx_discards (\u5305\u5934\u9519\u8bef), tx_pause (\u6d41\u63a7\u89e6\u53d1), cqe_overflow \u7b49\u786c\u4ef6\u8ba1\u6570\u5668\u3002<\/li>\n<h4>7.3 \u76d1\u63a7\u547d\u4ee4\u901f\u67e5\u8868<\/h4>\n<p><span class=\"token comment\"># 1. \u67e5\u770bRDMA\u8bbe\u5907\u72b6\u6001\u4e0e\u7aef\u53e3\u901f\u7387<\/span><br \/>\nibv_devinfo <span class=\"token parameter variable\">-d<\/span> mlx5_0<\/p>\n<p><span class=\"token comment\"># 2. \u67e5\u770b\u7f51\u5361\u786c\u4ef6\u7edf\u8ba1\u4fe1\u606f (\u4e22\u5305\u3001\u9519\u8bef\u3001PFC)<\/span><br \/>\n<span class=\"token function\">ethtool<\/span> <span class=\"token parameter variable\">-S<\/span> eth0<\/p>\n<p><span class=\"token comment\"># 3. \u67e5\u770bPCIe\u94fe\u8def\u72b6\u6001\u4e0e\u5e26\u5bbd\u5229\u7528\u7387<\/span><br \/>\nlspci <span class=\"token parameter variable\">-vvv<\/span> <span class=\"token parameter variable\">-s<\/span> 3b:00.0 <span class=\"token operator\">|<\/span> <span class=\"token function\">grep<\/span> Lnk<\/p>\n<p><span class=\"token comment\"># 4. \u5b9e\u65f6\u76d1\u63a7\u7f51\u5361\u6d41\u91cf\u4e0e\u4e2d\u65ad<\/span><br \/>\n<span class=\"token function\">watch<\/span> <span class=\"token parameter variable\">-n<\/span> <span class=\"token number\">1<\/span> <span class=\"token string\">&#039;cat \/proc\/net\/dev | grep eth0; cat \/proc\/interrupts | grep eth0&#039;<\/span><\/p>\n<p><span class=\"token comment\"># 5. \u67e5\u770bQP\u8d44\u6e90\u4f7f\u7528\u60c5\u51b5<\/span><br \/>\n<span class=\"token function\">cat<\/span> \/sys\/kernel\/debug\/mlx5\/0000:3b:00.0\/QPs<\/p>\n<p><span class=\"token comment\"># 6. \u68c0\u67e5GPUDirect P2P\u62d3\u6251<\/span><br \/>\nnvidia-smi topo <span class=\"token parameter variable\">-m<\/span><\/p>\n<p><span class=\"token comment\"># 7. \u67e5\u770bDPU\u56fa\u4ef6\u5065\u5eb7\u72b6\u6001<\/span><br \/>\npensando-cli health_check<\/p>\n<p><span class=\"token comment\"># 8. \u6293\u53d6\u7f51\u5361\u5185\u90e8\u5bc4\u5b58\u5668\u72b6\u6001<\/span><br \/>\npensando-cli reg_dump <span class=\"token parameter variable\">&#8211;module<\/span> rdma_engine<\/p>\n<hr \/>\n<h3>\u516b\u3001\u603b\u7ed3\u4e0e\u8bbe\u8ba1trade-off<\/h3>\n<h4>8.1 \u6838\u5fc3\u6280\u672f\u8981\u70b9\u603b\u7ed3\u8868<\/h4>\n<table>\n<tr>\u6982\u5ff5\u5b9e\u73b0\u8981\u70b9\u5e38\u89c1\u8bef\u533a\u6700\u4f73\u5b9e\u8df5<\/tr>\n<tbody>\n<tr>\n<td>P4\u53ef\u7f16\u7a0b\u5f15\u64ce<\/td>\n<td>\u901a\u8fc7MPU\u5b9e\u73b0\u534f\u8bae\u89e3\u6790\u4e0e\u4fee\u6539<\/td>\n<td>\u8ba4\u4e3aP4\u53ef\u66ff\u4ee3\u6240\u6709\u56fa\u5b9a\u529f\u80fd<\/td>\n<td>\u5c06\u70ed\u8def\u5f84(\u5982BTH\u89e3\u6790)\u56fa\u5316&#xff0c;\u51b7\u8def\u5f84(\u5982\u65b0\u5c01\u88c5)\u7528P4<\/td>\n<\/tr>\n<tr>\n<td>GPUDirect RDMA<\/td>\n<td>\u7ed5\u8fc7Host DRAM&#xff0c;BAR\u5230BAR\u76f4\u4f20<\/td>\n<td>\u5ffd\u7565NUMA\u62d3\u6251\u5bfc\u81f4\u8de8\u8282\u70b9\u8bbf\u95ee<\/td>\n<td>\u786e\u4fddGPU\u4e0eNIC\u5728\u540c\u4e00PCIe Switch\/NUMA\u4e0b<\/td>\n<\/tr>\n<tr>\n<td>HPCC\u62e5\u585e\u63a7\u5236<\/td>\n<td>\u786c\u4ef6INT\u673a\u5236&#xff0c;\u57fa\u4e8eRTT\u8ba1\u7b97\u901f\u7387<\/td>\n<td>\u9608\u503c\u8bbe\u7f6e\u8fc7\u9ad8\u5bfc\u81f4\u7f13\u51b2\u533a\u6ea2\u51fa<\/td>\n<td>\u6839\u636e\u4ea4\u6362\u673a\u7f13\u51b2\u533a\u5927\u5c0f\u52a8\u6001\u8c03\u6574INT_TH<\/td>\n<\/tr>\n<tr>\n<td>CQ\u7ba1\u7406<\/td>\n<td>\u786c\u4ef6\u751f\u6210CQE&#xff0c;Host\u6d88\u8d39<\/td>\n<td>CQ\u6df1\u5ea6\u8bbe\u7f6e\u8fc7\u5c0f\u5bfc\u81f4\u6ea2\u51fa<\/td>\n<td>\u6839\u636e\u6d88\u606f\u901f\u7387\u4e0eHost\u5904\u7406\u5ef6\u8fdf\u8ba1\u7b97CQ\u6df1\u5ea6<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>8.2 \u8bbe\u8ba1\u6743\u8861\u5206\u6790\u8868 (Trade-off)<\/h4>\n<table>\n<tr>\u8bbe\u8ba1\u51b3\u7b56\u6027\u80fd\u6536\u76ca\u9762\u79ef\/\u529f\u8017\u6210\u672c\u7075\u6d3b\u6027\u635f\u5931\u7ed3\u8bba<\/tr>\n<tbody>\n<tr>\n<td>SRAM\u5bb9\u91cf vs \u9762\u79ef<\/td>\n<td>\u51cf\u5c11\u5916\u90e8DRAM\u8bbf\u95ee&#xff0c;\u964d\u4f4e\u5ef6\u8fdf<\/td>\n<td>\u663e\u8457\u589e\u52a0\u82af\u7247\u9762\u79ef\u4e0e\u6f0f\u7535\u529f\u8017<\/td>\n<td>\u9650\u5236QP\/CQ\u6700\u5927\u6570\u91cf<\/td>\n<td>AI\u573a\u666f\u9700\u5927SRAM(&gt;32MB)\u4ee5\u652f\u6301\u767e\u4e07QP<\/td>\n<\/tr>\n<tr>\n<td>\u6d41\u6c34\u7ebf\u6df1\u5ea6 vs \u5ef6\u8fdf<\/td>\n<td>\u63d0\u9ad8\u65f6\u949f\u9891\u7387&#xff0c;\u589e\u52a0\u541e\u5410<\/td>\n<td>\u589e\u52a0\u5bc4\u5b58\u5668\u9762\u79ef&#xff0c;\u6c14\u6ce1\u60e9\u7f5a<\/td>\n<td>\u589e\u52a0\u8bbe\u8ba1\u9a8c\u8bc1\u590d\u6742\u5ea6<\/td>\n<td>\u63a7\u5236\u57286-8\u7ea7&#xff0c;\u5e73\u8861\u9891\u7387\u4e0e\u5ef6\u8fdf<\/td>\n<\/tr>\n<tr>\n<td>\u786c\u4ef6\u5378\u8f7d vs \u7075\u6d3b\u6027<\/td>\n<td>\u6781\u81f4\u964d\u4f4e\u5ef6\u8fdf\u4e0e\u529f\u8017<\/td>\n<td>\u56fa\u5316\u903b\u8f91\u65e0\u6cd5\u9002\u5e94\u65b0\u534f\u8bae<\/td>\n<td>\u65b0\u534f\u8bae\u9700\u6d41\u7247\u6216P4\u91cd\u6784<\/td>\n<td>\u6838\u5fc3\u534f\u8bae(RoCE\/UEC)\u786c\u4ef6\u5316&#xff0c;\u6269\u5c55\u534f\u8baeP4\u5316<\/td>\n<\/tr>\n<tr>\n<td>\u4e2d\u65ad\u5408\u5e76 vs \u5ef6\u8fdf<\/td>\n<td>\u51cf\u5c11Host\u4e2d\u65ad\u5f00\u9500&#xff0c;\u63d0\u5347\u541e\u5410<\/td>\n<td>\u589e\u52a0\u5c0f\u6d88\u606f\u5c3e\u5ef6\u8fdf<\/td>\n<td>\u5f71\u54cd\u4ea4\u4e92\u5f0f\u63a8\u7406\u54cd\u5e94<\/td>\n<td>\u8bad\u7ec3\u573a\u666f\u5f00\u542f\u5408\u5e76&#xff0c;\u63a8\u7406\u573a\u666f\u5173\u95ed<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>8.3 AI RDMA \u6700\u4f73\u5b9e\u8df5 (\u6309\u4f18\u5148\u7ea7\u6392\u5e8f)<\/h4>\n<li>\u7269\u7406\u62d3\u6251\u4e0eNUMA\u5bf9\u9f50&#xff1a;\u786e\u4fddGPU\u3001NIC\u3001CPU\u5728\u540c\u4e00NUMA\u8282\u70b9&#xff0c;\u907f\u514dQPI\/UPI\u8de8\u8282\u70b9\u4f20\u8f93\u3002<\/li>\n<li>\u4e25\u683c\u914d\u7f6e\u65e0\u635f\u7f51\u7edc&#xff1a;PFC\u4e0eECN\u5fc5\u987b\u6b63\u786e\u6620\u5c04&#xff0c;\u542f\u7528HPCC\/DCQCN&#xff0c;\u907f\u514dIncast\u5bfc\u81f4\u7684PFC\u98ce\u66b4\u3002<\/li>\n<li>\u542f\u7528GPUDirect RDMA&#xff1a;\u5728\u63a8\u7406KV Cache\u8fc1\u79fb\u4e0e\u8bad\u7ec3\u68af\u5ea6\u540c\u6b65\u4e2d&#xff0c;\u5f3a\u5236\u4f7f\u7528GPUDirect&#xff0c;\u6d88\u9664Host\u5185\u5b58\u74f6\u9888\u3002<\/li>\n<li>\u4f18\u5316CQ\u4e0eQP\u8d44\u6e90&#xff1a;\u6839\u636e\u96c6\u7fa4\u89c4\u6a21\u5408\u7406\u5206\u914dCQ\u6df1\u5ea6\u4e0eQP\u6570\u91cf&#xff0c;\u9884\u755920%\u4f59\u91cf\u9632\u6b62\u6ea2\u51fa\u3002<\/li>\n<li>\u5173\u95ed\u4e0d\u5fc5\u8981\u7684\u534f\u8bae\u5378\u8f7d&#xff1a;\u5982VXLAN\/Geneve&#xff0c;\u5728\u7eafRDMA AI\u96c6\u7fa4\u4e2d&#xff0c;\u51cf\u5c11\u5305\u5934\u5904\u7406\u5f00\u9500\u3002<\/li>\n<li>\u4f7f\u7528LL128\u534f\u8bae&#xff1a;\u5728NCCL\/RCCL\u4e2d\u542f\u7528LL128&#xff0c;\u63d0\u5347\u5c0f\u6d88\u606f&#xff08;&lt;64KB&#xff09;\u7684\u4f20\u8f93\u6548\u7387\u3002<\/li>\n<li>\u76d1\u63a7\u786c\u4ef6\u8ba1\u6570\u5668&#xff1a;\u5efa\u7acb\u81ea\u52a8\u5316\u76d1\u63a7&#xff0c;\u5b9e\u65f6\u544a\u8b66 rx_discards \u4e0e tx_pause&#xff0c;\u9632\u60a3\u4e8e\u672a\u7136\u3002<\/li>\n<li>\u56fa\u4ef6\u4e0e\u9a71\u52a8\u5bf9\u9f50&#xff1a;\u786e\u4fddDPU\u56fa\u4ef6\u3001NIC\u9a71\u52a8\u3001NCCL\/RCCL\u7248\u672c\u7ecf\u8fc7\u8054\u5408\u9a8c\u8bc1&#xff0c;\u907f\u514d\u517c\u5bb9\u6027Bug\u3002<\/li>\n<h4>8.4 \u5de5\u7a0b\u843d\u5730\u5efa\u8bae\u4e0e\u672a\u6765\u6f14\u8fdb<\/h4>\n<p>\u5f53\u524d&#xff0c;AMD Pensando Salina\/Vulcano \u901a\u8fc7P4\u53ef\u7f16\u7a0b\u6027\u4e0e\u786c\u4ef6\u7ea7\u62e5\u585e\u63a7\u5236&#xff0c;\u5728\u5f00\u653e\u4ee5\u592a\u7f51\u751f\u6001\u4e2d\u4e3aAI\u96c6\u7fa4\u63d0\u4f9b\u4e86\u9ad8\u6027\u4ef7\u6bd4\u7684RDMA\u65b9\u6848\u3002\u672a\u6765&#xff0c;\u968f\u7740UEC (Ultra Ethernet Consortium) \u6807\u51c6\u7684\u843d\u5730&#xff0c;\u7f51\u7edc\u5c06\u5411Congestion Control at Source\u4e0ePacket Spraying\u6f14\u8fdb\u3002\u82af\u7247\u8bbe\u8ba1\u9700\u91cd\u70b9\u5173\u6ce8&#xff1a;<\/p>\n<li>SRAM\u5bb9\u91cf\u7684\u8fdb\u4e00\u6b65\u6269\u5c55&#xff0c;\u4ee5\u652f\u6301\u66f4\u590d\u6742\u7684\u62e5\u585e\u63a7\u5236\u72b6\u6001\u4e0e\u8def\u5f84\u8868\u3002<\/li>\n<li>CXL (Compute Express Link) \u4e0eRDMA\u7684\u6df1\u5ea6\u878d\u5408&#xff0c;\u5b9e\u73b0\u5185\u5b58\u6c60\u5316\u4e0eKV Cache\u7684\u8de8\u8282\u70b9\u900f\u660e\u8fc1\u79fb\u3002<\/li>\n<li>\u5149\u4e92\u8054 (CPO) \u4e0eNIC\u7684\u534f\u540c\u8bbe\u8ba1&#xff0c;\u7a81\u7834PCIe\u4e0e\u94dc\u7f06\u7684\u5e26\u5bbd\/\u529f\u8017\u74f6\u9888\u3002<\/li>\n<p>\u5728AI\u7b97\u529b\u72c2\u98d9\u7684\u65f6\u4ee3&#xff0c;\u7f51\u7edc\u4e0d\u518d\u662f\u900f\u660e\u7684\u7ba1\u9053&#xff0c;\u800c\u662f\u51b3\u5b9a\u7cfb\u7edf\u4e0a\u9650\u7684\u9690\u5f62\u5f15\u64ce\u3002\u6df1\u5165\u82af\u7247\u5fae\u67b6\u6784&#xff0c;\u7528\u786c\u4ef6\u7684\u786e\u5b9a\u6027\u53bb\u5bf9\u6297AI\u8d1f\u8f7d\u7684\u968f\u673a\u6027&#xff0c;\u662f\u6211\u4eec\u8fd9\u4ee3\u82af\u7247\u5de5\u7a0b\u5e08\u7684\u7ec8\u6781\u4f7f\u547d\u3002<\/p>\n<hr \/>\n<h3>\u53c2\u8003\u8d44\u6599<\/h3>\n<li>Ultra Ethernet Consortium (UEC) Specification v1.0 Draft<\/li>\n<li>InfiniBand Architecture Specification, Volume 1, Release 1.5<\/li>\n<li>AMD Pensando Salina DPU Architecture Overview<\/li>\n<li>HPCC: High Precision Congestion Control (SIGCOMM 2019)<\/li>\n<li>NVIDIA BlueField-4 DPU Datasheet &amp; Programming Guide<\/li>\n<li>RDMA over Converged Ethernet (RoCEv2) Implementation Guide<\/li>\n<li>AMD ROCm AIC &amp; UMBP Framework for KV Cache Offloading<\/li>\n<li>DCQCN: Data Center Quantized Congestion Notification (IEEE\/ACM)<\/li>\n<li>P4_16 Language Specification (IEEE)<\/li>\n<li>Pingdo: The Silent Architect: Why the DPU is the Secret to Scaling Generative AI<\/li>\n<hr \/>\n<p>&#x1f4dd; \u4f5c\u8005\u7b80\u4ecb&#xff1a; \u8d44\u6df1RDMA\u667a\u80fd\u7f51\u5361\u3001\u5b58\u50a8\u6280\u672f\u4e13\u5bb6&#xff0c;\u62e5\u6709\u5341\u4f59\u5e74DPU\/RDMA\/NVMe SSD\u82af\u7247\u6d4b\u8bd5\u4e0e\u5de5\u7a0b\u7ecf\u9a8c&#xff0c;\u81f4\u529b\u4e8e\u63a8\u52a8\u9ad8\u6027\u80fd\u7f51\u7edc\u6280\u672f\u7684\u5f00\u6e90\u4e0e\u666e\u53ca\u3002 &#x1f44d; \u5982\u679c\u672c\u6587\u5bf9\u4f60\u6709\u5e2e\u52a9&#xff0c;\u6b22\u8fce\u70b9\u8d5e\u3001\u6536\u85cf\u3001\u5173\u6ce8&#xff01; &#x1f4ac; \u6709\u95ee\u9898\u6b22\u8fce\u8bc4\u8bba\u533a\u8ba8\u8bba&#xff0c;\u770b\u5230\u90fd\u4f1a\u56de\u590d\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#x1f4d1; \u76ee\u5f55<br \/>\n\u4e00\u3001\u524d\u8a00\/AI\u573a\u666f\u80cc\u666f \u4e8c\u3001\u6838\u5fc3\u539f\u7406\u4e0e\u534f\u8bae\u6df1\u5ea6 \u4e09\u3001\u786c\u4ef6\u67b6\u6784\u6df1\u5ea6\u5256\u6790 \u56db\u3001AI\u901a\u4fe1\u7684\u786c\u4ef6\u52a0\u901f\u5b9e\u73b0 \u4e94\u3001\u5b9e\u6218\u90e8\u7f72\u4e0e\u6df1\u5ea6\u914d\u7f6e \u516d\u3001\u6027\u80fd\u6df1\u5ea6\u5206\u6790\u4e0e\u57fa\u51c6\u6d4b\u8bd5 \u4e03\u3001\u5178\u578b\u6545\u969c\u6df1\u5ea6\u6392\u67e5 \u516b\u3001\u603b\u7ed3\u4e0e\u8bbe\u8ba1trade-off \u53c2\u8003\u8d44\u6599 \u6458\u8981&#xff1a;\u672c\u6587\u6df1\u5ea6\u89e3\u6790AMD Pensando Salina\/Vulcano DPU\u5728AI RDMA\u96c6\u7fa4\u4e2d\u7684\u786c\u4ef6\u67b6\u6784\u4e0eRTL\u5b9e\u73b0&#xff0c;\u6db5\u76d6P4\u53ef\u7f16\u7a0b\u5f15\u64ce\u3001GPUDirect\u96f6\u62f7\u8d1d\u901a\u8def\u3001\u62e5\u585e\u63a7\u5236\u72b6\u6001\u673a\u53caUEC\u534f\u8bae\u9002\u914d&amp;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[11540,11542,11539,11541,7111],"topic":[],"class_list":["post-100993","post","type-post","status-publish","format-standard","hentry","category-server","tag-aiperformance","tag-chipdesign","tag-dpu","tag-pensando","tag-rdma"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>AMD Pensando DPU\u4e0eAI RDMA\uff1aSalina\/Vulcano\u82af\u7247\u89e3\u6790 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/100993.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AMD Pensando DPU\u4e0eAI RDMA\uff1aSalina\/Vulcano\u82af\u7247\u89e3\u6790 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"&#x1f4d1; \u76ee\u5f55 \u4e00\u3001\u524d\u8a00\/AI\u573a\u666f\u80cc\u666f \u4e8c\u3001\u6838\u5fc3\u539f\u7406\u4e0e\u534f\u8bae\u6df1\u5ea6 \u4e09\u3001\u786c\u4ef6\u67b6\u6784\u6df1\u5ea6\u5256\u6790 \u56db\u3001AI\u901a\u4fe1\u7684\u786c\u4ef6\u52a0\u901f\u5b9e\u73b0 \u4e94\u3001\u5b9e\u6218\u90e8\u7f72\u4e0e\u6df1\u5ea6\u914d\u7f6e \u516d\u3001\u6027\u80fd\u6df1\u5ea6\u5206\u6790\u4e0e\u57fa\u51c6\u6d4b\u8bd5 \u4e03\u3001\u5178\u578b\u6545\u969c\u6df1\u5ea6\u6392\u67e5 \u516b\u3001\u603b\u7ed3\u4e0e\u8bbe\u8ba1trade-off \u53c2\u8003\u8d44\u6599 \u6458\u8981&#xff1a;\u672c\u6587\u6df1\u5ea6\u89e3\u6790AMD Pensando Salina\/Vulcano DPU\u5728AI RDMA\u96c6\u7fa4\u4e2d\u7684\u786c\u4ef6\u67b6\u6784\u4e0eRTL\u5b9e\u73b0&#xff0c;\u6db5\u76d6P4\u53ef\u7f16\u7a0b\u5f15\u64ce\u3001GPUDirect\u96f6\u62f7\u8d1d\u901a\u8def\u3001\u62e5\u585e\u63a7\u5236\u72b6\u6001\u673a\u53caUEC\u534f\u8bae\u9002\u914d&amp;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/100993.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-05T14:01:02+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/100993.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/100993.html\",\"name\":\"AMD Pensando DPU\u4e0eAI RDMA\uff1aSalina\/Vulcano\u82af\u7247\u89e3\u6790 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-09-05T14:01:02+00:00\",\"dateModified\":\"2026-09-05T14:01:02+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/100993.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/100993.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/100993.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AMD Pensando DPU\u4e0eAI RDMA\uff1aSalina\/Vulcano\u82af\u7247\u89e3\u6790\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"AMD Pensando DPU\u4e0eAI RDMA\uff1aSalina\/Vulcano\u82af\u7247\u89e3\u6790 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/100993.html","og_locale":"zh_CN","og_type":"article","og_title":"AMD Pensando DPU\u4e0eAI RDMA\uff1aSalina\/Vulcano\u82af\u7247\u89e3\u6790 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"&#x1f4d1; \u76ee\u5f55 \u4e00\u3001\u524d\u8a00\/AI\u573a\u666f\u80cc\u666f \u4e8c\u3001\u6838\u5fc3\u539f\u7406\u4e0e\u534f\u8bae\u6df1\u5ea6 \u4e09\u3001\u786c\u4ef6\u67b6\u6784\u6df1\u5ea6\u5256\u6790 \u56db\u3001AI\u901a\u4fe1\u7684\u786c\u4ef6\u52a0\u901f\u5b9e\u73b0 \u4e94\u3001\u5b9e\u6218\u90e8\u7f72\u4e0e\u6df1\u5ea6\u914d\u7f6e \u516d\u3001\u6027\u80fd\u6df1\u5ea6\u5206\u6790\u4e0e\u57fa\u51c6\u6d4b\u8bd5 \u4e03\u3001\u5178\u578b\u6545\u969c\u6df1\u5ea6\u6392\u67e5 \u516b\u3001\u603b\u7ed3\u4e0e\u8bbe\u8ba1trade-off \u53c2\u8003\u8d44\u6599 \u6458\u8981&#xff1a;\u672c\u6587\u6df1\u5ea6\u89e3\u6790AMD Pensando Salina\/Vulcano DPU\u5728AI RDMA\u96c6\u7fa4\u4e2d\u7684\u786c\u4ef6\u67b6\u6784\u4e0eRTL\u5b9e\u73b0&#xff0c;\u6db5\u76d6P4\u53ef\u7f16\u7a0b\u5f15\u64ce\u3001GPUDirect\u96f6\u62f7\u8d1d\u901a\u8def\u3001\u62e5\u585e\u63a7\u5236\u72b6\u6001\u673a\u53caUEC\u534f\u8bae\u9002\u914d&amp;","og_url":"https:\/\/www.wsisp.com\/helps\/100993.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-09-05T14:01:02+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"11 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/100993.html","url":"https:\/\/www.wsisp.com\/helps\/100993.html","name":"AMD Pensando DPU\u4e0eAI RDMA\uff1aSalina\/Vulcano\u82af\u7247\u89e3\u6790 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-09-05T14:01:02+00:00","dateModified":"2026-09-05T14:01:02+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/100993.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/100993.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/100993.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"AMD Pensando DPU\u4e0eAI RDMA\uff1aSalina\/Vulcano\u82af\u7247\u89e3\u6790"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/100993","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=100993"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/100993\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=100993"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=100993"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=100993"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=100993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}