[ 
https://issues.apache.org/jira/browse/YARN-5983?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15988445#comment-15988445
 ] 

Zhankun Tang commented on YARN-5983:
------------------------------------

[~devaraj.k], Thanks a lot for the review.
1.
{code:xml}
The scheduler only considers non-exclusive resource. The exclusive resources may
have extra attributes needs to be matched when scheduling. Not just simply add 
or
reduce a number. For instance, in our PoC, a FPGA slot in one node may already
have one IP flashed so that the scheduler should try to match this IP attribute 
to
reuse it.
{code}
{quote}
If you are passing all the attributes of the FPGA resources to RM scheduler, 
why do you want to have the NM side resource management? Can you give some 
details about the attributes passing to the RM and details maintain by the NM 
side resource management in abstract terms?
{quote}
Zhankun --> The RM maintains all attributes of FPGA resources is an ideal 
solution which needs to extend YARN-3926 scheduler implementation. But in this 
design proposal, we'd prefer to keep YARN-3926 RM scheduler unchanged(which 
only consider the count of resource) and add NM a local FPGA resource handler 
which will mainly:
a). Schedule the FPGA resource request(2 MCP for instance) into real FPGA device
b). Handle FPGA IP download and re-configure of specific slot
The key part of this proposal is similar to GPU design(YARN-6223) but add the 
vendor framework part.
2.
{quote}
Does this need to be done for each container, Can it be done one time during 
the cluster installation?
{quote}
Zhankun: --> Good question. Actually the admin can do the IP download and 
configuration of FPGA one time to the cluster manually. But if an application 
wants to use a new FPGA IP that needs re-configuration, a good way of doing 
these may be in YARN itself. This automation in YARN can potentially increase 
the FPGA utilization(not good as the ideal RM scheduler) if we have large 
amount of FPGA devices.
And these work should be done for each container, although we can skip it if an 
FPGA slot already matches IP requirements.
3. 
{quote}
Can FPGA slots share my multiple containers? How do we prevent if any 
container(Non FPGA allocated container)/application try to use the FPGA 
resources which are not allocated to them?
{quote}
Zhankun: --> We can utilize cgroups/Docker to do FPGA slot isolation to avoid 
invalid access. But I guess there may be requirements that don't want isolation 
in order to maximize device utilization( the user may have a daemon managing 
requests from multiple containers to FPGA IP), we can provide option for user 
to disable isolation?
4.
{quote}
Any changes to ContainerExecutor, how does the application code running in the 
container come to know about the allocated FPGA resource to access/use the FPFA?
{quote}
Zhankun:--> It should be no changes to both DefaultContainerExecutor and 
LinuxContainerExecutor. Knowing about which FPGA resource to use depends on the 
vendor specific SDK I think. For instance, container application code may 
utilize Intel AAL SDK and the latter will know which FPGA slot to use (maybe 
based on some environment setting).
5.
{quote}
What are the configurations user to need to configure for the application to 
use FPGA resources?
{quote}
Zhankun: --> For YARN configurations before cluster start, the admin need to 
define different type of FPGA resources and its count. When a user wants to 
submit the application, it needs to provide two inputs:
a). the required FPGA resource for container request (AM will use this to 
request FPGA container from RM)
b). the ID/name of the required FPGA IP (can be set in container's environment 
variable for container run-time to use)


And great thanks again for the questions and remind me some points uncertain. 
I'll provide a patch to make it more clear later.

> [Umbrella] Support for FPGA as a Resource in YARN
> -------------------------------------------------
>
>                 Key: YARN-5983
>                 URL: https://issues.apache.org/jira/browse/YARN-5983
>             Project: Hadoop YARN
>          Issue Type: New Feature
>          Components: yarn
>            Reporter: Zhankun Tang
>            Assignee: Zhankun Tang
>         Attachments: YARN-5983-Support-FPGA-resource-on-NM-side_v1.pdf
>
>
> As various big data workload running on YARN, CPU will no longer scale 
> eventually and heterogeneous systems will become more important. ML/DL is a 
> rising star in recent years, applications focused on these areas have to 
> utilize GPU or FPGA to boost performance. Also, hardware vendors such as 
> Intel also invest in such hardware. It is most likely that FPGA will become 
> popular in data centers like CPU in the near future.
> So YARN as a resource managing and scheduling system, would be great to 
> evolve to support this. This JIRA proposes FPGA to be a first-class citizen. 
> The changes roughly includes:
> 1. FPGA resource detection and heartbeat
> 2. Scheduler changes
> 3. FPGA related preparation and isolation before launch container
> We know that YARN-3926 is trying to extend current resource model. But still 
> we can leave some FPGA related discussion here



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to