def java_function(class_name, function_name): """Define a Java function. Args: class_name (str): Java class name. function_name (str): Java function name. """ from ray.remote_function import RemoteFunction return RemoteFunction( Language.JAVA, lambda *args, **kwargs: None, JavaFunctionDescriptor(class_name, function_name, ""), None, # num_cpus, None, # num_gpus, None, # memory, None, # object_store_memory, None, # resources, None, # accelerator_type, None, # num_returns, None, # max_calls, None, # max_retries placement_group=None, # TODO(ekl) set default to -1 once we support -1 as "any index" placement_group_bundle_index=0, placement_group_capture_child_tasks=None)
def java_function(class_name, function_name): """Define a Java function. Args: class_name (str): Java class name. function_name (str): Java function name. """ from ray.remote_function import RemoteFunction return RemoteFunction( Language.JAVA, lambda *args, **kwargs: None, JavaFunctionDescriptor(class_name, function_name, ""), None, # num_cpus, None, # num_gpus, None, # memory, None, # object_store_memory, None, # resources, None, # accelerator_type, None, # num_returns, None, # max_calls, None, # max_retries, None, # retry_exceptions, None, # runtime_env, None, # placement_group, None) # scheduling_strategy,
def get_function_descriptor_for_actor_method( language: str, actor_creation_function_descriptor, method_name: str, signature: str): """Get function descriptor for cross language actor method call. Args: language: Target language. actor_creation_function_descriptor: The function signature for actor creation. method_name: The name of actor method. signature: The signature for the actor method. When calling Java from Python, it should be string in the form of "{length_of_args}". Returns: Function descriptor for cross language actor method call. """ if language == Language.JAVA: return JavaFunctionDescriptor( actor_creation_function_descriptor.class_name, method_name, signature, ) elif language == Language.CPP: return CppFunctionDescriptor( method_name, "PYTHON", actor_creation_function_descriptor.class_name, ) else: raise NotImplementedError("Cross language remote actor method " f"not support language {language}")
def java_actor_class(class_name): from ray.actor import ActorClass return ActorClass._ray_from_function_descriptor( Language.JAVA, JavaFunctionDescriptor(class_name, "<init>", ""), 0, # max_reconstructions, None, # num_cpus, None, # num_gpus, None, # memory, None, # object_store_memory, None) # resources,
def java_actor_class(class_name: str): """Define a Java actor class. Args: class_name: Java class name. """ from ray.actor import ActorClass return ActorClass._ray_from_function_descriptor( Language.JAVA, JavaFunctionDescriptor(class_name, "<init>", ""), {}, )
def java_function(class_name, function_name): from ray.remote_function import RemoteFunction return RemoteFunction( Language.JAVA, lambda *args, **kwargs: None, JavaFunctionDescriptor(class_name, function_name, ""), None, # num_cpus, None, # num_gpus, None, # memory, None, # object_store_memory, None, # resources, None, # num_return_vals, None, # max_calls, None) # max_retries)
def java_actor_class(class_name): from ray.actor import ActorClass return ActorClass._ray_from_function_descriptor( Language.JAVA, JavaFunctionDescriptor(class_name, "<init>", ""), max_restarts=0, max_task_retries=0, num_cpus=None, num_gpus=None, memory=None, object_store_memory=None, resources=None, accelerator_type=None, )
def java_function(class_name: str, function_name: str): """Define a Java function. Args: class_name: Java class name. function_name: Java function name. """ from ray.remote_function import RemoteFunction return RemoteFunction( Language.JAVA, lambda *args, **kwargs: None, JavaFunctionDescriptor(class_name, function_name, ""), {}, )
def java_function(class_name, function_name): from ray.remote_function import RemoteFunction return RemoteFunction( Language.JAVA, lambda *args, **kwargs: None, JavaFunctionDescriptor(class_name, function_name, ""), None, # num_cpus, None, # num_gpus, None, # memory, None, # object_store_memory, None, # resources, None, # num_return_vals, None, # max_calls, None, # max_retries placement_group=None, # TODO(ekl) set default to -1 once we support -1 as "any index" placement_group_bundle_index=0)
def java_actor_class(class_name): """Define a Java actor class. Args: class_name (str): Java class name. """ from ray.actor import ActorClass return ActorClass._ray_from_function_descriptor( Language.JAVA, JavaFunctionDescriptor(class_name, "<init>", ""), max_restarts=0, max_task_retries=0, num_cpus=None, num_gpus=None, memory=None, object_store_memory=None, resources=None, accelerator_type=None, runtime_env=None)
def get_function_descriptor_for_actor_method( language, actor_creation_function_descriptor, method_name): """Get function descriptor for cross language actor method call. Args: language: Target language. actor_creation_function_descriptor: The function signature for actor creation. method_name: The name of actor method. Returns: Function descriptor for cross language actor method call. """ if language == Language.JAVA: return JavaFunctionDescriptor( actor_creation_function_descriptor.class_name, method_name, # Currently not support call actor method with signature. "") else: raise NotImplementedError("Cross language remote actor method " f"not support language {language}")
class ChannelCreationParametersBuilder: """ wrap initial parameters needed by a streaming queue """ _java_reader_async_function_descriptor = JavaFunctionDescriptor( "io.ray.streaming.runtime.worker.JobWorker", "onReaderMessage", "([B)V") _java_reader_sync_function_descriptor = JavaFunctionDescriptor( "io.ray.streaming.runtime.worker.JobWorker", "onReaderMessageSync", "([B)[B") _java_writer_async_function_descriptor = JavaFunctionDescriptor( "io.ray.streaming.runtime.worker.JobWorker", "onWriterMessage", "([B)V") _java_writer_sync_function_descriptor = JavaFunctionDescriptor( "io.ray.streaming.runtime.worker.JobWorker", "onWriterMessageSync", "([B)[B") _python_reader_async_function_descriptor = PythonFunctionDescriptor( "ray.streaming.runtime.worker", "on_reader_message", "JobWorker") _python_reader_sync_function_descriptor = PythonFunctionDescriptor( "ray.streaming.runtime.worker", "on_reader_message_sync", "JobWorker") _python_writer_async_function_descriptor = PythonFunctionDescriptor( "ray.streaming.runtime.worker", "on_writer_message", "JobWorker") _python_writer_sync_function_descriptor = PythonFunctionDescriptor( "ray.streaming.runtime.worker", "on_writer_message_sync", "JobWorker") def get_parameters(self): return self._parameters def __init__(self): self._parameters = [] def build_input_queue_parameters(self, from_actors): self.build_parameters( from_actors, self._java_writer_async_function_descriptor, self._java_writer_sync_function_descriptor, self._python_writer_async_function_descriptor, self._python_writer_sync_function_descriptor, ) return self def build_output_queue_parameters(self, to_actors): self.build_parameters( to_actors, self._java_reader_async_function_descriptor, self._java_reader_sync_function_descriptor, self._python_reader_async_function_descriptor, self._python_reader_sync_function_descriptor, ) return self def build_parameters(self, actors, java_async_func, java_sync_func, py_async_func, py_sync_func): for handle in actors: parameter = None if handle._ray_actor_language == Language.PYTHON: parameter = _streaming.ChannelCreationParameter( handle._ray_actor_id, py_async_func, py_sync_func) else: parameter = _streaming.ChannelCreationParameter( handle._ray_actor_id, java_async_func, java_sync_func) self._parameters.append(parameter) return self @staticmethod def set_python_writer_function_descriptor(async_function, sync_function): ChannelCreationParametersBuilder._python_writer_async_function_descriptor = ( async_function) ChannelCreationParametersBuilder._python_writer_sync_function_descriptor = ( sync_function) @staticmethod def set_python_reader_function_descriptor(async_function, sync_function): ChannelCreationParametersBuilder._python_reader_async_function_descriptor = ( async_function) ChannelCreationParametersBuilder._python_reader_sync_function_descriptor = ( sync_function)