mxnet-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dick Carter <dickjc...@apache.org>
Subject Context-specific operator parameters
Date Tue, 04 Jun 2019 00:21:19 GMT
MXNet has a number of context-specific operator parameters:  'cudnn_tune', 'cudnn_off' and
'workspace' are parameters that control the behavior of Convolution on gpu contexts with NVIDIA
gpus.  Even with these, there would be benefits to having additional parameters, e.g. to 
set Convolution algos by number, or force the compute precision to float16.  With the desire
to support multiple backends and a growing number of operators, it's time to ask the question,
"Is this scalable?"

I propose that, rather than adding a new parameter at the Python level for each new backend-specific
parameter 'knob', all context-specific parameters be swept into a single dictionary, called
e.g. 'ctx_params':

Convolution(..., ctx_params= {'cudnn_tune': 2, 'cudnn_off': False,  'workspace': 2000}, ...)

I'll stop short of working out all the details to hopefully generate more discussion.  Some
open questions:

Do all backends share the same namespace, or do we have separate 'gpu_ctx_params', 'cpu_ctx_params',
etc.?

Is there a clean extension to the general parameter parsing facility of dmlc to handle this
dictionary, and what form do these extension params take in the backend, Map<string,string>?

And while this proposes to organize and consolidate these context-specific parameters at the
Python level, we'd need to tolerate (and auto-create) documentation for these new parameters.

Other approaches welcome.

Mime
View raw message