Java源码示例:org.apache.flink.api.common.resources.GPUResource
示例1
@Test
public void testMerge() throws Exception {
ResourceProfile rp1 = new ResourceProfile(1.0, 100, 100, 100, 100, 100, Collections.emptyMap());
ResourceProfile rp2 = new ResourceProfile(2.0, 200, 200, 200, 200, 200,
Collections.singletonMap("gpu", new GPUResource(2.0)));
ResourceProfile rp1MergeRp1 = new ResourceProfile(2.0, 200, 200, 200, 200, 200,
Collections.emptyMap());
ResourceProfile rp1MergeRp2 = new ResourceProfile(3.0, 300, 300, 300, 300, 300,
Collections.singletonMap("gpu", new GPUResource(2.0)));
ResourceProfile rp2MergeRp2 = new ResourceProfile(4.0, 400, 400, 400, 400, 400,
Collections.singletonMap("gpu", new GPUResource(4.0)));
assertEquals(rp1MergeRp1, rp1.merge(rp1));
assertEquals(rp1MergeRp2, rp1.merge(rp2));
assertEquals(rp1MergeRp2, rp2.merge(rp1));
assertEquals(rp2MergeRp2, rp2.merge(rp2));
assertEquals(ResourceProfile.UNKNOWN, rp1.merge(ResourceProfile.UNKNOWN));
assertEquals(ResourceProfile.UNKNOWN, ResourceProfile.UNKNOWN.merge(rp1));
assertEquals(ResourceProfile.UNKNOWN, ResourceProfile.UNKNOWN.merge(ResourceProfile.UNKNOWN));
assertEquals(ResourceProfile.ANY, rp1.merge(ResourceProfile.ANY));
assertEquals(ResourceProfile.ANY, ResourceProfile.ANY.merge(rp1));
assertEquals(ResourceProfile.ANY, ResourceProfile.ANY.merge(ResourceProfile.ANY));
}
示例2
@Test(expected = IllegalArgumentException.class)
public void testSubtractWithInfValues() {
// Does not equals to ANY since it has extended resources.
final ResourceProfile rp1 = ResourceProfile.newBuilder()
.setCpuCores(Double.MAX_VALUE)
.setTaskHeapMemoryMB(Integer.MAX_VALUE)
.setTaskOffHeapMemoryMB(Integer.MAX_VALUE)
.setManagedMemoryMB(Integer.MAX_VALUE)
.setNetworkMemoryMB(Integer.MAX_VALUE)
.addExtendedResource("gpu", new GPUResource(4.0))
.build();
final ResourceProfile rp2 = ResourceProfile.newBuilder()
.setCpuCores(2.0)
.setTaskHeapMemoryMB(200)
.setTaskOffHeapMemoryMB(200)
.setManagedMemoryMB(200)
.setNetworkMemoryMB(200)
.build();
rp2.subtract(rp1);
}
示例3
@Test
public void testMultiply() {
final int by = 3;
final ResourceProfile rp1 = ResourceProfile.newBuilder()
.setCpuCores(1.0)
.setTaskHeapMemoryMB(100)
.setTaskOffHeapMemoryMB(100)
.setNetworkMemoryMB(100)
.setManagedMemoryMB(100)
.addExtendedResource("gpu", new GPUResource(1.0))
.build();
ResourceProfile rp2 = rp1;
for (int i = 1; i < by; ++i) {
rp2 = rp2.merge(rp1);
}
assertEquals(rp2, rp1.multiply(by));
}
示例4
@Test
public void testSubtractWithInfValues() {
// Does not equals to ANY since it has extended resources.
ResourceProfile rp1 = new ResourceProfile(Double.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE,
Integer.MAX_VALUE, Collections.singletonMap("gpu", new GPUResource(4.0)));
ResourceProfile rp2 = new ResourceProfile(2.0, 200, 200, 200, 200, 200,
Collections.emptyMap());
assertEquals(rp1, rp1.subtract(rp2));
}
示例5
@Test
public void testMerge() throws Exception {
ResourceSpec rs1 = ResourceSpec.newBuilder(1.0, 100).
setGPUResource(1.1).
build();
ResourceSpec rs2 = ResourceSpec.newBuilder(1.0, 100).build();
ResourceSpec rs3 = rs1.merge(rs2);
assertEquals(new CPUResource(2.0), rs3.getCpuCores());
assertEquals(200, rs3.getTaskHeapMemory().getMebiBytes());
assertEquals(new GPUResource(1.1), rs3.getGPUResource());
ResourceSpec rs4 = rs1.merge(rs3);
assertEquals(new GPUResource(2.2), rs4.getGPUResource());
}
示例6
@Test
public void testSubtract() {
final ResourceSpec rs1 = ResourceSpec.newBuilder(1.0, 100)
.setGPUResource(1.1)
.build();
final ResourceSpec rs2 = ResourceSpec.newBuilder(0.2, 100)
.setGPUResource(0.5)
.build();
final ResourceSpec subtracted = rs1.subtract(rs2);
assertEquals(new CPUResource(0.8), subtracted.getCpuCores());
assertEquals(0, subtracted.getTaskHeapMemory().getMebiBytes());
assertEquals(new GPUResource(0.6), subtracted.getGPUResource());
}
示例7
@Test
public void testGet() {
ResourceSpec rs = ResourceSpec.newBuilder(1.0, 100).
setGPUResource(1.6).
build();
ResourceProfile rp = ResourceProfile.fromResourceSpec(rs, MemorySize.ofMebiBytes(50));
assertEquals(new CPUResource(1.0), rp.getCpuCores());
assertEquals(150, rp.getTotalMemory().getMebiBytes());
assertEquals(100, rp.getOperatorsMemory().getMebiBytes());
assertEquals(new GPUResource(1.6), rp.getExtendedResources().get(GPUResource.NAME));
}
示例8
@Test(expected = IllegalArgumentException.class)
public void testMultiplyNegative() {
final ResourceProfile rp = ResourceProfile.newBuilder()
.setCpuCores(1.0)
.setTaskHeapMemoryMB(100)
.setTaskOffHeapMemoryMB(100)
.setNetworkMemoryMB(100)
.setManagedMemoryMB(100)
.addExtendedResource("gpu", new GPUResource(1.0))
.build();
rp.multiply(-2);
}
示例9
public Builder setGPUResource(double gpus) {
this.gpuResource = new GPUResource(gpus);
return this;
}
示例10
public Builder setGPUResource(double gpus) {
this.gpuResource = new GPUResource(gpus);
return this;
}
示例11
@Test
public void testResourceCalculationOnSlotAllocatingAndReleasing() {
ResourceProfile rp1 = new ResourceProfile(1.0, 100, 100, 100, 100, 100, Collections.emptyMap());
ResourceProfile rp2 = new ResourceProfile(2.0, 200, 200, 200, 200, 200, Collections.singletonMap("gpu", new GPUResource(2.0)));
ResourceProfile rp3 = new ResourceProfile(3.0, 300, 300, 300, 300, 300, Collections.singletonMap("gpu", new GPUResource(3.0)));
final TestingAllocatedSlotActions allocatedSlotActions = new TestingAllocatedSlotActions();
SlotSharingManager slotSharingManager = new SlotSharingManager(
SLOT_SHARING_GROUP_ID,
allocatedSlotActions,
SLOT_OWNER);
SlotSharingManager.MultiTaskSlot unresolvedRootSlot = slotSharingManager.createRootSlot(
new SlotRequestId(),
new CompletableFuture<>(),
new SlotRequestId());
// Allocates the left subtree.
SlotSharingManager.MultiTaskSlot leftMultiTaskSlot =
unresolvedRootSlot.allocateMultiTaskSlot(new SlotRequestId(), new SlotSharingGroupId());
SlotSharingManager.SingleTaskSlot firstChild = leftMultiTaskSlot.allocateSingleTaskSlot(
new SlotRequestId(),
rp1,
new SlotSharingGroupId(),
Locality.LOCAL);
SlotSharingManager.SingleTaskSlot secondChild = leftMultiTaskSlot.allocateSingleTaskSlot(
new SlotRequestId(),
rp2,
new SlotSharingGroupId(),
Locality.LOCAL);
assertEquals(rp1, firstChild.getReservedResources());
assertEquals(rp2, secondChild.getReservedResources());
assertEquals(rp1.merge(rp2), leftMultiTaskSlot.getReservedResources());
assertEquals(rp1.merge(rp2), unresolvedRootSlot.getReservedResources());
// Allocates the right subtree.
SlotSharingManager.SingleTaskSlot thirdChild = unresolvedRootSlot.allocateSingleTaskSlot(
new SlotRequestId(),
rp3,
new SlotSharingGroupId(),
Locality.LOCAL);
assertEquals(rp3, thirdChild.getReservedResources());
assertEquals(rp1.merge(rp2).merge(rp3), unresolvedRootSlot.getReservedResources());
// Releases the second child in the left-side tree.
secondChild.release(new Throwable("Release for testing"));
assertEquals(rp1, leftMultiTaskSlot.getReservedResources());
assertEquals(rp1.merge(rp3), unresolvedRootSlot.getReservedResources());
// Releases the third child in the right-side tree.
thirdChild.release(new Throwable("Release for testing"));
assertEquals(rp1, unresolvedRootSlot.getReservedResources());
// Releases the first child in the left-side tree.
firstChild.release(new Throwable("Release for testing"));
assertEquals(ResourceProfile.ZERO, unresolvedRootSlot.getReservedResources());
}
示例12
public Resource getGPUResource() {
throwUnsupportedOperationExceptionIfUnknown();
return extendedResources.get(GPUResource.NAME);
}
示例13
public Builder setGPUResource(double gpus) {
this.gpuResource = new GPUResource(gpus);
return this;
}
示例14
@Test
public void testMerge() {
final ResourceProfile rp1 = ResourceProfile.newBuilder()
.setCpuCores(1.0)
.setTaskHeapMemoryMB(100)
.setTaskOffHeapMemoryMB(100)
.setManagedMemoryMB(100)
.setNetworkMemoryMB(100)
.build();
final ResourceProfile rp2 = ResourceProfile.newBuilder()
.setCpuCores(2.0)
.setTaskHeapMemoryMB(200)
.setTaskOffHeapMemoryMB(200)
.setManagedMemoryMB(200)
.setNetworkMemoryMB(200)
.addExtendedResource("gpu", new GPUResource(2.0))
.build();
final ResourceProfile rp1MergeRp1 = ResourceProfile.newBuilder()
.setCpuCores(2.0)
.setTaskHeapMemoryMB(200)
.setTaskOffHeapMemoryMB(200)
.setManagedMemoryMB(200)
.setNetworkMemoryMB(200)
.build();
final ResourceProfile rp1MergeRp2 = ResourceProfile.newBuilder()
.setCpuCores(3.0)
.setTaskHeapMemoryMB(300)
.setTaskOffHeapMemoryMB(300)
.setManagedMemoryMB(300)
.setNetworkMemoryMB(300)
.addExtendedResource("gpu", new GPUResource(2.0))
.build();
final ResourceProfile rp2MergeRp2 = ResourceProfile.newBuilder()
.setCpuCores(4.0)
.setTaskHeapMemoryMB(400)
.setTaskOffHeapMemoryMB(400)
.setManagedMemoryMB(400)
.setNetworkMemoryMB(400)
.addExtendedResource("gpu", new GPUResource(4.0))
.build();
assertEquals(rp1MergeRp1, rp1.merge(rp1));
assertEquals(rp1MergeRp2, rp1.merge(rp2));
assertEquals(rp1MergeRp2, rp2.merge(rp1));
assertEquals(rp2MergeRp2, rp2.merge(rp2));
assertEquals(ResourceProfile.UNKNOWN, rp1.merge(ResourceProfile.UNKNOWN));
assertEquals(ResourceProfile.UNKNOWN, ResourceProfile.UNKNOWN.merge(rp1));
assertEquals(ResourceProfile.UNKNOWN, ResourceProfile.UNKNOWN.merge(ResourceProfile.UNKNOWN));
assertEquals(ResourceProfile.ANY, rp1.merge(ResourceProfile.ANY));
assertEquals(ResourceProfile.ANY, ResourceProfile.ANY.merge(rp1));
assertEquals(ResourceProfile.ANY, ResourceProfile.ANY.merge(ResourceProfile.ANY));
}
示例15
@Test
public void testResourceCalculationOnSlotAllocatingAndReleasing() {
final ResourceProfile rp1 = ResourceProfile.newBuilder()
.setCpuCores(1.0)
.setTaskHeapMemoryMB(100)
.setTaskOffHeapMemoryMB(100)
.setManagedMemoryMB(100)
.setNetworkMemoryMB(100)
.build();
final ResourceProfile rp2 = ResourceProfile.newBuilder()
.setCpuCores(2.0)
.setTaskHeapMemoryMB(200)
.setTaskOffHeapMemoryMB(200)
.setManagedMemoryMB(200)
.setNetworkMemoryMB(200)
.addExtendedResource("gpu", new GPUResource(2.0))
.build();
final ResourceProfile rp3 = ResourceProfile.newBuilder()
.setCpuCores(3.0)
.setTaskHeapMemoryMB(300)
.setTaskOffHeapMemoryMB(300)
.setManagedMemoryMB(300)
.setNetworkMemoryMB(300)
.addExtendedResource("gpu", new GPUResource(3.0))
.build();
SlotSharingManager slotSharingManager = createTestingSlotSharingManager();
SlotSharingManager.MultiTaskSlot unresolvedRootSlot = slotSharingManager.createRootSlot(
new SlotRequestId(),
new CompletableFuture<>(),
new SlotRequestId());
// Allocates the left subtree.
SlotSharingManager.MultiTaskSlot leftMultiTaskSlot =
unresolvedRootSlot.allocateMultiTaskSlot(new SlotRequestId(), new SlotSharingGroupId());
SlotSharingManager.SingleTaskSlot firstChild = leftMultiTaskSlot.allocateSingleTaskSlot(
new SlotRequestId(),
rp1,
new SlotSharingGroupId(),
Locality.LOCAL);
SlotSharingManager.SingleTaskSlot secondChild = leftMultiTaskSlot.allocateSingleTaskSlot(
new SlotRequestId(),
rp2,
new SlotSharingGroupId(),
Locality.LOCAL);
assertEquals(rp1, firstChild.getReservedResources());
assertEquals(rp2, secondChild.getReservedResources());
assertEquals(rp1.merge(rp2), leftMultiTaskSlot.getReservedResources());
assertEquals(rp1.merge(rp2), unresolvedRootSlot.getReservedResources());
// Allocates the right subtree.
SlotSharingManager.SingleTaskSlot thirdChild = unresolvedRootSlot.allocateSingleTaskSlot(
new SlotRequestId(),
rp3,
new SlotSharingGroupId(),
Locality.LOCAL);
assertEquals(rp3, thirdChild.getReservedResources());
assertEquals(rp1.merge(rp2).merge(rp3), unresolvedRootSlot.getReservedResources());
// Releases the second child in the left-side tree.
secondChild.release(new Throwable("Release for testing"));
assertEquals(rp1, leftMultiTaskSlot.getReservedResources());
assertEquals(rp1.merge(rp3), unresolvedRootSlot.getReservedResources());
// Releases the third child in the right-side tree.
thirdChild.release(new Throwable("Release for testing"));
assertEquals(rp1, unresolvedRootSlot.getReservedResources());
// Releases the first child in the left-side tree.
firstChild.release(new Throwable("Release for testing"));
assertEquals(ResourceProfile.ZERO, unresolvedRootSlot.getReservedResources());
}