2020-09-24 00:55:24 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-11-14 22:58:04 +00:00
|
|
|
from caffe2.python import core, workspace
|
|
|
|
|
from caffe2.python.core import CreatePythonOperator
|
|
|
|
|
import caffe2.python.hypothesis_test_util as hu
|
2020-08-08 19:10:52 +00:00
|
|
|
from hypothesis import given, settings
|
2016-11-14 22:58:04 +00:00
|
|
|
import hypothesis.strategies as st
|
|
|
|
|
import numpy as np
|
|
|
|
|
import unittest
|
|
|
|
|
|
|
|
|
|
class PythonOpTest(hu.HypothesisTestCase):
|
|
|
|
|
@given(x=hu.tensor(),
|
|
|
|
|
n=st.integers(min_value=1, max_value=20),
|
|
|
|
|
w=st.integers(min_value=1, max_value=20))
|
2021-05-25 22:53:44 +00:00
|
|
|
@settings(deadline=10000)
|
2018-10-23 23:59:30 +00:00
|
|
|
def test_simple_python_op(self, x, n, w):
|
2016-11-14 22:58:04 +00:00
|
|
|
def g(input_, output):
|
|
|
|
|
output[...] = input_
|
|
|
|
|
|
|
|
|
|
def f(inputs, outputs):
|
|
|
|
|
outputs[0].reshape(inputs[0].shape)
|
|
|
|
|
g(inputs[0].data, outputs[0].data)
|
|
|
|
|
|
|
|
|
|
ops = [CreatePythonOperator(f, ["x"], [str(i)]) for i in range(n)]
|
|
|
|
|
net = core.Net("net")
|
|
|
|
|
net.Proto().op.extend(ops)
|
|
|
|
|
net.Proto().type = "dag"
|
|
|
|
|
net.Proto().num_workers = w
|
|
|
|
|
iters = 100
|
|
|
|
|
plan = core.Plan("plan")
|
|
|
|
|
plan.AddStep(core.ExecutionStep("test-step", net, iters))
|
|
|
|
|
workspace.FeedBlob("x", x)
|
|
|
|
|
workspace.RunPlan(plan.Proto().SerializeToString())
|
|
|
|
|
for i in range(n):
|
|
|
|
|
y = workspace.FetchBlob(str(i))
|
|
|
|
|
np.testing.assert_almost_equal(x, y)
|
2016-11-23 02:31:47 +00:00
|
|
|
|
2018-01-05 01:17:32 +00:00
|
|
|
|
2016-11-23 02:31:47 +00:00
|
|
|
if __name__ == "__main__":
|
|
|
|
|
import unittest
|
|
|
|
|
unittest.main()
|