mirror of
https://github.com/vale981/ray
synced 2025-03-05 10:01:43 -05:00

For the purpose to provide an alternative option for running multiple actor instances in a Java worker process, and the eventual goal is to remove the original multi-worker-instances in one worker process implementation. we're proposing supporting parallel actor concept in Java. This feature enables that users could define some homogeneous parallel execution instances in an actor, and all instances hold one thread as the execution backend. ### Introduction For the following example, we define a parallel actor with 10 parallelism. The backend actor has 10 concurrency groups for the parallel executions, it also means there're 10 threads for that. We can access the instance by the instance handle, like: ```java ParallelActorHandle<A> actor = ParallelActor.actor(A::new).setParallelism(10).remote(); ParallelInstance<A> instance = actor.getInstance(/*index=*/ 2); Preconditions.checkNotNull(instance); Ray.get(instance.task(A::incr, 1000000).remote()); // print 1000000 instance = actor.getInstance(/*index=*/ 2); Preconditions.checkNotNull(instance); Ray.get(instance.task(A::incr, 2000000).remote().get()); // print 3000000 instance = actor.getInstance(/*index=*/ 3); Preconditions.checkNotNull(instance); Ray.get(instance.task(A::incr, 2000000).remote().get()); // print 2000000 ``` ### Limitation - It doesn't support concurrency group on a parallel actor yet. Co-authored-by: Kai Yang <kfstorm@outlook.com>
286 lines
8.8 KiB
XML
286 lines
8.8 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
xmlns="http://maven.apache.org/POM/4.0.0"
|
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
<modelVersion>4.0.0</modelVersion>
|
|
<groupId>io.ray</groupId>
|
|
<artifactId>ray-superpom</artifactId>
|
|
<version>2.0.0-SNAPSHOT</version>
|
|
<packaging>pom</packaging>
|
|
<name>Ray Project Parent POM</name>
|
|
<description>An open source framework that provides a simple, universal API for building distributed applications.
|
|
</description>
|
|
<url>https://github.com/ray-project/ray</url>
|
|
|
|
<licenses>
|
|
<license>
|
|
<name>The Apache License, Version 2.0</name>
|
|
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
|
|
</license>
|
|
</licenses>
|
|
|
|
<scm>
|
|
<url>https://github.com/ray-project/ray</url>
|
|
<connection>git@github.com:ray-project/ray.git</connection>
|
|
<developerConnection>scm:git:ssh://github.com:ray-project/ray.git</developerConnection>
|
|
</scm>
|
|
|
|
<developers>
|
|
<developer>
|
|
<organizationUrl>https://ray.io</organizationUrl>
|
|
</developer>
|
|
</developers>
|
|
|
|
<distributionManagement>
|
|
<snapshotRepository>
|
|
<id>ossrh</id>
|
|
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
|
|
</snapshotRepository>
|
|
<repository>
|
|
<id>ossrh</id>
|
|
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
|
|
</repository>
|
|
</distributionManagement>
|
|
|
|
<repositories>
|
|
<repository>
|
|
<id>spring</id>
|
|
<url>https://repo.spring.io/plugins-release/</url>
|
|
</repository>
|
|
<repository>
|
|
<id>central</id>
|
|
<url>https://repo1.maven.org/maven2/</url>
|
|
</repository>
|
|
</repositories>
|
|
|
|
<modules>
|
|
<module>api</module>
|
|
<module>runtime</module>
|
|
<module>serve</module>
|
|
<module>test</module>
|
|
</modules>
|
|
|
|
<properties>
|
|
<java.version>1.8</java.version>
|
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
|
<project.version>2.0.0-SNAPSHOT</project.version>
|
|
</properties>
|
|
|
|
<dependencyManagement>
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>org.testng</groupId>
|
|
<artifactId>testng</artifactId>
|
|
<version>7.3.0</version>
|
|
<exclusions>
|
|
<exclusion>
|
|
<groupId>org.yaml</groupId>
|
|
<artifactId>snakeyaml</artifactId>
|
|
</exclusion>
|
|
</exclusions>
|
|
</dependency>
|
|
</dependencies>
|
|
</dependencyManagement>
|
|
|
|
<profiles>
|
|
<profile>
|
|
<id>release</id>
|
|
<activation>
|
|
<property>
|
|
<name>release</name>
|
|
<value>true</value>
|
|
</property>
|
|
</activation>
|
|
<properties>
|
|
<output.directory>${basedir}</output.directory>
|
|
</properties>
|
|
<build>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-gpg-plugin</artifactId>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-javadoc-plugin</artifactId>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
</profile>
|
|
</profiles>
|
|
|
|
<build>
|
|
<pluginManagement>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-compiler-plugin</artifactId>
|
|
<version>3.6.1</version>
|
|
<configuration>
|
|
<source>${java.version}</source>
|
|
<target>${java.version}</target>
|
|
<encoding>${project.build.sourceEncoding}</encoding>
|
|
<compilerArgument>-parameters</compilerArgument>
|
|
<testCompilerArgument>-parameters</testCompilerArgument>
|
|
</configuration>
|
|
</plugin>
|
|
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-source-plugin</artifactId>
|
|
<version>3.0.1</version>
|
|
<executions>
|
|
<execution>
|
|
<id>attach-sources</id>
|
|
<goals>
|
|
<goal>jar</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-javadoc-plugin</artifactId>
|
|
<version>3.1.0</version>
|
|
<executions>
|
|
<execution>
|
|
<id>attach-javadocs</id>
|
|
<goals>
|
|
<goal>jar</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
<configuration>
|
|
<doclint>none</doclint>
|
|
</configuration>
|
|
</plugin>
|
|
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-dependency-plugin</artifactId>
|
|
<version>2.10</version>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-clean-plugin</artifactId>
|
|
<version>3.0.0</version>
|
|
</plugin>
|
|
|
|
<plugin>
|
|
<groupId>org.mortbay.jetty</groupId>
|
|
<artifactId>maven-jetty-plugin</artifactId>
|
|
<version>6.1.26</version>
|
|
</plugin>
|
|
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-assembly-plugin</artifactId>
|
|
<version>2.2</version>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-deploy-plugin</artifactId>
|
|
<version>2.8.2</version>
|
|
<executions>
|
|
<execution>
|
|
<id>deploy</id>
|
|
<phase>deploy</phase>
|
|
<goals>
|
|
<goal>deploy</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-checkstyle-plugin</artifactId>
|
|
<version>3.1.0</version>
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>com.puppycrawl.tools</groupId>
|
|
<artifactId>checkstyle</artifactId>
|
|
<version>8.19</version>
|
|
</dependency>
|
|
</dependencies>
|
|
<executions>
|
|
<execution>
|
|
<id>validate</id>
|
|
<phase>validate</phase>
|
|
<goals>
|
|
<goal>check</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
<configuration>
|
|
<configLocation>checkstyle.xml</configLocation>
|
|
<suppressionsLocation>checkstyle-suppressions.xml</suppressionsLocation>
|
|
<encoding>UTF-8</encoding>
|
|
<consoleOutput>true</consoleOutput>
|
|
<failsOnError>true</failsOnError>
|
|
<failOnViolation>true</failOnViolation>
|
|
<violationSeverity>warning</violationSeverity>
|
|
<outputFile>${project.build.directory}/checkstyle-errors.xml</outputFile>
|
|
<linkXRef>false</linkXRef>
|
|
</configuration>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-gpg-plugin</artifactId>
|
|
<version>1.6</version>
|
|
<executions>
|
|
<execution>
|
|
<id>sign-artifacts</id>
|
|
<goals>
|
|
<goal>sign</goal>
|
|
</goals>
|
|
<configuration>
|
|
<!-- Prevent `gpg` from using pinentry programs -->
|
|
<gpgArguments>
|
|
<arg>--pinentry-mode</arg>
|
|
<arg>loopback</arg>
|
|
</gpgArguments>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
|
|
<plugin>
|
|
<groupId>com.diffplug.spotless</groupId>
|
|
<artifactId>spotless-maven-plugin</artifactId>
|
|
<version>2.5.0</version>
|
|
<configuration>
|
|
<java>
|
|
<excludes>
|
|
<exclude>**/RayCall.java</exclude>
|
|
<exclude>**/ActorCall.java</exclude>
|
|
<exclude>**/Call.java</exclude>
|
|
<exclude>**/ActorCall.java</exclude>
|
|
<exclude>**/PyActorCall.java</exclude>
|
|
<exclude>**/runtime/generated/**/*.*</exclude>
|
|
<exclude>**/serve/generated/**/*.*</exclude>
|
|
</excludes>
|
|
<googleJavaFormat>
|
|
<version>1.7</version>
|
|
<style>GOOGLE</style>
|
|
</googleJavaFormat>
|
|
</java>
|
|
</configuration>
|
|
</plugin>
|
|
</plugins>
|
|
</pluginManagement>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-checkstyle-plugin</artifactId>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-source-plugin</artifactId>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>com.diffplug.spotless</groupId>
|
|
<artifactId>spotless-maven-plugin</artifactId>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
|
|
</project>
|