Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix build with older gcc versions (pytorch#525)
Summary: Pull Request resolved: pytorch#525 circleci build fails because reduce_add is not available with gcc 5.4. In fact, it's not available with gcc < 7. The code with reduce_add was introduced in D26584575 (pytorch@953e671) ``` /root/project/src/FbgemmSparseDenseVectorInt8Avx512.cc: In function 'void fbgemm::internal::SparseDenseInt8MVAvx512(const std::unique_ptr<fbgemm::BCSRMatrix<> >&, const uint8_t*, int, int32_t*, uint8_t*, fbgemm::trRequantizationParams_t&, bool, int, int)': /root/project/src/FbgemmSparseDenseVectorInt8Avx512.cc:177:70: error: cannot convert 'const uint8_t* {aka const unsigned char*}' to 'const int*' for argument '2' to '__m512i _mm512_i32gather_epi32(__m512i, const int*, int)' __m512i b_v = _mm512_i32gather_epi32(b_idx, cur_B, block_size); ^ /root/project/src/FbgemmSparseDenseVectorInt8Avx512.cc:189:70: error: cannot convert 'const uint8_t* {aka const unsigned char*}' to 'const int*' for argument '2' to '__m512i _mm512_i32gather_epi32(__m512i, const int*, int)' __m512i b_v = _mm512_i32gather_epi32(b_idx, cur_B, block_size); ^ /root/project/src/FbgemmSparseDenseVectorInt8Avx512.cc:195:52: error: there are no arguments to '_mm512_reduce_add_epi32' that depend on a template parameter, so a declaration of '_mm512_reduce_add_epi32' must be available [-fpermissive] int32_t res_i32 = _mm512_reduce_add_epi32(res); ^ /root/project/src/FbgemmSparseDenseVectorInt8Avx512.cc:195:52: note: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated) /root/project/src/FbgemmSparseDenseVectorInt8Avx512.cc: In instantiation of 'void fbgemm::internal::SparseDenseInt8MVAvx512(const std::unique_ptr<fbgemm::BCSRMatrix<> >&, const uint8_t*, int, int32_t*, uint8_t*, fbgemm::trRequantizationParams_t&, bool, int, int) [with bool FUSE_RELU = true; fbgemm::QuantizationGranularity Q_GRAN = (fbgemm::QuantizationGranularity)0; uint8_t = unsigned char; int32_t = int]': /root/project/src/FbgemmSparseDenseVectorInt8Avx512.cc:231:1: required from here /root/project/src/FbgemmSparseDenseVectorInt8Avx512.cc:195:48: error: '_mm512_reduce_add_epi32' was not declared in this scope int32_t res_i32 = _mm512_reduce_add_epi32(res); ^ /root/project/src/FbgemmSparseDenseVectorInt8Avx512.cc: In instantiation of 'void fbgemm::internal::SparseDenseInt8MVAvx512(const std::unique_ptr<fbgemm::BCSRMatrix<> >&, const uint8_t*, int, int32_t*, uint8_t*, fbgemm::trRequantizationParams_t&, bool, int, int) [with bool FUSE_RELU = true; fbgemm::QuantizationGranularity Q_GRAN = (fbgemm::QuantizationGranularity)2; uint8_t = unsigned char; int32_t = int]': /root/project/src/FbgemmSparseDenseVectorInt8Avx512.cc:232:1: required from here /root/project/src/FbgemmSparseDenseVectorInt8Avx512.cc:195:48: error: '_mm512_reduce_add_epi32' was not declared in this scope /root/project/src/FbgemmSparseDenseVectorInt8Avx512.cc: In instantiation of 'void fbgemm::internal::SparseDenseInt8MVAvx512(const std::unique_ptr<fbgemm::BCSRMatrix<> >&, const uint8_t*, int, int32_t*, uint8_t*, fbgemm::trRequantizationParams_t&, bool, int, int) [with bool FUSE_RELU = false; fbgemm::QuantizationGranularity Q_GRAN = (fbgemm::QuantizationGranularity)0; uint8_t = unsigned char; int32_t = int]': /root/project/src/FbgemmSparseDenseVectorInt8Avx512.cc:233:1: required from here /root/project/src/FbgemmSparseDenseVectorInt8Avx512.cc:195:48: error: '_mm512_reduce_add_epi32' was not declared in this scope /root/project/src/FbgemmSparseDenseVectorInt8Avx512.cc: In instantiation of 'void fbgemm::internal::SparseDenseInt8MVAvx512(const std::unique_ptr<fbgemm::BCSRMatrix<> >&, const uint8_t*, int, int32_t*, uint8_t*, fbgemm::trRequantizationParams_t&, bool, int, int) [with bool FUSE_RELU = false; fbgemm::QuantizationGranularity Q_GRAN = (fbgemm::QuantizationGranularity)2; uint8_t = unsigned char; int32_t = int]': /root/project/src/FbgemmSparseDenseVectorInt8Avx512.cc:234:1: required from here /root/project/src/FbgemmSparseDenseVectorInt8Avx512.cc:195:48: error: '_mm512_reduce_add_epi32' was not declared in this scope CMakeFiles/fbgemm_avx512.dir/build.make:158: recipe for target 'CMakeFiles/fbgemm_avx512.dir/src/FbgemmSparseDenseVectorInt8Avx512.cc.o' failed ``` Reviewed By: jianyuh Differential Revision: D26715238 fbshipit-source-id: dfc8e04c5ca5f02aff4d3404fa1822f138be1ba6
- Loading branch information