279 lines
7.6 KiB
Markdown
279 lines
7.6 KiB
Markdown
# BP_Supercomputer TOP500 超算蓝图详细规格
|
|
|
|
## 蓝图信息
|
|
|
|
| 属性 | 值 |
|
|
|------|-----|
|
|
| 蓝图类型 | Actor (BP_DataPoint 子类) |
|
|
| 父类 | `BP_DataPoint` |
|
|
| 路径 | `Content/Blueprints/BP_Supercomputer.uasset` |
|
|
|
|
## 组件列表
|
|
|
|
```
|
|
BP_Supercomputer (继承自 BP_DataPoint)
|
|
├── [继承] SceneRoot
|
|
│ ├── [继承] StaticMesh (球体)
|
|
│ │ └── Material: M_Supercomputer (红色自发光)
|
|
│ ├── [继承] NiagaraComponent (光环粒子)
|
|
│ │ └── NS_Supercomputer_Glow (红色光环)
|
|
│ ├── [继承] WidgetComponent (标签)
|
|
│ │ └── User Widget: W_SupercomputerLabel
|
|
│ ├── [新增] RingMesh (圆环网格)
|
|
│ │ └── Material: M_Ring_Pulse (脉冲圆环)
|
|
│ └── [新增] PerformanceText3D (3D 性能文字)
|
|
│ └── Font: Default
|
|
```
|
|
|
|
## 变量列表 (新增)
|
|
|
|
| 变量名 | 类型 | 默认值 | 说明 |
|
|
|--------|------|--------|------|
|
|
| `Rmax` | Float | `1682.65` | Rmax 值 (TFLOPS) |
|
|
| `Rpeak` | Float | `2000.0` | Rpeak 值 (TFLOPS) |
|
|
| `CoreCount` | Integer | `0` | CPU 核心数 |
|
|
| `NodeCount` | Integer | `0` | 节点数 |
|
|
| `Interconnect` | String | `"InfiniBand"` | 互联网络 |
|
|
| `OperatingSystem` | String | `"Linux"` | 操作系统 |
|
|
| `Vendor` | String | `"HPE"` | 厂商 |
|
|
| `Model` | String | `"Expresso"` | 型号 |
|
|
|
|
## 函数覆盖 (Override)
|
|
|
|
### UpdateLabel (Override)
|
|
|
|
```
|
|
1. [父调用] BP_DataPoint.UpdateLabel()
|
|
|
|
2. [获取] W_SupercomputerLabel Widget
|
|
3. [设置] NameText = Name
|
|
4. [设置] CountryText = Country
|
|
5. [设置] PerformanceText = FormatPerformance(Rmax)
|
|
6. [设置] CoreText = FormatNumber(CoreCount)
|
|
7. [设置] VendorText = Vendor
|
|
```
|
|
|
|
### UpdateMaterial (Override)
|
|
|
|
```
|
|
1. [获取] StaticMesh.Material
|
|
2. [设置] BaseColor = (1.0, 0.1, 0.1, 1) 红色
|
|
3. [设置] EmissiveStrength = 3.0 + (Rmax / 100)
|
|
4. [计算] PulseSpeed = 0.5 + (Rmax / 1000)
|
|
5. [设置] PulseSpeed_Material = PulseSpeed
|
|
```
|
|
|
|
### UpdateSize (Override)
|
|
|
|
```
|
|
1. [计算] ScaleFactor = 0.5 + (Rmax / 500)
|
|
├─ < 100 TFLOPS: 0.5x
|
|
├─ 100-500 TFLOPS: 1.0x
|
|
├─ 500-1000 TFLOPS: 1.5x
|
|
└─ > 1000 TFLOPS: 2.0x
|
|
|
|
2. [设置] StaticMesh.SetWorldScale3D(ScaleFactor)
|
|
```
|
|
|
|
## 材质规格
|
|
|
|
### M_Supercomputer
|
|
|
|
| 参数 | 类型 | 默认值 | 说明 |
|
|
|------|------|--------|------|
|
|
| `BaseColor` | Vector3 | (1.0, 0.1, 0.1) | 红色 |
|
|
| `EmissiveColor` | Vector3 | (1.0, 0.0, 0.0) | 自发光颜色 |
|
|
| `EmissiveStrength` | Float | `5.0` | 自发光强度 |
|
|
| `PulseSpeed` | Float | `1.0` | 脉冲速度 |
|
|
| `PulseIntensity` | Float | `0.3` | 脉冲强度 |
|
|
| `FresnelPower` | Float | `2.5` | 菲涅尔效果 |
|
|
|
|
### M_Ring_Pulse
|
|
|
|
| 参数 | 类型 | 默认值 | 说明 |
|
|
|------|------|--------|------|
|
|
| `RingColor` | Vector4 | (1.0, 0.2, 0.2, 1.0) | 圆环颜色 |
|
|
| `RingWidth` | Float | `0.02` | 圆环宽度 |
|
|
| `PulseSpeed` | Float | `1.0` | 脉冲速度 |
|
|
| `GlowIntensity` | Float | `10.0` | 发光强度 |
|
|
|
|
## 粒子效果 (Niagara)
|
|
|
|
### NS_Supercomputer_Glow
|
|
|
|
```
|
|
发射器设置:
|
|
├─ 发射器类型: 粒子系统
|
|
├─ 发射模式: 循环
|
|
├─ 发射速率: 20 粒子/秒
|
|
├─ 粒子寿命: 2.0 秒
|
|
└─ 粒子大小: 50 → 200 cm
|
|
|
|
颜色渐变:
|
|
├─ 0%: (1.0, 0.1, 0.1, 0.8) 红色
|
|
├─ 50%: (1.0, 0.1, 0.1, 0.4)
|
|
└─ 100%: (1.0, 0.1, 0.1, 0.0)
|
|
|
|
渲染:
|
|
├─ 材质: M_Particle_Glow_Additive
|
|
└─ 混合模式: Additive
|
|
```
|
|
|
|
## UI 标签 (W_SupercomputerLabel)
|
|
|
|
### 组件结构
|
|
|
|
```
|
|
W_SupercomputerLabel
|
|
├── CanvasPanel
|
|
│ ├── Background (黑色半透明背景)
|
|
│ │ └── Size: 300x150
|
|
│ │ └── Opacity: 0.8
|
|
│ ├── NameText (名称)
|
|
│ │ └── Text: "Frontier"
|
|
│ │ └── Color: 白色
|
|
│ │ └── Font Size: 18
|
|
│ ├── CountryText (国家)
|
|
│ │ └── Text: "🇺🇸 United States"
|
|
│ │ └── Color: 浅灰色
|
|
│ │ └── Font Size: 14
|
|
│ ├── PerformancePanel (性能面板)
|
|
│ │ ├── RmaxLabel
|
|
│ │ │ └── Text: "Rmax"
|
|
│ │ │ └── Color: 浅灰色
|
|
│ │ ├── RmaxValue
|
|
│ │ │ └── Text: "1,682.65 TFLOPS"
|
|
│ │ │ └── Color: 亮红色
|
|
│ │ │ └── Font Size: 24
|
|
│ │ │ └── Font Weight: Bold
|
|
│ │ ├── RpeakLabel
|
|
│ │ │ └── Text: "Rpeak"
|
|
│ │ ├── RpeakValue
|
|
│ │ │ └── Text: "2,000.00 TFLOPS"
|
|
│ │ │ └── Color: 灰色
|
|
│ │ └── Font Size: 12
|
|
│ ├── SpecsPanel (规格面板)
|
|
│ │ ├── CoresText
|
|
│ │ │ └── Text: "8,730,112 Cores"
|
|
│ │ ├── NodesText
|
|
│ │ │ └── Text: "76,032 Nodes"
|
|
│ │ ├── InterconnectText
|
|
│ │ │ └── Text: "InfiniBand HDR"
|
|
│ │ └── VendorText
|
|
│ │ └── Text: "HPE"
|
|
│ └── LineSeparator (分隔线)
|
|
│ └── Color: 红色
|
|
```
|
|
|
|
## 数据格式
|
|
|
|
### 输入数据结构
|
|
|
|
```json
|
|
{
|
|
"id": "top500_1",
|
|
"name": "Frontier",
|
|
"source": "top500",
|
|
"data_type": "supercomputer",
|
|
"location": {
|
|
"latitude": 33.7756,
|
|
"longitude": -84.3962,
|
|
"altitude": 0
|
|
},
|
|
"country": "US",
|
|
"city": "Atlanta",
|
|
"metadata": {
|
|
"rmax": 1682.65,
|
|
"rpeak": 2000.00,
|
|
"cores": 8730112,
|
|
"nodes": 76032,
|
|
"interconnect": "InfiniBand HDR",
|
|
"operating_system": "Linux",
|
|
"vendor": "HPE",
|
|
"model": "ExaScale"
|
|
}
|
|
}
|
|
```
|
|
|
|
## 性能格式化函数
|
|
|
|
### FormatPerformance (Float TFLOPS) → String
|
|
|
|
```
|
|
如果 TFLOPS >= 1000000:
|
|
返回 = FString::Printf(TEXT("%.2f EFLOPS"), TFLOPS / 1000000)
|
|
否则如果 TFLOPS >= 1000:
|
|
返回 = FString::Printf(TEXT("%.2f PFLOPS"), TFLOPS / 1000)
|
|
否则:
|
|
返回 = FString::Printf(TEXT("%.2f TFLOPS"), TFLOPS)
|
|
```
|
|
|
|
### FormatNumber (Integer) → String
|
|
|
|
```
|
|
如果 Number >= 1000000:
|
|
返回 = FString::Printf(TEXT("%dM"), Number / 1000000)
|
|
否则如果 Number >= 1000:
|
|
返回 = FString::Printf(TEXT("%dK"), Number / 1000)
|
|
否则:
|
|
返回 = FString::Printf(TEXT("%d"), Number)
|
|
```
|
|
|
|
## TOP500 前 10 名 (测试数据)
|
|
|
|
| 排名 | 名称 | 位置 | Rmax (PFLOPS) | 国家 |
|
|
|------|------|------|---------------|------|
|
|
| 1 | Frontier | 美国 | 1,682.65 | 🇺🇸 |
|
|
| 2 | Aurora | 美国 | 1,206.00 | 🇺🇸 |
|
|
| 3 | Eagle | 美国 | 561.00 | 🇺🇸 |
|
|
| 4 | MareNostrum5 | 西班牙 | 175.00 | 🇪🇸 |
|
|
| 5 | LUMI | 芬兰 | 151.90 | 🇫🇮 |
|
|
| 6 | Leonardo | 意大利 | 148.70 | 🇮🇹 |
|
|
| 7 | Summit | 美国 | 148.60 | 🇺🇸 |
|
|
| 8 | Sierra | 美国 | 119.40 | 🇺🇸 |
|
|
| 9 | Sunway TaihuLight | 中国 | 93.01 | 🇨🇳 |
|
|
| 10 | Tianhe-2A | 中国 | 61.44 | 🇨🇳 |
|
|
|
|
## 交互效果
|
|
|
|
### 悬停效果 (OnHover)
|
|
|
|
```
|
|
1. [播放] Niagara Burst (红色粒子)
|
|
└─ 粒子数量: 30
|
|
2. [播放] Sound "Hover_Enter"
|
|
3. [设置] RingMesh.Visible = true
|
|
4. [播放] Timeline "RingExpand"
|
|
└─ 持续时间: 0.3秒
|
|
5. [设置] WidgetPanel.Opacity = 1.0
|
|
```
|
|
|
|
### 点击效果 (OnClick)
|
|
|
|
```
|
|
1. [播放] Sound "Select"
|
|
2. [播放] Timeline "Pulse"
|
|
└─ 持续时间: 0.5秒
|
|
└─ 缩放变化: 1.0x → 1.3x → 1.0x
|
|
3. [调用] FocusCamera()
|
|
```
|
|
|
|
### 聚焦相机 (FocusCamera)
|
|
|
|
```
|
|
1. [获取] Self.Location → PointLoc
|
|
2. [获取] BP_GlobeController.Camera
|
|
3. [计算] CameraOffset = (0, 0, 500000)
|
|
4. [调用] Camera.SetViewTargetWithBlend(PointLoc + CameraOffset)
|
|
5. [播放] Camera Shake "Focus"
|
|
```
|
|
|
|
## 颜色方案
|
|
|
|
| 性能级别 | 颜色 | RGB | 圆环颜色 |
|
|
|----------|------|-----|----------|
|
|
| > 1 EFLOPS | 暗红色 | (0.8, 0, 0) | 脉冲红 |
|
|
| 500T - 1E | 红色 | (1.0, 0.1, 0.1) | 脉冲橙 |
|
|
| 100T - 500T | 橙色 | (1.0, 0.4, 0.1) | 脉冲黄 |
|
|
| < 100T | 黄色 | (1.0, 0.7, 0.1) | 脉冲白 |
|