Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion VERSION.in
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.18
1.19
9 changes: 9 additions & 0 deletions cuebot/src/main/java/com/imageworks/spcue/dao/LayerDao.java
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,15 @@ public interface LayerDao {
*/
void updateLayerMinCores(LayerInterface layer, int val);


/**
* update the dispatch order of the layer
*
* @param layer
* @param val
*/
void updateLayerDispatchOrder(LayerInterface layer, int val);

/**
* update the number of gpus the layer requires
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,15 @@ public void increaseLayerMinGpuMemory(LayerInterface layer, long kb) {
layer.getLayerId(), kb);
}

@Override
public void updateLayerDispatchOrder(LayerInterface layer, int val) {
if (val < 0) {
throw new IllegalArgumentException("Layer dispatch order must be positive.");
}
getJdbcTemplate().update("UPDATE layer SET int_dispatch_order=? WHERE pk_layer=?", val,
layer.getLayerId());
}

@Override
public void updateLayerMinCores(LayerInterface layer, int val) {
if (val < Dispatcher.CORE_POINTS_RESERVED_MIN) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,8 @@
import com.imageworks.spcue.grpc.job.LayerReorderFramesResponse;
import com.imageworks.spcue.grpc.job.LayerRetryFramesRequest;
import com.imageworks.spcue.grpc.job.LayerRetryFramesResponse;
import com.imageworks.spcue.grpc.job.LayerSetDispatchOrderRequest;
import com.imageworks.spcue.grpc.job.LayerSetDispatchOrderResponse;
import com.imageworks.spcue.grpc.job.LayerSetMaxCoresRequest;
import com.imageworks.spcue.grpc.job.LayerSetMaxCoresResponse;
import com.imageworks.spcue.grpc.job.LayerSetMinCoresRequest;
Expand Down Expand Up @@ -235,6 +237,17 @@ public void setTags(LayerSetTagsRequest request,
}
}

@Override
public void setDispatchOrder(LayerSetDispatchOrderRequest request,
StreamObserver<LayerSetDispatchOrderResponse> responseObserver) {
updateLayer(request.getLayer());
if (attemptChange(env, property, jobManager, layer, responseObserver)) {
jobManager.setLayerDispatchOrder(layer, request.getOrder());
responseObserver.onNext(LayerSetDispatchOrderResponse.newBuilder().build());
responseObserver.onCompleted();
}
}

@Override
public void setMinCores(LayerSetMinCoresRequest request,
StreamObserver<LayerSetMinCoresResponse> responseObserver) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,14 @@ public interface JobManager {
*/
List<ThreadStats> getThreadStats(LayerInterface layer);

/**
* Update the dispatch order for the given layer.
*
* @param layer
* @param order
*/
void setLayerDispatchOrder(LayerInterface layer, int order);

/**
* Update the max core value for the given layer.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -441,6 +441,11 @@ public void setLayerTag(LayerInterface layer, String tag) {
layerDao.updateLayerTags(layer, Sets.newHashSet(tag));
}

@Override
public void setLayerDispatchOrder(LayerInterface layer, int order) {
layerDao.updateLayerDispatchOrder(layer, order);
}

@Override
public void setLayerMinCores(LayerInterface layer, int coreUnits) {
layerDao.updateLayerMinCores(layer, coreUnits);
Expand Down
3 changes: 2 additions & 1 deletion cuegui/cuegui/LayerMonitorTree.py
Original file line number Diff line number Diff line change
Expand Up @@ -298,8 +298,9 @@ def contextMenuEvent(self, e):
self.__menuActions.layers().addAction(depend_menu, "markdone")
menu.addMenu(depend_menu)

menu.addSeparator()
reorder_dispatch_action = self.__menuActions.layers().addAction(menu, "reorder_dispatch")
if len(__selectedObjects) == 1:
menu.addSeparator()
try:
if int(self.app.settings.value("DisableDeeding", 0)) == 0:
if len({layer.data.range for layer in __selectedObjects}) == 1:
Expand Down
25 changes: 25 additions & 0 deletions cuegui/cuegui/MenuActions.py
Original file line number Diff line number Diff line change
Expand Up @@ -1076,6 +1076,31 @@ def dependWizard(self, rpcObjects=None):
if layers:
cuegui.DependWizard.DependWizard(self._caller, [self._getSource()], layers=layers)


reorder_dispatch_info = ["Reorder Dispatch...", None, "configure"]

def reorder_dispatch(self, rpcObjects=None):
layers = self._getOnlyLayerObjects(rpcObjects)
if not layers:
return

body = "Which dispatch order to set?"
if len(layers) > 1:
title = "Reorder layers"
for layer in layers:
body += '\n%s' % layer.data.name
else:
title = "Reorder layer %s" % layer.data.name

(order, choice) = QtWidgets.QInputDialog.getInt(self._caller, title, body, 1, 1, 100000, 1)
if not choice:
return

for layer in layers:
self.cuebotCall(layer.setDispatchOrder, "Reorder Dispatch Failed", order)

self._update()

reorder_info = ["Reorder Frames...", None, "configure"]

def reorder(self, rpcObjects=None):
Expand Down
10 changes: 10 additions & 0 deletions proto/src/job.proto
Original file line number Diff line number Diff line change
Expand Up @@ -358,6 +358,9 @@ service LayerInterface {
// Retry the Frames of this Layer
rpc RetryFrames(LayerRetryFramesRequest) returns (LayerRetryFramesResponse);

// Set the Dispatch Order of this Layer
rpc SetDispatchOrder(LayerSetDispatchOrderRequest) returns (LayerSetDispatchOrderResponse);

// The maximum number of cores to run on a given frame within this layer. Fractional core values are not allowed
// with this setting.
rpc SetMaxCores(LayerSetMaxCoresRequest) returns (LayerSetMaxCoresResponse);
Expand Down Expand Up @@ -1693,6 +1696,13 @@ message LayerRetryFramesRequest {

message LayerRetryFramesResponse {} // Empty

message LayerSetDispatchOrderRequest {
Layer layer = 1;
int32 order = 2;
}

message LayerSetDispatchOrderResponse {} // Empty

// RegisterOutputPath
message LayerRegisterOutputPathRequest {
Layer layer = 1;
Expand Down
11 changes: 11 additions & 0 deletions pycue/opencue/wrappers/layer.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,17 @@ def setTags(self, tags):
return self.stub.SetTags(job_pb2.LayerSetTagsRequest(layer=self.data, tags=tags),
timeout=Cuebot.Timeout)

def setDispatchOrder(self, order):
"""Sets the dispatch order for this layer.

:type order: int
:param order: layer dipsatch order
"""
return self.stub.SetDispatchOrder(
job_pb2.LayerSetDispatchOrderRequest(layer=self.data, order=order),
timeout=Cuebot.Timeout)


def setMaxCores(self, cores):
"""Sets the maximum number of cores that this layer requires.

Expand Down
Loading