在resource-types.xml中
添加以下属性
<配置> <属性> <name> yarn.resource-types </ name> <value> yarn.io/fpga </ value> </ property> </ configuration>
对于Capacity Scheduler,必须将DominantResourceCalculator配置为启用FPGA调度/隔离。使用以下属性来配置DominantResourceCalculator(在Capacity-scheduler.xml中):
属性 | 默认值 |
---|---|
yarn.scheduler.capacity.resource-calculator | org.apache.hadoop.yarn.util.resource.DominantResourceCalculator |
<属性> <name> yarn.nodemanager.resource-plugins </ name> <value> yarn.io/fpga </ value> </ property>
这是为了在NodeManager端启用FPGA隔离模块。
默认情况下,设置了上述配置后,YARN将自动检测并配置FPGA。仅当管理员有特殊要求时,才需要在yarn-site.xml中设置以下配置。
1)允许的FPGA器件
属性 | 默认值 |
---|---|
yarn.nodemanager.resource-plugins.fpga.allowed-fpga-devices | 汽车 |
指定可由YARN NodeManager管理的FPGA设备,用逗号分隔。FPGA设备的数量将报告给RM,以制定调度决策。设置为auto(默认)将使YARN自动从系统中发现FPGA资源。
如果管理员只希望由YARN管理的一部分FPGA设备,则手动指定FPGA设备。目前,由于我们只能在ce.cfg中配置一个主号码,因此FPGA设备由其次设备号来标识。对于Intel设备,一种获取次设备FPGA编号的常用方法是使用“ aocl诊断”并使用设备名称检查uevent。
2)可执行以发现FPGA
属性 | 默认值 |
---|---|
yarn.nodemanager.resource-plugins.fpga。到发现可执行文件的路径 |
当指定yarn.nodemanager.resource.fpga.allowed-fpga-devices = auto时,YARN NodeManager需要运行FPGA发现二进制文件(现在仅支持IntelFpgaOpenclPlugin)来获取FPGA信息。如果值为空(默认值),则YARN NodeManager将尝试根据供应商插件的偏好来查找发现可执行文件。例如,“ IntelFpgaOpenclPlugin”将尝试从环境“ ALTERAOCLSDKROOT”获得的目录中查找“ aocl”
3)使用的FPGA插件
属性 | 默认值 |
---|---|
yarn.nodemanager.resource-plugins.fpga.vendor-plugin.class | org.apache.hadoop.yarn.server.nodemanager.containermanager.resourceplugin.fpga.IntelFpgaOpenclPlugin |
目前,仅支持用于FPGA的英特尔OpenCL SDK。FPGA上运行的IP程序(.aocx文件)应使用基于Intel平台的OpenCL编写。
4)CGroups挂接 FPGA隔离使用CGroup 设备控制器执行每个FPGA设备隔离。应将以下配置添加到yarn-site.xml以自动安装CGroup子设备,否则管理员必须手动创建devices子文件夹才能使用此功能。
属性 | 默认值 |
---|---|
yarn.nodemanager.linux-container-executor.cgroups.mount | 真正 |
有关YARN CGroups配置的更多详细信息,请参阅在YARN中使用CGroups。
通常,需要将以下配置添加到container-executor.cfg。fpag.major-device-number和allowed-device-minor-numbers是可选的允许的设备。
[fpga] module.enabled = true fpga.major-device-number = ## FPGA的主要设备号,默认为246。强烈建议设置此值 fpga.allowed-device-minor-numbers = ##逗号分隔允许的次要设备号,为空表示由YARN管理的所有FPGA设备。
当用户需要在非Docker环境下运行FPGA应用程序时:
[cgroups] #系统cgroup的根(不能为空或“ /”) root = / cgroup #YARN的CGroups的父文件夹 纱层次=纱
分布式外壳程序当前支持指定除内存和虚拟内核之外的其他资源类型
在不使用docker容器的情况下运行分布式Shell(.bashrc包含一些与SDK相关的环境变量):
纱罐<path / to / hadoop-yarn-applications-distributedshell.jar> \ -jar <路径/到/hadoop-yarn-applications-distributedshell.jar> \ -shell_command“源/home/yarn/.bashrc && aocl诊断” \ -container_resources内存-mb = 2048,vcores = 2,yarn.io / fpga = 1 \ -num_containers 1
您应该能够看到类似的输出
AOCL诊断:从/home/fpga/intelFPGA_pro/17.0/hld/board/nalla_pcie/linux64/libexec运行诊断 ------------------------- acl0 ------------------------ -- 供应商:Nallatech ltd 物理开发人员名称状态信息 通过的nalla_pcie(aclnalla_pcie0) PCIe dev_id = 2494,总线:slot.func = 02:00.00,Gen3 x8 FPGA温度= 54.4摄氏度。 卡总功耗= 32.4瓦。 设备功耗= 0.0瓦。 DIAGNOSTIC_PASSED -------------------------------------------------- -------
指定启动容器之前YARN应该配置的IP
对于FPGA资源,容器可以具有环境变量“ REQUESTED_FPGA_IP_ID”,以便在启动之前下载YARN并为其刷新IP。例如,REQUESTED_FPGA_IP_ID =“ matrix_mul”将导致在容器的本地目录中搜索名称为“ matirx_mul”的IP文件(“ .aocx”文件)(应用程序应首先分发它)。目前,我们仅支持为所有设备刷新一个IP。如果用户未设置此环境变量,则假定用户的应用程序可以自行找到IP文件。请注意,不需要在YARN中预先进行IP下载和重新编程,因为OpenCL应用程序可能会即时找到IP文件并重新编程设备。但是YARN为容器执行此操作将实现最快的重新编程路径。