mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-12-24 13:28:13 +08:00
[Graph Optimization] Add dy_runnable and introduce cudagraph_switch_threshold for cudagraph mode switching (#4578)
* add new branch for sot * reorder * fix batch bug
This commit is contained in:
@@ -102,8 +102,8 @@ class GraphOptBackend:
|
||||
|
||||
def __init__(self, runnable: Callable, fd_config: FDConfig):
|
||||
self.runnable = runnable
|
||||
self.dy_runnable = self.runnable
|
||||
self.fd_config = fd_config
|
||||
|
||||
self.max_captre_size = fd_config.graph_opt_config.cudagraph_capture_sizes[0]
|
||||
if self.fd_config.graph_opt_config.graph_opt_level > 0:
|
||||
# 1. Prepare cuda graph input buffers (contain output of subgraphs)
|
||||
@@ -118,6 +118,10 @@ class GraphOptBackend:
|
||||
backend,
|
||||
).__get__(self.runnable.__self__)
|
||||
|
||||
self.cudagraph_switch_threshold = (
|
||||
1024 if self.fd_config.graph_opt_config.graph_opt_level > 0 else self.max_captre_size
|
||||
)
|
||||
|
||||
def __call__(self, **kwargs):
|
||||
if not self.fd_config.graph_opt_config.use_cudagraph:
|
||||
return self.runnable(**kwargs)
|
||||
@@ -129,8 +133,8 @@ class GraphOptBackend:
|
||||
assert kwargs["forward_meta"].ids_remove_padding is not None
|
||||
real_shape = kwargs["forward_meta"].ids_remove_padding.shape[0]
|
||||
|
||||
if (not kwargs["forward_meta"].step_use_cudagraph) or (real_shape > self.max_captre_size):
|
||||
return self.runnable(**kwargs)
|
||||
if (not kwargs["forward_meta"].step_use_cudagraph) or (real_shape > self.cudagraph_switch_threshold):
|
||||
return self.dy_runnable(**kwargs)
|
||||
else:
|
||||
return self.cudagraph_piecewise_backend.__call__(**kwargs)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user