AMD HSA 异构计算架构和AMD-KFD内核驱动&NVIDIA内核驱动

本文探讨了AMD的HSA异构计算架构和AMD-KFD内核驱动,旨在打破CPU和GPU的界限,实现高效协同工作。HSA允许任何处理单元无缝访问数据,简化编程,提高系统性能。AMD的KFD驱动作为HSA的基础,已集成到Linux内核中,与DRM框架协同工作。同时,文章对比了AMD与NVIDIA的内核驱动策略,强调了AMD在开源方面的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当前的CPU和GPU是分立设计的处理器,不能高效率地协同工作,编写同时运行于CPU和GPU的程序也是相当麻烦。由于CPU和GPU拥有独立的地址空间,应用程序不得不明确地控制数据在CPU和GPU之间的流动。CPU代码通过系统调用向GPU发送任务,此类系统调用一般由GPU驱动程序管理,而驱动程序本身又受到其他调度程序管理。这么多的环节造成了很大的调用开销.

为了充分释放并行处理器的计算能力,架构设计者必须打破既有格局,采用新的思路。设计者必须重塑计算系统,把同一个平台上分立的处理单元紧密整合成为不断演进单颗处理器,同时无需软件开发者的编程方式发生重大的改变,这是HSA(Heterogeneous System Architecture)设计中的首要目标。

2012年6月份,AMD联合ARM、Imagination、联发科、德州仪器共同组建了非营利组织“异构系统架构基金会”(HSA Foundation),随后吸引了三星电子、高通以及大批行业公司、科研机构的加盟。

10年前这个消息公布之后,AMD还给业界画了一个大饼——未来是属于HSA异构运算的,十六年前54亿美元收购ATI公司也是为了CPU+GPU异构运算的大业,其中CPU负责通用运算及管理,GPU则依靠强大的浮点性能提供主要输出。

不过10年过去了,HSA并没有推出什么重要的产品,实际上这几年盟主AMD都不怎么提HSA异构的事了,尽管自家的APU产品还在推。

意大利网站bitchips日前表示AMD的HSA异构运算死了,要被埋葬了,CPU、GPU共处一个核心的APU也会停止了,未来将是CPU+GPU同一封装的天下(猜测可能是chiplets 芯粒基数,GPU和CPU封装在一起,但不是同一颗DIE).

APU是“Accelerated Processing Units”的简称,中文名字叫加速处理器,是AMD融聚未来理念的产品,它第一次将处理器和独显核心做在一个晶片上,协同计算、彼此加速,同时具有高性能处理器和最新支持DX11独立显卡的处理性能,大幅提升电脑运行效率,实现了CPUGPU真正的融合。APU是处理器未来发展的趋势。

相比INTEL的酷睿系列集成显卡,APU的GPU所占面积要大很多,将近50%,毕竟集成进同一颗芯片的是独立显卡,并非是功能受限,阉割严重的核显。

从APU的发展来看,AMD在做的事情是让CPU和GPU彻底融为一体,无论是AMD的Llano,还是Brazos,目标都是一致的。AMD认为,CPU和GPU的融合将分为四步进行:第一步是物理整合过程(Physical Integration),将CPU和GPU集成在同一块硅芯片上,并利用高带宽的内部总线通讯,集成高性能的内存控制器,借助开放的软件系统促成异构计算。第二步称为平台优化(Optimized Platforms),CPU和GPU之间互连接口进一步增强,并且统一进行双向电源管理,GPU也支持高级编程语言。第三步是架构整合(Architectural Integration),实现统一的CPU/GPU寻址空间、GPU使用可分页系统内存、GPU硬件可调度、CPU/GPU/APU内存协同一致。第四步是架构和系统整合(Architectural & OS Integration),主要特点包括GPU计算上下文切换、GPU图形优先计算、独立显卡的PCI-E协同、任务并行运行实时整合等等。

全功能HSA的特点

HSA将CPU和GPU紧密结合在一起,释放强大,灵活的算力:

