diff options
Diffstat (limited to 'app/relay')
| -rw-r--r-- | app/relay/modules/test.js | 6 | ||||
| -rw-r--r-- | app/relay/queue.js | 7 | ||||
| -rw-r--r-- | app/relay/remote.js | 12 | ||||
| -rw-r--r-- | app/relay/runner.js | 8 |
4 files changed, 28 insertions, 5 deletions
diff --git a/app/relay/modules/test.js b/app/relay/modules/test.js index 57a324a..8876f7c 100644 --- a/app/relay/modules/test.js +++ b/app/relay/modules/test.js @@ -7,6 +7,12 @@ const cpu = { type: 'perl', script: 'test.pl', params: '--train', + listen: (task, line, i) => { + if ( (parseInt(line) % 10) === 0) { + return { type: 'epoch', task, epoch: (i/10)|0 } + } + return null + } } const gpu = { type: 'python', diff --git a/app/relay/queue.js b/app/relay/queue.js index 9f9e821..6c65e06 100644 --- a/app/relay/queue.js +++ b/app/relay/queue.js @@ -1,8 +1,10 @@ +// get the processor that uses the task and give it its own queue! + let queue = [] -let active = true +let active = false let status = 'waiting' -export const is_active = () => active +export const is_active = () => active && queue.length export const get_status = () => status export const activate = () => { active = true @@ -15,3 +17,4 @@ export const deactivate = reason => { export const add_task = task => queue.push(task) export const remove_task = task => queue = queue.filter(t => t.id !== task.id) export const get_next_task = () => queue.shift() +export const list_tasks = () => queue diff --git a/app/relay/remote.js b/app/relay/remote.js index 6fee366..935298a 100644 --- a/app/relay/remote.js +++ b/app/relay/remote.js @@ -51,19 +51,25 @@ remote.on('task', (data) => { break case 'add': queue.add_task(data.task) - queue.activate() - runner.start_queue() + if (! queue.is_active()) { + queue.activate() + runner.start_queue() + } break case 'remove': queue.remove_task(data.task) break case 'start_queue': - queue.activate() + if (! queue.is_active()) { + queue.activate() + runner.start_queue() + } break case 'stop_queue': queue.deactivate('user') break case 'list': + response = { type: 'list', tasks: queue.list_tasks() } break case 'set_priority': break diff --git a/app/relay/runner.js b/app/relay/runner.js index 4b5522d..734e3ea 100644 --- a/app/relay/runner.js +++ b/app/relay/runner.js @@ -189,11 +189,14 @@ export function run_task(task, preempt=false, watch=false){ const module = modules[task.module] if (! module) return { type: 'error', error: "No such module: " + task.module } const activity = module.activities[task.activity] +console.log(task) + if (! activity) return { type: 'error', error: 'No such activity in module: ' + task.module + ' ' + task.activity } return run_task_with_activity(task, module, activity, preempt, watch) } export function run_task_with_activity(task, module, activity, preempt=false, watch=false) { const { interpreter, params } = build_params(module, activity, task) +console.log(activity) if (! interpreter) return { type: 'error', error: "No such interpreter: " + activity.interpreter } if (interpreter.gpu && state.current_gpu_task.status !== 'IDLE') { @@ -298,8 +301,13 @@ export function run_task_with_activity(task, module, activity, preempt=false, wa return task } +export function start_queue(){ + run_next_task() +} + export function run_next_task(){ if (queue.is_active()) { + console.log(queue.list_tasks()) const task = queue.get_next_task() return run_task(task) } |
