Ray 源码分析系列(11)—task

前言

这篇文章主要是了解清楚task在C++与python之间是如何配合起来的。ray选择了用cython对核心的c++代码进行封装,所以阅读起来可能没有那么顺畅。

核心代码

// src/ray/common/task/task_spec.cc

// 计算任务所需资源的核心方法
// 处理常规场景:任务有明确的资源需求
// 处理corner case:任务没有资源需求时使用静态nil对象优化性能
void TaskSpecification::ComputeResources() {
   
  auto &required_resources = message_->required_resources();
  if (required_resources.empty()) {
   
    // 使用静态nil对象避免每次分配空对象
    required_resources_ = ResourceSet::Nil();
  } else {
   
    required_resources_.reset(new ResourceSet(MapFromProtobuf(required_resources)));
  }

  // 处理placement资源,如果没有指定则使用required_resources
  auto &required_placement_resources = message_->required_placement_resources().empty()
                         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值