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

PyTorch can't use latest FBGEMM because of asmjit includes in Utils.h #1227

Closed
powderluv opened this issue Jul 29, 2022 · 4 comments
Closed

Comments

@powderluv
Copy link

Rolling PyTorch with latest FBGEMM fails with https://github.com/pytorch/pytorch/runs/7562032160?check_suite_focus=true


[ 40%] Building C object confu-deps/XNNPACK/CMakeFiles/all_microkernels.dir/src/qs8-gemm/gen/4x4-minmax-fp32-scalar-imagic.c.o
In file included from /var/lib/jenkins/workspace/caffe2/quantization/server/group_norm_dnnlowp_op_avx2.cc:10:
In file included from /var/lib/jenkins/workspace/third_party/fbgemm/include/fbgemm/QuantUtils.h:6:
/var/lib/jenkins/workspace/third_party/fbgemm/include/fbgemm/./Utils.h:18:10: fatal error: 'asmjit/asmjit.h' file not found
#include <asmjit/asmjit.h>
         ^~~~~~~~~~~~~~~~~
1 error generated.
make[2]: *** [caffe2/quantization/server/CMakeFiles/caffe2_dnnlowp_avx2_ops.dir/build.make:104: caffe2/quantization/server/CMakeFiles/caffe2_dnnlowp_avx2_ops.dir/group_norm_dnnlowp_op_avx2.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
[ 40%] Building C object confu-deps/XNNPACK/CMakeFiles/XNNPACK.dir/src/qc8-igemm/gen/4x16c8-minmax-fp32-avx512skx.c.o

This seems to have been added recently with 64a5c4a in PR #1077

@jianyuh
Copy link
Member

jianyuh commented Aug 2, 2022

Thanks for reporting! It's weird to see this issue. I thought <asmjit/asmjit.h> can be always found with any asmjit commits.

I just launched 2 PRs for further testing: right before asmjit upgrade (pytorch/pytorch#82630) and right before asmjit upgrade to the latest (pytorch/pytorch#82631).

@jianyuh
Copy link
Member

jianyuh commented Aug 2, 2022

OK: it's the issue from <asmjit/asmjit.h> dependency added in Utils.h in PR #1077

I tried some workaround to spin off the simd_info struct which contains <asmjit/asmjit.h>, and it seems to work so far:
pytorch/pytorch#82637

@jianyuh jianyuh mentioned this issue Aug 2, 2022
jianyuh added a commit to jianyuh/FBGEMM that referenced this issue Aug 2, 2022
Summary:
Pull Request resolved: pytorch#1233

Extract asmjit/asmjit.h usages into a separate header file and make sure it is not called from PyTorch directly.

This Diff/PR is to unblock the FBGEMM third party upgrade in PyTorch (e.g.,  pytorch/pytorch#82396), where it consistantly reports the <asmjit/asmjit.h> imports error (pytorch#1227):

```
[ 40%] Building C object confu-deps/XNNPACK/CMakeFiles/all_microkernels.dir/src/qs8-gemm/gen/4x4-minmax-fp32-scalar-imagic.c.o
In file included from /var/lib/jenkins/workspace/caffe2/quantization/server/group_norm_dnnlowp_op_avx2.cc:10:
In file included from /var/lib/jenkins/workspace/third_party/fbgemm/include/fbgemm/QuantUtils.h:6:
/var/lib/jenkins/workspace/third_party/fbgemm/include/fbgemm/./Utils.h:18:10: fatal error: 'asmjit/asmjit.h' file not found
#include <asmjit/asmjit.h>
         ^~~~~~~~~~~~~~~~~
1 error generated.
make[2]: *** [caffe2/quantization/server/CMakeFiles/caffe2_dnnlowp_avx2_ops.dir/build.make:104: caffe2/quantization/server/CMakeFiles/caffe2_dnnlowp_avx2_ops.dir/group_norm_dnnlowp_op_avx2.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
[ 40%] Building C object confu-deps/XNNPACK/CMakeFiles/XNNPACK.dir/src/qc8-igemm/gen/4x16c8-minmax-fp32-avx512skx.c.o

```

This is because we don't have the direct asmjit dependency in PyTorch. The workaround is to spin off Utils.h to SimdUtils.h where the original Utils.h included in PyTorch files doesn't have asmjit.h dependency any longer.

Differential Revision: D38341763

fbshipit-source-id: 042619e4368f249a74ac9d3d1e05ecd9bd5087e1
facebook-github-bot pushed a commit that referenced this issue Aug 2, 2022
Summary:
Pull Request resolved: #1233

Extract asmjit/asmjit.h usages into a separate header file and make sure it is not called from PyTorch directly.

This Diff/PR is to unblock the FBGEMM third party upgrade in PyTorch (e.g.,  pytorch/pytorch#82396), where it consistantly reports the <asmjit/asmjit.h> imports error (#1227):

```
[ 40%] Building C object confu-deps/XNNPACK/CMakeFiles/all_microkernels.dir/src/qs8-gemm/gen/4x4-minmax-fp32-scalar-imagic.c.o
In file included from /var/lib/jenkins/workspace/caffe2/quantization/server/group_norm_dnnlowp_op_avx2.cc:10:
In file included from /var/lib/jenkins/workspace/third_party/fbgemm/include/fbgemm/QuantUtils.h:6:
/var/lib/jenkins/workspace/third_party/fbgemm/include/fbgemm/./Utils.h:18:10: fatal error: 'asmjit/asmjit.h' file not found
#include <asmjit/asmjit.h>
         ^~~~~~~~~~~~~~~~~
1 error generated.
make[2]: *** [caffe2/quantization/server/CMakeFiles/caffe2_dnnlowp_avx2_ops.dir/build.make:104: caffe2/quantization/server/CMakeFiles/caffe2_dnnlowp_avx2_ops.dir/group_norm_dnnlowp_op_avx2.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
[ 40%] Building C object confu-deps/XNNPACK/CMakeFiles/XNNPACK.dir/src/qc8-igemm/gen/4x16c8-minmax-fp32-avx512skx.c.o

```

This is because we don't have the direct asmjit dependency in PyTorch. The workaround is to spin off Utils.h to SimdUtils.h where the original Utils.h included in PyTorch files doesn't have asmjit.h dependency any longer.

Reviewed By: jasonjk-park, jiyuanzFB

Differential Revision: D38341763

fbshipit-source-id: 77bf92206d350b220dfe13d7a5488713b33e7b47
@jianyuh
Copy link
Member

jianyuh commented Aug 3, 2022

#1233 is landed. Closing this issue.

@jianyuh jianyuh closed this as completed Aug 3, 2022
@jianyuh
Copy link
Member

jianyuh commented Aug 3, 2022

pytorch/pytorch#82676 in PyTorch is merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants