Feat: Renderbucket size is now sent by the server

This commit is contained in:
Sheepit Renderfarm
2021-12-03 23:38:57 +00:00
parent 20a1ccf07c
commit d137dc924b
12 changed files with 7 additions and 223 deletions

View File

@@ -20,7 +20,6 @@
package com.sheepit.client.hardware.cpu;
public class CPU {
public static final int MIN_RENDERBUCKET_SIZE = 32;
public static final int MIN_CORES = Runtime.getRuntime().availableProcessors() > 1 ? 2 : 1;
private String name;
private String model;

View File

@@ -29,7 +29,6 @@ import com.sheepit.client.os.OS;
import com.sheepit.client.os.Windows;
public class GPU {
final public static int MIN_RENDERBUCKET_SIZE = 32;
public static List<GPUDevice> devices = null;
public static boolean generate() {

View File

@@ -26,7 +26,6 @@ public class GPUDevice {
private String type;
private String model;
private long memory; // in B
private int renderBucketSize;
private String id;
@@ -37,7 +36,6 @@ public class GPUDevice {
this.model = model;
this.memory = ram;
this.id = id;
this.renderBucketSize = GPU.MIN_RENDERBUCKET_SIZE;
}
public GPUDevice(String type, String model, long ram, String id, String oldId) {
@@ -85,51 +83,7 @@ public class GPUDevice {
this.oldId = id;
}
public int getRenderbucketSize() {
return this.renderBucketSize;
}
public int getRecommendedBucketSize() {
this.setRenderbucketSize(null);
return this.renderBucketSize;
}
public void setRenderbucketSize(Integer proposedRenderbucketSize) {
GPULister gpu;
if (type.equals("CUDA")) {
gpu = new Nvidia();
}
else if (type.equals("OPENCL")) {
gpu = new OpenCL();
}
else {
// If execution takes this branch is because we weren't able to detect the proper GPU technology or
// because is a new one (different from CUDA and OPENCL). In that case, move into the safest position
// of 32x32 pixel tile sizes
System.out.println("GPUDevice::setRenderbucketSize Unable to detect GPU technology. Render bucket size set to 32x32 pixels");
this.renderBucketSize = GPU.MIN_RENDERBUCKET_SIZE;
return;
}
int renderBucketSize = GPU.MIN_RENDERBUCKET_SIZE;
if (proposedRenderbucketSize == null) {
renderBucketSize = gpu.getRecommendedRenderBucketSize(getMemory());
}
else if (proposedRenderbucketSize >= GPU.MIN_RENDERBUCKET_SIZE) {
if (proposedRenderbucketSize <= gpu.getMaximumRenderBucketSize(getMemory())) {
renderBucketSize = proposedRenderbucketSize;
}
else {
renderBucketSize = gpu.getRecommendedRenderBucketSize(getMemory());
}
}
this.renderBucketSize = renderBucketSize;
}
@Override public String toString() {
return "GPUDevice [type=" + type + ", model='" + model + "', memory=" + memory + ", id=" + id + ", renderbucketSize=" + renderBucketSize + "]";
return "GPUDevice [type=" + type + ", model='" + model + "', memory=" + memory + ", id=" + id + "]";
}
}

View File

@@ -4,8 +4,4 @@ import java.util.List;
public interface GPULister {
public abstract List<GPUDevice> getGpus();
public abstract int getRecommendedRenderBucketSize(long memory);
public abstract int getMaximumRenderBucketSize(long memory);
}

View File

@@ -124,13 +124,4 @@ public class Nvidia implements GPULister {
return devices;
}
@Override public int getRecommendedRenderBucketSize(long memory) {
// Optimal CUDA-based GPUs Renderbucket algorithm
return (memory > 1073741824L) ? 256 : 128;
}
@Override public int getMaximumRenderBucketSize(long memory) {
return (memory > 1073741824L) ? 512 : 128;
}
}

View File

@@ -122,15 +122,6 @@ public class OpenCL implements GPULister {
return available_devices;
}
@Override public int getRecommendedRenderBucketSize(long memory) {
// Optimal CUDA-based GPUs Renderbucket algorithm
return (memory > 1073741824L) ? 256 : 128;
}
@Override public int getMaximumRenderBucketSize(long memory) {
return (memory > 1073741824L) ? 2048 : 128;
}
private static String getInfodeviceString(OpenCLLib lib, CLDeviceId.ByReference device, int type) {
byte name[] = new byte[256];