summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2018-06-05 04:45:14 +0200
committerJules Laplace <julescarbon@gmail.com>2018-06-05 04:45:14 +0200
commit0db903f139aa2eb91308f99bb3be3619c2d9b217 (patch)
tree08f1aba1cc6b6f85f58517b4d15a2bc381e27e18 /app
parent55c1e265e8b274ee73c6e1b9e9a59cb44db7fe84 (diff)
woooo smoother
Diffstat (limited to 'app')
-rw-r--r--app/client/modules/samplernn/samplernn.datasets.js20
-rw-r--r--app/client/modules/samplernn/samplernn.show.js14
-rw-r--r--app/client/modules/samplernn/samplernn.tasks.js6
-rw-r--r--app/client/system/system.reducer.js5
-rw-r--r--app/server/bridge.js1
5 files changed, 35 insertions, 11 deletions
diff --git a/app/client/modules/samplernn/samplernn.datasets.js b/app/client/modules/samplernn/samplernn.datasets.js
index 50e7d59..3d4219e 100644
--- a/app/client/modules/samplernn/samplernn.datasets.js
+++ b/app/client/modules/samplernn/samplernn.datasets.js
@@ -92,11 +92,19 @@ class SampleRNNDatasets extends Component {
const { samplernn, folder, runner, onPickDataset, onPickFile, datasetActions } = this.props
const { datasetLookup, fileLookup } = samplernn.data
const { mapFn, sortFn } = util.sort.orderByFn('date desc')
+ const moduleOnCPU = runner && runner.cpu.task && runner.cpu.task.module === samplernnModule.name
const moduleOnGPU = runner && runner.gpu.task && runner.gpu.task.module === samplernnModule.name
const datasets = folder.datasets.map(name => datasetLookup[name]).map(mapFn).sort(sortFn).map(pair => {
const dataset = pair[1]
- const isProcessing = moduleOnGPU && runner.gpu.task.dataset === dataset
- const status = isProcessing ? util.gerund(runner.gpu.task.activity) : ''
+ let status = ''
+ let isProcessing = false, isFetching = false
+ if (moduleOnGPU && runner.gpu.task.dataset === dataset) {
+ status = util.gerund(runner.gpu.task.activity)
+ isProcessing = true
+ } else if (moduleOnCPU && runner.cpu.task.activity === 'fetch' && runner.cpu.task.opt.file_id === dataset.input[0]) {
+ isProcessing = true
+ isFetching = true
+ }
return (
<div key={dataset.name} className='row dataset' onClick={() => onPickDataset && onPickDataset(dataset)}>
{this.props.beforeRow && this.props.beforeRow(dataset)}
@@ -114,9 +122,13 @@ class SampleRNNDatasets extends Component {
/>
}
</div>
- <div className={'col quiet ' + (dataset.isBuilt ? 'built' : 'not_built')}>
+ <div className={[
+ 'col', 'quiet',
+ (dataset.isBuilt ? 'built' : 'not_built'),
+ (isProcessing ? 'processing': 'not_processing')
+ ].join(' ')}>
+ {this.props.datasetActions && this.props.datasetActions(dataset, isFetching, isProcessing)}
{status}
- {this.props.datasetActions && this.props.datasetActions(dataset)}
</div>
<div className='col checkpoint'>
{!!dataset.checkpoints.length &&
diff --git a/app/client/modules/samplernn/samplernn.show.js b/app/client/modules/samplernn/samplernn.show.js
index 8b6f357..1237d9b 100644
--- a/app/client/modules/samplernn/samplernn.show.js
+++ b/app/client/modules/samplernn/samplernn.show.js
@@ -21,6 +21,10 @@ const samplernnModule = {
}
class SampleRNNShow extends Component {
+ constructor(props){
+ super(props)
+ this.datasetActions = this.datasetActions.bind(this)
+ }
render(){
const { samplernn, match, history } = this.props
const { folderLookup } = (samplernn.data || {})
@@ -51,12 +55,12 @@ class SampleRNNShow extends Component {
console.log('picked a file', file)
this.handlePick(file)
}}
- datasetActions={(dataset) => this.datasetActions(dataset)}
+ datasetActions={this.datasetActions}
/>
</div>
)
}
- datasetActions(dataset){
+ datasetActions(dataset, isFetching=false, isProcessing=false){
const { samplernn, remote } = this.props
const { fileLookup } = samplernn.data
const input = fileLookup[dataset.input[0]]
@@ -76,8 +80,12 @@ class SampleRNNShow extends Component {
{'fetched '}
<span class='link' onClick={() => remote.clear_cache_task(dataset)}>rm</span>
</div>
+ : isFetching
+ ? <div class='subtext'>
+ {'fetching'}
+ </div>
: <div class='subtext'>
- <span class='link' onClick={() => remote.fetch_task(input.url)}>fetch</span>
+ <span class='link' onClick={() => remote.fetch_task(input.url, input.id, dataset.name)}>fetch</span>
</div>
}
</div>
diff --git a/app/client/modules/samplernn/samplernn.tasks.js b/app/client/modules/samplernn/samplernn.tasks.js
index 28354d7..21939dd 100644
--- a/app/client/modules/samplernn/samplernn.tasks.js
+++ b/app/client/modules/samplernn/samplernn.tasks.js
@@ -20,14 +20,16 @@ export const train_task = (dataset, epochs=1) => dispatch => {
console.log(task)
return actions.queue.add_task(task)
}
-export const fetch_task = (url) => dispatch => {
+export const fetch_task = (url, file_id, dataset) => dispatch => {
if (! url) return console.log('input file inaccessible (no url)')
const task = {
module: 'samplernn',
activity: 'fetch',
dataset: name,
opt: {
- url: url,
+ url,
+ file_id,
+ dataset,
}
}
return actions.queue.add_task(task)
diff --git a/app/client/system/system.reducer.js b/app/client/system/system.reducer.js
index 132923b..8378bf3 100644
--- a/app/client/system/system.reducer.js
+++ b/app/client/system/system.reducer.js
@@ -159,6 +159,7 @@ const systemReducer = (state = systemInitialState, action) => {
}
}
case types.task.task_begin:
+ console.log('task begin', action.task, action.task.processor)
return {
...state,
runner: {
@@ -175,10 +176,10 @@ const systemReducer = (state = systemInitialState, action) => {
stderr: "",
}
case types.task.task_finish:
- if (action.task === 'cpu' || state.runner.cpu.task.uuid === action.task.uuid) {
+ if (action.task === 'cpu' || (state.runner.cpu.task && action.task && state.runner.cpu.task.uuid === action.task.uuid)) {
processor = 'cpu'
}
- else if (action.task === 'gpu' || state.runner.gpu.task.uuid === action.task.uuid) {
+ else if (action.task === 'gpu' || (state.runner.cpu.task && action.task && state.runner.gpu.task.uuid === action.task.uuid)) {
processor = 'gpu'
} else {
processor = null
diff --git a/app/server/bridge.js b/app/server/bridge.js
index 8d0222c..b779f1e 100644
--- a/app/server/bridge.js
+++ b/app/server/bridge.js
@@ -56,6 +56,7 @@ function bind_relay(socket) {
delete data.task.updated_at
db.models.task.update(data.task.id, data.task)
.then(task => {
+ task.processor = data.task.processor
data.task = task
client.emit('task_res', data)
})