summaryrefslogtreecommitdiff
path: root/app/relay/runner.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/relay/runner.js')
-rw-r--r--app/relay/runner.js35
1 files changed, 29 insertions, 6 deletions
diff --git a/app/relay/runner.js b/app/relay/runner.js
index 9fc2a38..fbc7ad7 100644
--- a/app/relay/runner.js
+++ b/app/relay/runner.js
@@ -6,15 +6,11 @@ import interpreters from './interpreters'
import modules from './modules'
import { kill } from 'tree-kill'
-var state = {
+export const state = {
current_cpu_task: null,
current_gpu_task: null,
}
-export function status(){
- return {}
-}
-
export function get_current_cpu_task(){
return state.current_cpu_task
}
@@ -23,6 +19,18 @@ export function get_current_gpu_task(){
return state.current_gpu_task
}
+export function get_current_task(processor) {
+ if (processor === 'cpu') {
+ return state.current_cpu_task
+ } else {
+ return state.current_gpu_task
+ }
+}
+
+export function status () {
+ return state
+}
+
export function build_params(module, task) {
const activity = module.activities[task.activity]
const interpreter = interpreters[activity.type]
@@ -65,10 +73,25 @@ export function run_system_command(cmd, cb) {
}
}
-export function run_task(task){
+export function run_task(task, preempt){
const module = modules[task.module]
if (! module) throw new Error("No such module")
const { activity, interpreter, params } = build_params(module, task)
+
+ if (activity.cpu && state.current_cpu_task) {
+ if (preempt) {
+ console.log('preempting currently running GPU task')
+ } else {
+ return { type: 'error', error: 'task already running on cpu' }
+ }
+ } else {
+ if (preempt) {
+ console.log('preempting currently running CPU task')
+ } else {
+ return { type: 'error', error: 'task already running on cpu' }
+ }
+ }
+
console.log('running task', activity.name)
console.log(activity.interpreter, activity.script, params)
const subprocess = spawn(activity.interpreter, params)