腾讯云高性能计算平台THPC完全对接指南:从集群创建到作业调度实战
1. 初识腾讯云高性能计算平台THPC
高性能计算平台(TencentCloud High Performance Computing,THPC)是腾讯云自研的一款高性能计算资源管理服务。它并非直接提供物理计算节点,而是将腾讯云上的计算、存储、网络等产品资源进行深度集成,并整合了HPC专用的作业管理调度与集群管理软件,向用户提供弹性灵活、性能卓越、自助化的计算服务。
理解THPC的定位需要先厘清一个概念:腾讯云还有一款名为高性能计算集群(THCC)的产品,它是通过RDMA网络互联的裸金属集群,属于IaaS层的产品。而THPC则是构建在IaaS资源之上的PaaS层资源管理服务,整合了调度器和集群管理软件。简单来说,THCC提供的是"算力硬件",而THPC提供的是"算力管理平台"——用户通过THPC可以更便捷地调度和管理底层的计算资源。
1.1 核心产品特性
THPC围绕高性能计算场景设计了一系列核心功能:
- 弹性伸缩:根据业务负载动态申请和释放计算资源,高峰时期无缝扩展,低谷时期自动回落,实现资源的按需使用。
- 资源管理:支持批量创建计算资源,以集群方式统一管理大规模计算节点和存储资源,实时监控资源状态并快速调整。
- 作业调度:支持Slurm等HPC行业标准的调度器,用户可通过主控节点提交作业,系统自动进行资源分配与任务调度。
- 共享存储:支持自动挂载文件存储CFS或数据加速器GooseFS,为集群中所有节点提供统一的共享存储空间。
- 灵活部署:支持丰富的实例规格选择,可灵活适配科学计算、基因测序、建模仿真、气象预测等多种应用场景。
- 按需付费:仅需为实际使用的云资源付费,无需预付费用,结合弹性伸缩功能可有效控制成本。
1.2 典型应用场景
THPC在多个高性能计算领域都有广泛的应用:
- 基因工程:部署基因测序、基因比对等软件,快速获得基因组信息与分析结果。
- 药物筛选与分子模拟:部署药物分子模拟软件,分析蛋白质等大分子结构,加速新药研发。
- 科学计算:整合大规模浮点运算能力的异构计算资源,进行数值模拟与仿真计算。
- 工程制造:辅助分析复杂工程架构和力学结构,通过大量数据仿真模拟优化产品性能。
需要先登录腾讯云控制台,点击:腾讯云控制台,还没有账号,点击:注册后再关联,已有账号点击:登录后再关联
2. 对接方式概览
THPC提供了多种对接方式,用户可以根据自身技术栈和使用习惯灵活选择。
2.1 控制台方式
通过腾讯云官网的THPC产品控制台,可以直观地完成集群创建、节点管理、存储挂载等操作。这是最便捷的入门方式,适合初次接触THPC的用户快速体验产品功能。
2.2 API方式
THPC提供了完整的API 3.0接口,接口请求域名为 thpc.tencentcloudapi.com。核心接口包括:
CreateCluster:创建并启动集群DescribeClusters:查询集群列表AddNodes/DeleteNodes:添加/删除节点AddQueue/DeleteQueue:添加/删除队列SubmitJob/TerminateJob:提交/终止作业BindAutoScalingGroup:绑定弹性伸缩组SetAutoScalingConfiguration:设置弹性伸缩配置AddClusterStorageOption:添加集群存储选项
腾讯云提供了API Explorer工具,支持在线调用、签名验证、SDK代码生成和快速检索接口等能力。用户可以直接在浏览器中调试API接口并自动生成调用代码。
2.3 命令行工具TCCLI
TCCLI是腾讯云提供的统一命令行工具,支持通过命令行调用THPC的所有API接口。适合习惯命令行操作或需要编写自动化脚本的运维人员。
2.4 SDK方式
腾讯云为多种编程语言提供了SDK支持,包括Python、Java、Go、Node.js、PHP等。通过SDK可以将THPC的管理能力集成到自己的应用程序中,实现自动化运维和业务联动。
3. 集群创建实战
集群是THPC的基本管理单元,由计算节点、登录节点等组成,用于运行高性能计算作业。创建集群是对接使用THPC的第一步。
3.1 前置准备
在创建集群之前,需要完成以下准备工作:
- 账号与实名认证:注册腾讯云账号并完成实名认证。
- 获取API密钥:在访问管理控制台获取SecretId和SecretKey。
- 服务角色授权:完成THPC服务角色的授权。
- 网络规划:确定集群所在的VPC和子网。
- 镜像选择:THPC目前支持CentOS 7.9(镜像ID: img-l8og963d)和CentOS 8.2(镜像ID: img-n7nyt2d7)。
3.2 通过控制台创建集群
在THPC控制台点击"新建集群",按照向导配置以下关键参数:
- 地域与可用区:选择集群所在的区域。
- 集群名称与描述:便于识别和管理。
- 管控节点:数量可为1或2个,负责集群管理和作业调度。
- 计算节点:初始数量可为0,后续通过弹性伸缩动态调整。
- 调度器类型:目前支持Slurm。
- 镜像ID:选择支持的镜像。
- 网络配置:VPC和子网。
- 登录设置:密钥对或密码。
- 安全组:指定安全组或使用默认安全组。
集群创建是异步操作,提交后会返回集群ID,状态会经历PENDING和INITING阶段,最终变为RUNNING状态表示创建完成。
3.3 通过API创建集群(Python SDK示例)
以下是使用Python SDK创建THPC集群的完整代码示例:
# -*- coding: utf-8 -*-
import json
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.thpc.v20230321 import thpc_client, models
def create_thpc_cluster(secret_id, secret_key, zone, vpc_id, subnet_id, image_id):
# 认证信息
cred = credential.Credential(secret_id, secret_key)
# HTTP配置
httpProfile = HttpProfile()
httpProfile.endpoint = "thpc.tencentcloudapi.com"
# 客户端配置
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
# 创建客户端
client = thpc_client.ThpcClient(cred, "ap-guangzhou", clientProfile)
# 构造请求
req = models.CreateClusterRequest()
# 位置信息
placement = models.Placement()
placement.Zone = zone
req.Placement = placement
# 管控节点配置
manager_node = models.ManagerNode()
manager_node.InstanceType = "S5.MEDIUM4" # 2核4GB
req.ManagerNode = manager_node
req.ManagerNodeCount = 1
# 计算节点配置(初始为0)
compute_node = models.ComputeNode()
compute_node.InstanceType = "S5.LARGE8" # 4核8GB
req.ComputeNode = compute_node
req.ComputeNodeCount = 0
# 调度器类型
req.SchedulerType = "SLURM"
# 镜像ID
req.ImageId = image_id
# VPC配置
vpc = models.VirtualPrivateCloud()
vpc.VpcId = vpc_id
vpc.SubnetId = subnet_id
req.VirtualPrivateCloud = vpc
# 登录设置(使用密钥对)
login_settings = models.LoginSettings()
login_settings.KeyIds = ["skey-xxxxxxxx"]
req.LoginSettings = login_settings
# 发送请求
resp = client.CreateCluster(req)
# 打印响应
print(json.dumps(resp.to_json_object(), indent=2, ensure_ascii=False))
return resp.ClusterId
if __name__ == "__main__":
# 请替换为实际的密钥和参数
cluster_id = create_thpc_cluster(
secret_id="您的SecretId",
secret_key="您的SecretKey",
zone="ap-guangzhou-6",
vpc_id="vpc-xxxxxxxx",
subnet_id="subnet-xxxxxxxx",
image_id="img-l8og963d"
)
print(f"集群创建成功,集群ID: {cluster_id}")安装SDK的命令:
pip install tencentcloud-sdk-python-common tencentcloud-sdk-python-thpc3.4 通过TCCLI命令行创建集群
首先安装并配置TCCLI:
# 安装TCCLI
pip install tccli
# 初始化配置
tccli configure创建集群的JSON配置文件 cluster.json:
{
"Placement": {
"Zone": "ap-guangzhou-6"
},
"ManagerNodeCount": 1,
"ManagerNode": {
"InstanceType": "S5.MEDIUM4"
},
"ComputeNodeCount": 0,
"SchedulerType": "SLURM",
"ImageId": "img-l8og963d",
"VirtualPrivateCloud": {
"VpcId": "vpc-xxxxxxxx",
"SubnetId": "subnet-xxxxxxxx"
},
"LoginSettings": {
"KeyIds": ["skey-xxxxxxxx"]
}
}执行创建命令:
tccli thpc CreateCluster --cli-input-json file://./cluster.json查询集群状态:
tccli thpc DescribeClusters --ClusterIds '["hpc-xxxxxxxx"]'4. 存储配置与管理
THPC集群需要共享存储来存放作业数据、应用程序和计算结果。创建集群后,可以给集群挂载额外的CFS或GooseFS等文件系统。
4.1 存储类型选择
- CFS(文件存储):标准的NFS共享文件系统,适合大多数HPC场景。
- CFS-TURBO:高性能版本,提供更高的IOPS和吞吐量。
- GooseFS:数据加速器,适合对数据访问延迟要求极高的场景。
需要注意的是,创建的存储资源必须与待挂载的THPC集群位于同一VPC下。
4.2 集群创建时挂载存储
在调用CreateCluster接口时,可以通过StorageOption参数指定存储挂载配置。如果不指定挂载目录,THPC会自动在/opt目录下创建并挂载一个标准型CFS,用于存储调度器配置和集群依赖。
4.3 集群运行中挂载存储
对于已运行的集群,可以通过AddClusterStorageOption接口添加存储选项。添加后THPC会尝试对当前集群所有节点挂载存储资源,后续扩容的节点也会自动挂载。
API调用示例:
{
"ClusterId": "hpc-rv7hahw2",
"StorageOption": {
"CFSOptions": [{
"LocalPath": "/data",
"RemotePath": "172.30.3.90:/",
"Protocol": "NFS 4.0",
"StorageType": "SD"
}]
}
}参数说明:
- LocalPath:集群节点上的本地挂载点,如果目录不存在THPC会自动创建。
- RemotePath:CFS的远程路径,CFS支持子目录挂载。
- Protocol:挂载协议,通常使用NFS 4.0。
- StorageType:存储类型,SD表示标准型。
挂载完成后,可以登录节点执行 df -h 命令确认挂载成功。
5. 队列管理与作业调度
THPC集成了Slurm调度器,支持通过队列对作业进行逻辑分组管理。
5.1 队列管理
每个THPC集群最多可创建10个队列。添加队列的API示例:
tccli thpc AddQueue --ClusterId hpc-xxxxxxxx --QueueName gpu_queueSlurm的默认队列名为 compute。
5.2 提交作业
作业是通过调度系统分配资源并执行的计算任务。提交作业可以通过SubmitJob接口。
编写Slurm作业脚本 job.slurm:
#!/bin/bash
#SBATCH --job-name=test_job
#SBATCH --output=%j.out
#SBATCH --error=%j.err
#SBATCH --ntasks=4
#SBATCH --cpus-per-task=2
#SBATCH --mem=8G
#SBATCH --time=01:00:00
#SBATCH --partition=compute
# 加载环境模块(如有)
# module load intel/oneapi
# 执行计算任务
mpirun -np 4 ./vasp_executable通过sbatch命令提交作业:
sbatch job.slurm常用作业管理命令:
squeue:查看作业队列状态scancel <job_id>:取消作业sacct:查看作业历史记录
5.3 通过API提交作业
SubmitJob接口的请求示例:
{
"ClusterId": "hpc-cy4pnyp9",
"Job": {
"JobName": "test_job",
"JobScript": "#!/bin/bash\necho 'Hello THPC'",
"QueueName": "compute"
}
}6. 弹性伸缩配置
弹性伸缩是THPC最核心的能力之一,能够根据作业负载动态调整计算节点数量,在保证计算能力的同时节约成本。
6.1 启用弹性伸缩
需要在创建集群时将AutoScalingType设置为THPC_AS。目前仅Slurm集群支持THPC_AS模式。
创建集群时启用弹性伸缩的配置示例:
{
"Placement": {"Zone": "ap-chongqing-1"},
"ManagerNodeCount": 1,
"ManagerNode": {"InstanceType": "S5.MEDIUM4"},
"SchedulerType": "SLURM",
"ImageId": "img-l8og963d",
"VirtualPrivateCloud": {
"VpcId": "vpc-r9jw2jzv",
"SubnetId": "subnet-0v4eybey"
},
"AutoScalingType": "THPC_AS"
}6.2 扩容匹配原则
THPC的扩容匹配遵循"资源最少优先"原则:
- 优先匹配CPU资源:选择运行作业后剩余CPU资源最少的实例类型。
- CPU相同时匹配内存:在CPU剩余资源相同的情况下,选择剩余内存最少的实例。
场景示例:
- 场景A:作业需要4核4GB,可选实例A(4核16GB)和实例B(8核8GB)。THPC会选择实例A,因为CPU优先级更高,4核匹配4核比8核匹配4核更紧凑。
- 场景B:作业需要4核4GB,可选实例A(4核16GB)和实例B(4核8GB)。THPC会选择实例B,因为CPU相同的情况下,内存更紧凑。
6.3 多机型多可用区配置
为防止单一机型售罄导致扩容失败,THPC支持为同一队列配置多种机型和可用区。配置示例如下:
| 下标 | 机型 | 可用区 | vCPU | 内存(GB) |
|---|---|---|---|---|
| 1 | SA2.2XLARGE16 | 广州四区 | 8 | 16 |
| 2 | SA2.2XLARGE16 | 广州五区 | 8 | 16 |
| 3 | SA2.2XLARGE16 | 广州六区 | 8 | 16 |
| 4 | SA3.2XLARGE16 | 广州五区 | 8 | 16 |
| 5 | SA3.2XLARGE16 | 广州六区 | 8 | 16 |
THPC会按照配置列表的下标由低到高依次尝试创建实例进行扩容。
6.4 设置弹性伸缩配置
通过SetAutoScalingConfiguration接口配置伸缩策略:
tccli thpc SetAutoScalingConfiguration \
--ClusterId hpc-xxxxxxxx \
--ExpansionNodeConfig '[
{"QueueName":"compute","NodeType":"COMPUTE_NODE","Count":1,"InstanceType":"S5.LARGE8"}
]'7. 使用限制与注意事项
在使用THPC过程中,需要注意以下限制:
7.1 节点限制
- 管控节点:数量为1或2个。
- 计算节点:最少0个,最多200个。
- 数据盘:每个节点最多21块。
- 计费类型:管控节点支持包年包月和按量计费;计算节点额外支持竞价实例。
7.2 调度器与镜像
- 目前仅支持Slurm调度器。
- 支持的镜像:CentOS 7.9(img-l8og963d)和CentOS 8.2(img-n7nyt2d7)。
7.3 集群账户管理
支持通过NIS(Network Information Service)管理集群账户信息。
7.4 计费说明
THPC平台服务本身完全免费。用户需要支付的费用是集群中云服务器实例的费用,包括计算节点和管控节点的CVM费用,以及CFS存储费用和网络流量费用。计费模式支持包年包月和按量计费。
8. 最佳实践建议
8.1 使用自定义镜像加速扩容
如果每次扩容都需要重新安装依赖软件,会显著增加节点启动时间。建议基于官方镜像预装好所有依赖软件后创建自定义镜像,在创建集群时传入自定义镜像ID。但需要注意,如果自定义镜像缺少THPC集群运行所需的依赖包,可能导致节点操作失败。
8.2 合理规划存储
/opt目录由THPC自动管理,用于存放调度器配置和集群依赖。用户数据建议放在单独挂载的/data或其他自定义目录,便于数据管理和备份。
8.3 弹性伸缩成本优化
对于非持续性的计算任务(如每天不定时提交作业),建议配置THPC_AS弹性伸缩模式,让系统根据作业负载自动扩容和缩容。结合竞价实例的使用,可以进一步降低计算成本。
8.4 监控与运维
THPC提供了DescribeClusterActivities接口用于查询集群活动历史记录,DescribeJobs接口用于查询作业任务,建议建立日常监控机制,及时发现问题。
9. 常见问题解答
Q1: THPC和THCC有什么区别?
THCC(高性能计算集群)是通过RDMA网络互联的裸金属集群,属于IaaS层产品,提供的是物理算力。THPC(高性能计算平台)是构建在IaaS之上的PaaS层资源管理服务,整合了调度器、集群管理等软件。可以理解为THCC提供"硬件",THPC提供"管理平台"。
Q2: THPC支持哪些调度器?
目前THPC主要支持Slurm调度器。单个集群中队列数量上限为10个。
Q3: 如何查看集群的创建进度?
可以通过DescribeClusters接口查询集群状态。集群状态包括PENDING(等待中)、INITING(初始化中)、RUNNING(运行中)、INIT_FAILED(创建失败)。
Q4: 弹性伸缩的扩容匹配逻辑是什么?
THPC优先匹配CPU资源,选择运行作业后剩余CPU最少的实例;CPU相同时再匹配内存资源。如果投递作业所需资源在配置的机型中没有满足的规格,则不会进行扩容。
Q5: THPC如何计费?
THPC平台服务本身免费。费用主要来自集群中的CVM实例(计算节点和管控节点)、CFS存储和网络流量。CVM支持包年包月和按量计费两种模式。
Q6: 创建集群后如何添加计算节点?
有两种方式:一是通过弹性伸缩自动扩容(推荐),设置AutoScalingType为THPC_AS后系统会根据作业负载自动增加节点;二是通过AddNodes接口手动添加节点。




