【发布时间】:2019-12-07 07:00:26
【问题描述】:
这个问题的后续:Mxnet - slow array copy to GPU
问题:mxnet GPU 初始化大约需要 20 秒。我该如何解决?
我有以下代码:
import mxnet as mx
import mxnet.ndarray as nd
from mxnet import profiler
profiler.set_config(aggregate_stats=True)
ctx = mx.gpu()
profiler.set_state('run')
nd.random.uniform(-1, 1, shape=(1, 1), ctx=ctx)
nd.waitall()
profiler.set_state('stop')
print(profiler.dumps(reset=True))
这是分析器的输出:
Device Storage
=================
Name Total Count Time (ms) Min Time (ms) Max Time (ms) Avg Time (ms)
---- ----------- --------- ------------- ------------- -------------
Memory: gpu/0 3 0.0080 0.0040 0.0120 0.0040
MXNET_C_API
=================
Name Total Count Time (ms) Min Time (ms) Max Time (ms) Avg Time (ms)
---- ----------- --------- ------------- ------------- -------------
MXNDArrayWaitAll 1 2.0640 2.0640 2.0640 2.0640
MXNDArrayFree 1 0.0010 0.0010 0.0010 0.0010
MXImperativeInvokeEx 1 22197.0469 22197.0469 22197.0469 22197.0469
MXNet C API Concurrency 6 0.0000 0.0000 0.0010 0.0005
MXNet C API Calls 3 0.0030 0.0010 0.0030 0.0010
operator
=================
Name Total Count Time (ms) Min Time (ms) Max Time (ms) Avg Time (ms)
---- ----------- --------- ------------- ------------- -------------
_random_uniform 2 1.6280 0.8130 0.8150 0.8140
DeleteVariable 2 0.0130 0.0060 0.0070 0.0065
ResourceParallelRandomSetSeed 10 17.9840 0.4670 5.7260 1.7984
所以,需要 22 秒。这之后的任何操作都会非常快,但是第一次 GPU 操作需要 22 秒(无论我使用什么操作)。所以很可能初始化需要很长时间。我该如何解决?
我试过这种方法https://github.com/apache/incubator-mxnet/issues/3239:
export CUDA_CACHE_MAXSIZE=2147483647
export CUDA_CACHE_DISABLE=0
export CUDA_CACHE_PATH="my_home_path/.nv/ComputeCache"
但它不起作用。
此页面:https://github.com/apache/incubator-mxnet/issues/13040 也提到了SM_70 arch.wait update,但我无法理解它的含义。
据我了解,问题在于必须将某些库加载到 GPU,并且必须完成。想法是缓存这些库(这样就没有第二次加载了),但我不知道该怎么做。
【问题讨论】:
标签: python performance gpu mxnet