manticoresoftware / manticoresoftware/columnar

error: cannot convert '__m256i' to '__m256' in assignmen t

Open
#106 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug waiting
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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.