再看几个脑洞大开的HSA设计思路,除了hUMA一致性存储外,让人眼前一亮的还有CPU算力和GPU算力一视同仁,统一协调分配,GPU可以向CPU dispatch串行WORK,而CPU也可以向GPU发送并行WORK,将并行和串行算力的利用率发挥到极致。

CPU和GPU的交互更加灵活,甚至都可以在GPU kernel中调用CPU的回调函数,这样可以扩大GPU端kernel实现的粒度,不再需要将大KERNEL切分成小KERNEL,在小KERNEL中间执行CPU流程,增加GPU侧的throughput.

HSA Arch BLock:

异构系统架构(HSA,Heterogeneous System Architecture)用一句话来概括就是:一种智能计算架构,通过无缝地分配相应的任务至最适合的处理单元,使CPU、GPU和其他处理器和谐工作在单一芯片上。上一代APU虽然已经将CPU和GPU无缝融合在了一起,但并没有实现“分配相应的任务至最适合的处理单元”,这就是HSA架构的精髓,也是AMD未来APU想要努力实现的方向。

PS:根据这段描述,似乎可以得出结论,APU是 HSA发展过程中的一个阶段,两者关系用欧拉图表示可以表示成:

HSA系统的几大特性:

   1. 任何处理单元的数据可以轻易地被其它处理单元所访问;
   2. 异构计算不仅包括GPU,还包括其它专用处理单元或协处理器;
   3. 编程人员不用知道程序在什么处理单元上运行;
   4. GPU和其它处理单元无缝访问虚拟内存,解决数据搬迁瓶颈,数据无需复制。

在硬件层面,HSA架构当中的异构统一内存访问是一项关键技术。将CPU,GPU和内存全部封装为一体,大幅缩短了DDR内存行程,和CPU-GPU PCIe行程,从而大幅提高了性能和效率。这样做的优势还有很多,以多媒体解码应用为例,在基于PCIE GPU解码加速的卡上,为了缩短数据访问的行程,通常解码在GPU上进行,但是CPU上必须同时保留framebuffer和vbv的buffer,以便做数据缓冲和frambuffer的下一步处理(比如显示,后处理等等),如果CPU和GPU共享一个物理存储,两边访问行程一样,这样会节省两个buffer。

AMD在技术创新上相对int

