Skip to content

Commit 2cc3b1f

Browse files
Let's try using the batch endpoint for RF introperability, bad decision
1 parent 6050f6a commit 2cc3b1f

File tree

2 files changed

+110
-10
lines changed

2 files changed

+110
-10
lines changed

tidy3d/plugins/smatrix/web/api/webapi.py

Lines changed: 59 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -193,30 +193,34 @@ def run(
193193
batch = create_batch(
194194
modeler=simulation,
195195
folder_name=folder_name,
196+
solver_version=solver_version
196197
# parent_tasks=[task_id]
197198
)
198199
batch.run()
200+
# postprocess(
201+
# batch_id,
202+
# solver_version=solver_version,
203+
# worker_group=worker_group,
204+
# pay_type=pay_type,
205+
# priority=priority,
206+
# ) # TODO FIX
207+
199208
from ..core.http_util import http
200209
resp = http.post(
201210
f"tidy3d/projects/{batch_id}/postprocess",
202211
{
203-
"batchType": "RF_SWEEP"
212+
"batchType": "RF_SWEEP",
213+
"solverVersion": "dario-rf-0.0.0"
204214
},
205215
)
206216
print(resp)
207-
# start(
208-
# task_id,
209-
# solver_version=solver_version,
210-
# worker_group=worker_group,
211-
# pay_type=pay_type,
212-
# priority=priority,
213-
# )
214217
# monitor(task_id, verbose=verbose)
215218
# data = load(
216219
# task_id=task_id, path=path, verbose=verbose, progress_callback=progress_callback_download
217220
# )
218221
# if isinstance(simulation, ModeSolver):
219222
# simulation._patch_data(data=data)
223+
# print(resp)
220224
# return data
221225
else:
222226
task_id = upload(
@@ -470,6 +474,7 @@ def start(
470474
worker_group: Optional[str] = None,
471475
pay_type: Union[PayType, str] = PayType.AUTO,
472476
priority: Optional[int] = None,
477+
resource_id: Optional[str] = None,
473478
) -> None:
474479
"""Start running the simulation associated with task.
475480
@@ -490,9 +495,12 @@ def start(
490495
----
491496
To monitor progress, can call :meth:`monitor` after starting simulation.
492497
"""
498+
if not resource_id:
499+
resource_id = task_id
500+
493501
if priority is not None and (priority < 1 or priority > 10):
494502
raise ValueError("Priority must be between '1' and '10' if specified.")
495-
task = SimulationTask.get(task_id)
503+
task = SimulationTask.get(resource_id)
496504
if not task:
497505
raise ValueError("Task not found.")
498506
task.submit(
@@ -502,6 +510,48 @@ def start(
502510
priority=priority,
503511
)
504512

513+
@wait_for_connection
514+
def postprocess(
515+
task_id: TaskId,
516+
solver_version: Optional[str] = None,
517+
worker_group: Optional[str] = None,
518+
pay_type: Union[PayType, str] = PayType.AUTO,
519+
priority: Optional[int] = None,
520+
resource_id: Optional[str] = None,
521+
) -> None:
522+
"""Start running the simulation associated with task.
523+
524+
Parameters
525+
----------
526+
527+
task_id : str
528+
Unique identifier of task on server. Returned by :meth:`upload`.
529+
solver_version: str = None
530+
target solver version.
531+
worker_group: str = None
532+
worker group
533+
pay_type: Union[PayType, str] = PayType.AUTO
534+
Which method to pay the simulation
535+
priority: int = None
536+
Task priority for vGPU queue (1=lowest, 10=highest).
537+
Note
538+
----
539+
To monitor progress, can call :meth:`monitor` after starting simulation.
540+
"""
541+
if not resource_id:
542+
resource_id = task_id
543+
544+
if priority is not None and (priority < 1 or priority > 10):
545+
raise ValueError("Priority must be between '1' and '10' if specified.")
546+
task = SimulationTask.get(resource_id)
547+
if not task:
548+
raise ValueError("Task not found.")
549+
task.postprocess(
550+
solver_version=solver_version,
551+
worker_group=worker_group,
552+
pay_type=pay_type,
553+
priority=priority,
554+
)
505555

506556
@wait_for_connection
507557
def get_run_info(task_id: TaskId) -> tuple[Optional[float], Optional[float]]:

tidy3d/plugins/smatrix/web/core/task_core.py

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -530,11 +530,61 @@ def submit(
530530
else:
531531
resource_id = self.task_id
532532

533+
http.post(
534+
f"tidy3d/tasks/{resource_id}/submit",
535+
{
536+
"solverVersion": solver_version,
537+
"workerGroup": worker_group,
538+
"protocolVersion": protocol_version,
539+
"enableCaching": Env.current.enable_caching,
540+
"payType": pay_type.value,
541+
"priority": priority,
542+
},
543+
)
533544

545+
def postprocess(
546+
self,
547+
solver_version: Optional[str] = None,
548+
worker_group: Optional[str] = None,
549+
pay_type: Union[PayType, str] = PayType.AUTO,
550+
priority: Optional[int] = None,
551+
):
552+
"""Kick off this task.
553+
554+
It will be uploaded to server before
555+
starting the task. Otherwise, this method assumes that the Simulation has been uploaded by
556+
the upload_file function, so the task will be kicked off directly.
557+
558+
Parameters
559+
----------
560+
solver_version: str = None
561+
target solver version.
562+
worker_group: str = None
563+
worker group
564+
pay_type: Union[PayType, str] = PayType.AUTO
565+
Which method to pay the simulation.
566+
priority: int = None
567+
Task priority for vGPU queue (1=lowest, 10=highest).
568+
"""
569+
pay_type = PayType(pay_type) if not isinstance(pay_type, PayType) else pay_type
570+
571+
if solver_version:
572+
protocol_version = None
573+
else:
574+
protocol_version = http_util.get_version()
575+
576+
if (not self.task_id) and (not self.batch_id):
577+
raise WebError("Expected fields 'task_id' or 'batch_id' are unset.")
578+
579+
if (self.task_type == "RF") and (self.task_id is None):
580+
resource_id = self.batch_id
581+
else:
582+
resource_id = self.task_id
534583

535584
http.post(
536-
f"tidy3d/tasks/{resource_id}/submit",
585+
f"tidy3d/projects/{resource_id}/postprocess",
537586
{
587+
"batchType": "RF_SWEEP",
538588
"solverVersion": solver_version,
539589
"workerGroup": worker_group,
540590
"protocolVersion": protocol_version,

0 commit comments

Comments
 (0)