我要入门
⚠ 题目描述
异构计算环境配置
你需要配置一个异构计算环境,支持初步编译并运行CUDA生态下的程序。
| 方案 | 平台 | 优点 | 缺点 | 备注 |
|---|---|---|---|---|
| 本地安装CUDA | 本地 | 独享环境,没有时间次数限制 | 需要本地及配有NVIDIA系独立显卡;需要额外关注安全问题和环境依赖的管理 | 安装方法请自行寻找 |
| 使用线上Note Book | 线上 | 不需要本地环境,进行线上认证即可免费使用 | 不能独享,往往有时间和次数限制 | 供应商推荐:阿里天池(但经常用不上) |
| LeetGPU | 线上 | 最后的保底方案 | 限制度最高,可以用来临时拿来写CUDA算子题;免费版有提交上限 | 网址:https://leetgpu.com/challenges |
PyTorch环境部署
你需要部署一个支持运算PyTorch程序的环境,支持运行如下的Python程序:
import os
import sys
import torch
import torch.distributed as dist
import torch.multiprocessing as mp
def run(rank, size):
sync_signal = torch.zeros(1)
if rank == 0:
dist.recv(tensor=sync_signal, src=1)
print("HPC!")
if rank == 1:
print("Hello")
dist.send(tensor=sync_signal, dst=0)
def init_process(rank, size, fn, backend='gloo'):
os.environ['MASTER_ADDR'] = '127.0.0.1'
os.environ['MASTER_PORT'] = '29500'
dist.init_process_group(backend, rank=rank, world_size=size)
fn(rank, size)
if __name__ == "__main__":
world_size = 2
processes = []
mp.set_start_method("spawn")
for rank in range(world_size):
p = mp.Process(target=init_process, args=(rank, world_size, run))
p.start()
processes.append(p)
for p in processes:
p.join()
tips:
- 某些网站的使用可能需要你科学上网。
- 如果没有本地环境,可以先尝试通过GitHub登录 LeetGPU,完成前三道CUDA算子编程题。
要求
- 对于HPC方向的所有题目,提交者必须完全理解自己提交文档的内容;面试时会线下考察提交者对题目的理解。
🥨分数分布
- 如果你能完成异构计算的运行环境配置,你可以获得 50% 的分数。
- 如果你能完成PyTorch环境的部署,你可以获得另外 50% 的分数。