manticoresoftware / manticoresoftware/columnar
error: cannot convert '__m256i' to '__m256' in assignmen t
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 110
- Forks
- 23
- Avg merge
- 3d 5h
- Merged PRs (30d)
- 8
Description
### Bug Description:
gcc 14.3.0
MCL 8.0.0
Maybe it just needs a typecast
```
18/32] Building CXX object columnar/accessor/CMakeFiles/accessor.dir/accessor.cpp.o
ninja: job failed: /usr/lib/ccache/bin/c++ -DUSE_AVX2 -Dknn_lib_EXPORTS -I/home/buildozer/aports/community/libmanticore-columnar/src/columnar-8.0.0/embeddin
gs -I/home/buildozer/aports/community/libmanticore-columnar/src/columnar-8.0.0/columnar -I/home/buildozer/aports/community/libmanticore-columnar/src/columna
r-8.0.0/util -I/home/buildozer/aports/community/libmanticore-columnar/src/columnar-8.0.0/common -I/home/buildozer/aports/community/libmanticore-columnar/src
/columnar-8.0.0/columnar/accessor -I/home/buildozer/aports/community/libmanticore-columnar/src/columnar-8.0.0/columnar/builder -I/home/buildozer/aports/comm
unity/libmanticore-columnar/src/columnar-8.0.0 -I/home/buildozer/aports/community/libmanticore-columnar/src/columnar-8.0.0/build/avx2/src/columnar_avx2-build/config -isystem /home/buildozer/aports/community/libmanticore-columnar/src/cache/linux-x86_64-v3/hnswlib/include -Os -fomit-frame-pointer -O2 -g -DNDEBUG
-std=gnu++17 -fPIC -D_FILE_OFFSET_BITS=64 -fno-rtti -march=x86-64-v3 -MD -MT knn/CMakeFiles/knn_lib.dir/quantizer.cpp.o -MF knn/CMakeFiles/knn_lib.dir/quant
izer.cpp.o.d -o knn/CMakeFiles/knn_lib.dir/quantizer.cpp.o -c /home/buildozer/aports/community/libmanticore-columnar/src/columnar-8.0.0/knn/quantizer.cpp
/home/buildozer/aports/community/libmanticore-columnar/src/columnar-8.0.0/knn/quantizer.cpp: In static member function 'static int knn::BinaryQuantizer_c::Q
uantize(const util::Span_T&, float, float, util::SpanResizeable_T&)':
/home/buildozer/aports/community/libmanticore-columnar/src/columnar-8.0.0/knn/quantizer.cpp:441:42: error: cannot convert '__m256i' to '__m256' in assignmen
t 441 | iVec = _mm256_cvtps_epi32(iVec);
| ~~~~~~~~~~~~~~~~~~^~~~~~
| |
| __m256i
/home/buildozer/aports/community/libmanticore-columnar/src/columnar-8.0.0/knn/quantizer.cpp:442:43: error: cannot convert '__m256' to '__m256i'
442 | iVec = _mm256_max_epi32 ( iVec, _mm256_setzero_si256() );
| ^~~~
| |
| __m256
In file included from /usr/lib/gcc/x86_64-alpine-linux-musl/14.3.0/include/immintrin.h:53,
from /usr/lib/gcc/x86_64-alpine-linux-musl/14.3.0/include/x86intrin.h:32,
from /home/buildozer/aports/community/libmanticore-columnar/src/columnar-8.0.0/util/util_private.h:30,
from /home/buildozer/aports/community/libmanticore-columnar/src/columnar-8.0.0/knn/quantizer.cpp:24:
/usr/lib/gcc/x86_64-alpine-linux-musl/14.3.0/include/avx2intrin.h:363:27: note: initializing argument 1 of '__m256i _mm256_max_epi32(__m256i, __m256i)'
363 | _mm256_max_epi32 (__m256i __A, __m256i __B)
| ~~~~~~~~^~~
/home/buildozer/aports/community/libmanticore-columnar/src/columnar-8.0.0/knn/quantizer.cpp:443:43: error: cannot convert '__m256' to '__m256i'
443 | iVec = _mm256_min_epi32 ( iVec, _mm256_set1_epi32(15) ); | ^~~~ | | | __m256 /usr/lib/gcc/x86_64-alpine-linux-musl/14.3.0/include/avx2intrin.h:405:27: note: initializing argument 1 of '__m256i _mm256_min_epi32(__m256i, __m256i)' 405 | _mm256_min_epi32 (__m256i __A, __m256i __B)
| ~~~~~~~~^~~
/home/buildozer/aports/community/libmanticore-columnar/src/columnar-8.0.0/knn/quantizer.cpp:445:55: error: cannot convert '__m256' to '__m256i'
445 | iSumVec = _mm256_add_epi32 ( iSumVec, iVec );
| ^~~~
| |
| __m256
/usr/lib/gcc/x86_64-alpine-linux-musl/14.3.0/include/avx2intrin.h:119:40: note: initializing argument 2 of '__m256i _mm256_add_epi32(__m256i, __m256i)'
119 | _mm256_add_epi32 (__m256i __A, __m256i __B)
| ~~~~~~~~^~~
/home/buildozer/aports/community/libmanticore-columnar/src/columnar-8.0.0/knn/quantizer.cpp:447:55: error: cannot convert '__m256' to '__m256i'
447 | __m128i iLow = _mm256_castsi256_si128(iVec);
| ^~~~
| |
| __m256
In file included from /usr/lib/gcc/x86_64-alpine-linux-musl/14.3.0/include/immintrin.h:43:
/usr/lib/gcc/x86_64-alpine-linux-musl/14.3.0/include/avxintrin.h:1476:33: note: initializing argument 1 of '__m128i _mm256_castsi256_si128(__m256i)'
1476 | _mm256_castsi256_si128 (__m256i __A)
| ~~~~~~~~^~~
/home/buildozer/aports/community/libmanticore-columnar/src/columnar-8.0.0/knn/quantizer.cpp:448:60: error: cannot convert '__m256' to '__m256i'
448 | __m128i iHigh = _mm256_extracti128_si256 ( iVec, 1 );
| ^~~~
| |
| __m256
/usr/lib/gcc/x86_64-alpine-linux-musl/14.3.0/include/avx2intrin.h:1096:35: note: initializing argument 1 of '__m128i _mm256_extracti128_si256(__m256i, int
)'
1096 | _mm256_extracti128_si256 (__m256i __X, const int __M)
| ~~~~~~~~^~~
```
### Manticore Search Version:
13.2.3
### Operating System Version:
Alpine Linux
### Have you tried the latest development version?
No
### Internal Checklist:
To be completed by the assignee. Check off tasks that have been completed or are not applicable.
- [ ] Implementation completed
- [ ] Tests developed
- [ ] Documentation updated
- [ ] Documentation reviewed
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in knn/quantizer.cpp at lines 441-448 and reproduce the Alpine Linux GCC 14.3.0 build failure shown in the report. Check the SIMD variable types and intrinsic calls involved in BinaryQuantizer_c::Quantize. Done means the affected target compiles successfully with AVX2 and the existing build completes without these conversion errors.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- search
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100