Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimize maybe. #5839

Merged
merged 18 commits into from Aug 13, 2021
Merged

Optimize maybe. #5839

merged 18 commits into from Aug 13, 2021

Conversation

hjchen2
Copy link
Contributor

@hjchen2 hjchen2 commented Aug 11, 2021

No description provided.

@hjchen2 hjchen2 requested a review from lixinqi August 11, 2021 10:15
oneflow/core/common/shared_or_scalar.h Outdated Show resolved Hide resolved
oneflow/core/common/shared_or_scalar.h Outdated Show resolved Hide resolved
@oneflow-ci-bot oneflow-ci-bot removed their request for review August 11, 2021 11:52
oneflow/core/common/either_ptr.h Outdated Show resolved Hide resolved
oneflow/core/common/either_ptr.h Outdated Show resolved Hide resolved
oneflow/core/common/either_ptr.h Outdated Show resolved Hide resolved
oneflow/core/common/maybe.h Show resolved Hide resolved
@PragmaTwice
Copy link
Contributor

PragmaTwice commented Aug 11, 2021

template<typename T>
class Maybe<T, typename std::enable_if<std::is_same<T, void>::value>::type> final {
  ...
  SharedOrScalar<cfg::ErrorProto, void*> error_or_scalar_;
  ^^^^^^^^^^^^^^^^^^^^^^^^^
};

这里感觉只需要一个 std::shared_ptr<cfg::ErrorProto>

@hjchen2
Copy link
Contributor Author

hjchen2 commented Aug 11, 2021