<think>好的,我现在需要帮助用户了解如何在AMD ROCm平台上安装配置Ollama。首先,我得确认用户的需求是什么。用户提到他们想了解Ollama在ROCm上的支持情况以及安装配置方法。他们已经提供了几个引用链接,其中涉及ROCm的安装指南、Ubuntu 22.04的安装教程、QLoRA调优的博客,以及一个关于NVIDIA GPU不兼容PyTorch的错误信息。 首先,我需要回忆Ollama的相关信息。Ollama是一个用于本地运行大型语言模型(LLM)的工具,通常支持CUDA的NVIDIA GPU。但用户询问的是AMD的ROCm平台,这可能涉及到兼容性问题。根据引用[3],有博客提到在单个AMD GPU上使用QLoRA调优Llama 2,这说明至少在某些情况下,AMD GPU可以用于类似的任务,但需要ROCm的支持。 接下来,我需要确认Ollama是否官方支持ROCm。查阅Ollama的官方文档,发现目前Ollama主要支持CUDA,但可能社区有非官方的支持或变通方法。用户提供的引用[3]显示有通过ROCm运行LLM的例子,所以可能可以配置Ollama使用ROCm。 然后,安装步骤可能需要先安装ROCm,如引用[1][2]所述。用户需要确保系统符合ROCm的要求,比如Ubuntu 22.04,然后按照官方指南安装ROCm 6.0。这可能涉及添加仓库、安装内核模块、配置用户组等步骤,如引用[2]中的教程提到的。 接下来,安装PyTorch的ROCm版本。因为Ollama可能依赖于PyTorch,而默认安装的PyTorch可能不支持AMD GPU。用户需要从PyTorch官网选择支持ROCm的版本,例如使用pip安装命令指定rocm5.6或更高版本。引用[4]中的错误信息提示了CUDA版本不兼容的问题,但在这里用户需要确保PyTorch针对ROCm构建。 然后是安装Ollama本身。可能需要从源码编译或使用社区提供的支持ROCm的分支。例如,用户可能需要克隆Ollama的仓库,检查是否有ROCm支持的分支,并按照特定说明编译。这可能涉及设置环境变量,如HSA_OVERRIDE_GFX_VERSION,特别是对于不同型号的AMD GPU,如RX 6000系列需要设置这个变量。 配置Ollama时,可能需要修改配置文件,指定使用ROCm作为后端,或者设置相应的参数让Ollama识别AMD GPU。例如,在启动Ollama时添加参数,或者设置环境变量如HIP_VISIBLE_DEVICES来指定使用的GPU。 验证安装是否成功,可以运行Ollama的命令行工具,查看日志是否检测到AMD GPU,并测试模型推理是否使用GPU加速。用户可能需要运行ollama run llama2这样的命令,并监控GPU的使用情况,比如使用rocm-smi工具。 此外,需要注意可能的常见问题,比如依赖项缺失、权限问题(需要将用户加入video组)、内核模块未正确加载等。引用[2]中的教程提到了安装过程中的一些坑,比如需要安装特定版本的ROCm,或者处理依赖冲突。 最后,生成相关问题时要考虑用户可能的后续疑问,比如性能调优、错误处理、模型兼容性等,帮助用户进一步解决问题。</think>### Ollama在AMD ROCm平台上的安装与配置指南 #### 1. 确认硬件与系统要求 - **AMD GPU支持**: 需为ROCm支持的GPU型号,例如Radeon VII、Radeon Pro VII、Instinct MI系列等。部分消费级显卡如RX 6000系列需手动设置环境变量`HSA_OVERRIDE_GFX_VERSION=10.3.0`[^2]。 - **操作系统**: 推荐Ubuntu 22.04 LTS,其他Linux发行版需参考官方兼容性列表[^1]。 #### 2. 安装ROCm平台 1. **添加ROCm仓库**: ```bash wget -q -O - https://repo.radeon.com/rocm/rocm.gpg.key | sudo apt-key add - echo 'deb [arch=amd64] https://repo.radeon.com/rocm/apt/6.0/ ubuntu main' | sudo tee /etc/apt/sources.list.d/rocm.list ``` 2. **安装ROCm核心组件**: ```bash sudo apt update sudo apt install rocm-hip-sdk rocm-opencl-sdk ``` 3. **配置用户权限**: ```bash sudo usermod -aG video $USER ``` 重启系统后运行`rocminfo`验证安装。 #### 3. 配置PyTorch for ROCm Ollama依赖PyTorch的GPU加速,需安装支持ROCm的版本: ```bash pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm6.0 ``` #### 4. 安装Ollama 目前Ollama官方未直接支持ROCm,需通过源码编译: ```bash git clone https://github.com/jmorganca/ollama cd ollama # 切换到社区支持分支(例如rocm-experimental) GOAMD64=v3 make ROCM_ENABLED=1 ``` 编译成功后,将生成的`ollama`二进制文件复制到`/usr/local/bin/`。 #### 5. 运行与验证 - **启动Ollama服务**: ```bash HSA_OVERRIDE_GFX_VERSION=10.3.0 ollama serve ``` - **测试模型加载**: ```bash ollama run llama2 ``` 观察日志中是否出现`Using AMD GPU with ROCm`的提示。 #### 6. 常见问题 - **GPU未识别**: 检查`/dev/kfd`权限,或尝试`export HIP_VISIBLE_DEVICES=0`。 - **依赖冲突**: 使用`docker run --device=/dev/kfd --device=/dev/dri --security-opt seccomp=unconfined -it rocm/pytorch`在容器中运行[^3]。 - **性能调优**: 调整`OLLAMA_NUM_GPU=2`环境变量分配多GPU资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值