diff --git a/python/paddle/v2/fluid/tests/test_profiler.py b/python/paddle/v2/fluid/tests/test_profiler.py index bb76d13ec58a0d1b3f32acb36393311e8188909b..dfee4e2722ceaf9422bbbcb9e319985f1574c6a3 100644 --- a/python/paddle/v2/fluid/tests/test_profiler.py +++ b/python/paddle/v2/fluid/tests/test_profiler.py @@ -41,39 +41,49 @@ class TestProfiler(unittest.TestCase): exe.run(fluid.default_main_program(), feed={'data': input}) os.remove(output_file) - def test_profiler(self): - image = fluid.layers.data(name='x', shape=[784], dtype='float32') - hidden1 = fluid.layers.fc(input=image, size=128, act='relu') - hidden2 = fluid.layers.fc(input=hidden1, size=64, act='relu') - predict = fluid.layers.fc(input=hidden2, size=10, act='softmax') - label = fluid.layers.data(name='y', shape=[1], dtype='int64') - cost = fluid.layers.cross_entropy(input=predict, label=label) - avg_cost = fluid.layers.mean(x=cost) + def profiler(self, state): + if state == 'GPU' and core.is_compile_gpu(): + return + startup_program = fluid.Program() + main_program = fluid.Program() + + with fluid.program_guard(main_program, startup_program): + image = fluid.layers.data(name='x', shape=[784], dtype='float32') + hidden1 = fluid.layers.fc(input=image, size=128, act='relu') + hidden2 = fluid.layers.fc(input=hidden1, size=64, act='relu') + predict = fluid.layers.fc(input=hidden2, size=10, act='softmax') + label = fluid.layers.data(name='y', shape=[1], dtype='int64') + cost = fluid.layers.cross_entropy(input=predict, label=label) + avg_cost = fluid.layers.mean(x=cost) + accuracy = fluid.evaluator.Accuracy(input=predict, label=label) + optimizer = fluid.optimizer.Momentum(learning_rate=0.001, momentum=0.9) - opts = optimizer.minimize(avg_cost) - accuracy = fluid.evaluator.Accuracy(input=predict, label=label) + opts = optimizer.minimize(avg_cost, startup_program=startup_program) + + place = fluid.CPUPlace() if state == 'CPU' else fluid.CUDAPlace(0) + exe = fluid.Executor(place) + exe.run(startup_program) - states = ['CPU', 'GPU'] if core.is_compile_gpu() else ['CPU'] - for state in states: - place = fluid.CPUPlace() if state == 'CPU' else fluid.CUDAPlace(0) - exe = fluid.Executor(place) - exe.run(fluid.default_startup_program()) + accuracy.reset(exe) + with profiler.profiler(state, 'total') as prof: + for iter in range(10): + if iter == 2: + profiler.reset_profiler() + x = np.random.random((32, 784)).astype("float32") + y = np.random.randint(0, 10, (32, 1)).astype("int64") - accuracy.reset(exe) + outs = exe.run(main_program, + feed={'x': x, + 'y': y}, + fetch_list=[avg_cost] + accuracy.metrics) + acc = np.array(outs[1]) + pass_acc = accuracy.eval(exe) - with profiler.profiler(state, 'total') as prof: - for iter in range(10): - if iter == 2: - profiler.reset_profiler() - x = np.random.random((32, 784)).astype("float32") - y = np.random.randint(0, 10, (32, 1)).astype("int64") + def not_test_cpu_profiler(self): + self.profiler('CPU') - outs = exe.run(fluid.default_main_program(), - feed={'x': x, - 'y': y}, - fetch_list=[avg_cost] + accuracy.metrics) - acc = np.array(outs[1]) - pass_acc = accuracy.eval(exe) + def not_test_cuda_profiler(self): + self.profiler('GPU') if __name__ == '__main__':