```c++
template<typename T>
class Maybe<T, typename std::enable_if<std::is_same<T, void>::value>::type> final {
  ...
  SharedOrScalar<cfg::ErrorProto, void*> error_or_scalar_;
  ^^^^^^^^^^^^^^^^^^^^^^^^^
};

这里感觉只需要一个 std::shared_ptrcfg::ErrorProto

还有一个is_error_的标记吧,这里就直接复用了SharedOrScalar,也没什么毛病,SharedOrScalar优化之后开销很低了。

@PragmaTwice
Copy link
Contributor

PragmaTwice commented Aug 11, 2021

还有一个is_error_的标记吧,这里就直接复用了SharedOrScalar,也没什么毛病,SharedOrScalar优化之后开销很低了。

感觉可以用 error 是不是 null 判断?一般来讲如果有 error 那肯定不能是空的 error。不过确实 SharedOrScalar 也可以

@oneflow-ci-bot oneflow-ci-bot removed their request for review August 11, 2021 17:01
@PragmaTwice PragmaTwice requested review from oneflow-ci-bot and removed request for oneflow-ci-bot August 12, 2021 16:00
@github-actions
Copy link
Contributor

Speed stats:
GPU Name: GeForce GTX 1080 

PyTorch resnet50 time: 139.3ms (= 6964.0ms / 50, input_shape=[16, 3, 224, 224], backward is enabled)
OneFlow resnet50 time: 127.9ms (= 6394.2ms / 50, input_shape=[16, 3, 224, 224], backward is enabled)
Relative speed: 1.09 (= 139.3ms / 127.9ms)

PyTorch resnet50 time: 82.9ms (= 4147.4ms / 50, input_shape=[8, 3, 224, 224], backward is enabled)
OneFlow resnet50 time: 74.2ms (= 3712.3ms / 50, input_shape=[8, 3, 224, 224], backward is enabled)
Relative speed: 1.12 (= 82.9ms / 74.2ms)

PyTorch resnet50 time: 54.9ms (= 2746.8ms / 50, input_shape=[4, 3, 224, 224], backward is enabled)
OneFlow resnet50 time: 47.4ms (= 2371.2ms / 50, input_shape=[4, 3, 224, 224], backward is enabled)
Relative speed: 1.16 (= 54.9ms / 47.4ms)

PyTorch resnet50 time: 48.2ms (= 2410.9ms / 50, input_shape=[2, 3, 224, 224], backward is enabled)
OneFlow resnet50 time: 39.7ms (= 1983.1ms / 50, input_shape=[2, 3, 224, 224], backward is enabled)
Relative speed: 1.22 (= 48.2ms / 39.7ms)

PyTorch resnet50 time: 42.5ms (= 2126.8ms / 50, input_shape=[1, 3, 224, 224], backward is enabled)
OneFlow resnet50 time: 37.9ms (= 1892.5ms / 50, input_shape=[1, 3, 224, 224], backward is enabled)
Relative speed: 1.12 (= 42.5ms / 37.9ms)

oneflow/core/common/either_ptr.h Show resolved Hide resolved
oneflow/core/common/shared_or_scalar.h Outdated Show resolved Hide resolved
oneflow/core/common/shared_or_scalar.h Show resolved Hide resolved
@PragmaTwice PragmaTwice requested review from oneflow-ci-bot and removed request for oneflow-ci-bot August 13, 2021 02:48
@oneflow-ci-bot oneflow-ci-bot removed their request for review August 13, 2021 03:36
@chengtbf chengtbf removed the request for review from oneflow-ci-bot August 13, 2021 04:44
@chengtbf
Copy link
Contributor

mark。暂时移除 automerge,两个小时以后加回来。

@PragmaTwice
Copy link
Contributor

PragmaTwice commented Aug 13, 2021

目前只是跑测试,没有加 automerge,到时候把 bot 的 review 加回来就好

@github-actions
Copy link
Contributor

Speed stats:
GPU Name: GeForce GTX 1080 

PyTorch resnet50 time: 141.1ms (= 7053.2ms / 50, input_shape=[16, 3, 224, 224], backward is enabled)
OneFlow resnet50 time: 128.1ms (= 6407.5ms / 50, input_shape=[16, 3, 224, 224], backward is enabled)
Relative speed: 1.10 (= 141.1ms / 128.1ms)

PyTorch resnet50 time: 83.8ms (= 4191.6ms / 50, input_shape=[8, 3, 224, 224], backward is enabled)
OneFlow resnet50 time: 74.5ms (= 3723.4ms / 50, input_shape=[8, 3, 224, 224], backward is enabled)
Relative speed: 1.13 (= 83.8ms / 74.5ms)

PyTorch resnet50 time: 58.5ms (= 2926.4ms / 50, input_shape=[4, 3, 224, 224], backward is enabled)
OneFlow resnet50 time: 48.2ms (= 2408.9ms / 50, input_shape=[4, 3, 224, 224], backward is enabled)
Relative speed: 1.21 (= 58.5ms / 48.2ms)

PyTorch resnet50 time: 48.8ms (= 2439.6ms / 50, input_shape=[2, 3, 224, 224], backward is enabled)
OneFlow resnet50 time: 41.9ms (= 2092.9ms / 50, input_shape=[2, 3, 224, 224], backward is enabled)
Relative speed: 1.17 (= 48.8ms / 41.9ms)

PyTorch resnet50 time: 43.9ms (= 2194.7ms / 50, input_shape=[1, 3, 224, 224], backward is enabled)
OneFlow resnet50 time: 37.5ms (= 1876.2ms / 50, input_shape=[1, 3, 224, 224], backward is enabled)
Relative speed: 1.17 (= 43.9ms / 37.5ms)

@oneflow-ci-bot oneflow-ci-bot removed their request for review August 13, 2021 10:16
@oneflow-ci-bot oneflow-ci-bot removed their request for review August 13, 2021 10:55
@oneflow-ci-bot oneflow-ci-bot self-requested a review August 13, 2021 10:55
@github-actions
Copy link
Contributor

Speed stats:
GPU Name: GeForce GTX 1080 

PyTorch resnet50 time: 141.1ms (= 7052.8ms / 50, input_shape=[16, 3, 224, 224], backward is enabled)
OneFlow resnet50 time: 128.2ms (= 6409.5ms / 50, input_shape=[16, 3, 224, 224], backward is enabled)
Relative speed: 1.10 (= 141.1ms / 128.2ms)

PyTorch resnet50 time: 83.9ms (= 4193.0ms / 50, input_shape=[8, 3, 224, 224], backward is enabled)
OneFlow resnet50 time: 74.4ms (= 3718.6ms / 50, input_shape=[8, 3, 224, 224], backward is enabled)
Relative speed: 1.13 (= 83.9ms / 74.4ms)

PyTorch resnet50 time: 57.9ms (= 2895.0ms / 50, input_shape=[4, 3, 224, 224], backward is enabled)
OneFlow resnet50 time: 47.6ms (= 2378.9ms / 50, input_shape=[4, 3, 224, 224], backward is enabled)
Relative speed: 1.22 (= 57.9ms / 47.6ms)

PyTorch resnet50 time: 47.5ms (= 2375.6ms / 50, input_shape=[2, 3, 224, 224], backward is enabled)
OneFlow resnet50 time: 39.9ms (= 1996.4ms / 50, input_shape=[2, 3, 224, 224], backward is enabled)
Relative speed: 1.19 (= 47.5ms / 39.9ms)

PyTorch resnet50 time: 44.1ms (= 2207.4ms / 50, input_shape=[1, 3, 224, 224], backward is enabled)
OneFlow resnet50 time: 40.6ms (= 2030.8ms / 50, input_shape=[1, 3, 224, 224], backward is enabled)
Relative speed: 1.09 (= 44.1ms / 40.6ms)

@oneflow-ci-bot oneflow-ci-bot merged commit bdb64f7 into master Aug 13, 2021
@oneflow-ci-bot oneflow-ci-bot deleted the dev_hjchen2_opt_maybe branch August 13, 2021 12:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants