1616import numpy as np
1717
1818from ... import opcodes as OperandDef
19- from ...serialization .serializables import StringField
19+ from ...serialization .serializables import Int32Field , StringField
2020from ...storage .base import StorageLevel
2121from ...utils import calc_nsplits , has_unknown_shape
2222from ...core .context import get_context
@@ -50,6 +50,9 @@ class TensorFromVineyard(TensorNoInput):
5050 # ObjectID in vineyard
5151 object_id = StringField ("object_id" )
5252
53+ # a dummy attr to make sure ops have different keys
54+ operator_index = Int32Field ("operator_index" )
55+
5356 def __init__ (self , vineyard_socket = None , object_id = None , ** kw ):
5457 super ().__init__ (vineyard_socket = vineyard_socket , object_id = object_id , ** kw )
5558
@@ -62,6 +65,7 @@ def tile(cls, op):
6265 for index , worker in enumerate (workers ):
6366 chunk_op = op .copy ().reset_key ()
6467 chunk_op .expect_worker = worker
68+ chunk_op .operator_index = index
6569 out_chunk = chunk_op .new_chunk (
6670 [], dtype = np .dtype (object ), shape = (1 ,), index = (index ,)
6771 )
@@ -183,7 +187,7 @@ def fromvineyard(tensor, vineyard_socket=None):
183187 dtype = np .dtype ("byte" ),
184188 gpu = False ,
185189 )
186- meta = metaop (shape = (np .nan ,), chunk_size = (1 ,))
190+ meta = metaop (shape = (np .nan ,), chunk_size = (np . nan ,))
187191 op = TensorFromVineyardChunk (
188192 vineyard_socket = vineyard_socket , object_id = object_id , gpu = False
189193 )
0 commit comments