RoaringBitmap / RoaringBitmap/CRoaring

Replace ROARING_DISABLE_AVX and ROARING_DISABLE_NATIVE options

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

Nobody has claimed this yet.

help wanted
Dominant language
C
Stars
1.9k
Forks
334
Avg merge
2d 5h
Merged PRs (30d)
17

Description

@andreigudkov proposed we do the following:

  • Remove entirely ROARING_DISABLE_AVX and ROARING_DISABLE_NATIVE options
  • For conditional compilation, use #ifdef AVX2
  • To select target architecture, use CMAKE_C_FLAGS

I think that this is good and simpler. However, I had a counterpoint:

If you do not specify anything, then by default AVX2 and popcnt support will be disabled on many common compilers. That's the wrong default for us IMHO. And very few people will ever bother to compile with flags unless they are specifically being told. The net result when you compile C with a generic cpu model, is that you miss a lot of optimizations that a language like Java gets thanks to JIT compilation. That's fine in many cases, as lots of software does not benefit much from advanced cpu features... but CRoaring is optimized for advanced cpu features. Disabling them by default is a shame. I think that at a minimum you would want to have the build system issue a stern warning when compiling on x64 with a generic cpu model. It is simply not going to be the right default for many people, for CRoaring.

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 by reading the linked pull request discussion and locating the current handling of ROARING_DISABLE_AVX, ROARING_DISABLE_NATIVE, AVX2, and CMAKE_C_FLAGS in the build configuration. Resolve the default CPU-feature behavior, then confirm that the agreed options and conditional-compilation approach are consistently applied and documented.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, cmake
Domain
build-system, performance
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.