Skip to content
This repository was archived by the owner on May 9, 2024. It is now read-only.

Commit 0543443

Browse files
committed
Move vectored implementation function to be local for the resolver
1 parent 2d2989f commit 0543443

File tree

2 files changed

+73
-37
lines changed

2 files changed

+73
-37
lines changed

omniscidb/ResultSet/BitmapGenerators.cpp

Lines changed: 71 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,14 @@
1010

1111
#include <cstring>
1212

13-
#ifdef __AVX512F__
14-
size_t __attribute__((target("avx512bw", "avx512f"), optimize("no-tree-vectorize")))
15-
gen_null_bitmap_8(uint8_t* dst, const uint8_t* src, size_t size, const uint8_t null_val) {
13+
#include <iostream>
14+
15+
#ifndef _WIN32
16+
size_t __attribute__((target("avx512f", "avx512bw"), optimize("no-tree-vectorize")))
17+
gen_null_bitmap_8_impl(uint8_t* dst,
18+
const uint8_t* src,
19+
size_t size,
20+
const uint8_t null_val) {
1621
__m512i nulls_mask = _mm512_set1_epi8(reinterpret_cast<const int8_t&>(null_val));
1722

1823
size_t null_count = 0;
@@ -35,11 +40,11 @@ gen_null_bitmap_8(uint8_t* dst, const uint8_t* src, size_t size, const uint8_t n
3540
return null_count;
3641
}
3742

38-
size_t __attribute__((target("avx512bw", "avx512f"), optimize("no-tree-vectorize")))
39-
gen_null_bitmap_16(uint8_t* dst,
40-
const uint16_t* src,
41-
size_t size,
42-
const uint16_t null_val) {
43+
size_t __attribute__((target("avx512f", "avx512bw"), optimize("no-tree-vectorize")))
44+
gen_null_bitmap_16_impl(uint8_t* dst,
45+
const uint16_t* src,
46+
size_t size,
47+
const uint16_t null_val) {
4348
__m512i nulls_mask = _mm512_set1_epi16(reinterpret_cast<const int16_t&>(null_val));
4449

4550
size_t null_count = 0;
@@ -62,11 +67,11 @@ gen_null_bitmap_16(uint8_t* dst,
6267
return null_count;
6368
}
6469

65-
size_t __attribute__((target("avx512bw", "avx512f"), optimize("no-tree-vectorize")))
66-
gen_null_bitmap_32(uint8_t* dst,
67-
const uint32_t* src,
68-
size_t size,
69-
const uint32_t null_val) {
70+
size_t __attribute__((target("avx512f", "avx512bw"), optimize("no-tree-vectorize")))
71+
gen_null_bitmap_32_impl(uint8_t* dst,
72+
const uint32_t* src,
73+
size_t size,
74+
const uint32_t null_val) {
7075
__m512i nulls_mask = _mm512_set1_epi32(reinterpret_cast<const int32_t&>(null_val));
7176

7277
size_t null_count = 0;
@@ -88,11 +93,11 @@ gen_null_bitmap_32(uint8_t* dst,
8893
return null_count;
8994
}
9095

91-
size_t __attribute__((target("avx512bw", "avx512f"), optimize("no-tree-vectorize")))
92-
gen_null_bitmap_64(uint8_t* dst,
93-
const uint64_t* src,
94-
size_t size,
95-
const uint64_t null_val) {
96+
size_t __attribute__((target("avx512f", "avx512bw"), optimize("no-tree-vectorize")))
97+
gen_null_bitmap_64_impl(uint8_t* dst,
98+
const uint64_t* src,
99+
size_t size,
100+
const uint64_t null_val) {
96101
__m512i nulls_mask = _mm512_set1_epi64(reinterpret_cast<const int64_t&>(null_val));
97102

98103
size_t null_count = 0;
@@ -142,35 +147,65 @@ size_t gen_null_bitmap_default(uint8_t* dst,
142147
}
143148

144149
#if defined(_MSC_VER)
145-
#define DEFAULT_TARGET_ATTRIBUTE
150+
#define BITMAP_GEN_TARGET_ATTRS
146151
#else
147-
#define DEFAULT_TARGET_ATTRIBUTE __attribute__((target("default")))
152+
#define BITMAP_GEN_TARGET_ATTRS __attribute__((target("default")))
148153
#endif
149154

150-
size_t DEFAULT_TARGET_ATTRIBUTE gen_null_bitmap_8(uint8_t* dst,
151-
const uint8_t* src,
152-
size_t size,
153-
const uint8_t null_val) {
155+
size_t BITMAP_GEN_TARGET_ATTRS gen_null_bitmap_8_impl(uint8_t* dst,
156+
const uint8_t* src,
157+
size_t size,
158+
const uint8_t null_val) {
159+
// std::cout << "Using default impl " << std::endl;
154160
return gen_null_bitmap_default<uint8_t>(dst, src, size, null_val);
155161
}
156162

157-
size_t DEFAULT_TARGET_ATTRIBUTE gen_null_bitmap_16(uint8_t* dst,
158-
const uint16_t* src,
159-
size_t size,
160-
const uint16_t null_val) {
163+
size_t BITMAP_GEN_TARGET_ATTRS gen_null_bitmap_16_impl(uint8_t* dst,
164+
const uint16_t* src,
165+
size_t size,
166+
const uint16_t null_val) {
161167
return gen_null_bitmap_default<uint16_t>(dst, src, size, null_val);
162168
}
163169

164-
size_t DEFAULT_TARGET_ATTRIBUTE gen_null_bitmap_32(uint8_t* dst,
165-
const uint32_t* src,
166-
size_t size,
167-
const uint32_t null_val) {
170+
size_t BITMAP_GEN_TARGET_ATTRS gen_null_bitmap_32_impl(uint8_t* dst,
171+
const uint32_t* src,
172+
size_t size,
173+
const uint32_t null_val) {
168174
return gen_null_bitmap_default<uint32_t>(dst, src, size, null_val);
169175
}
170176

171-
size_t DEFAULT_TARGET_ATTRIBUTE gen_null_bitmap_64(uint8_t* dst,
172-
const uint64_t* src,
173-
size_t size,
174-
const uint64_t null_val) {
177+
size_t BITMAP_GEN_TARGET_ATTRS gen_null_bitmap_64_impl(uint8_t* dst,
178+
const uint64_t* src,
179+
size_t size,
180+
const uint64_t null_val) {
175181
return gen_null_bitmap_default<uint64_t>(dst, src, size, null_val);
176182
}
183+
184+
// dispatchers
185+
size_t gen_null_bitmap_8(uint8_t* dst,
186+
const uint8_t* src,
187+
size_t size,
188+
const uint8_t null_val) {
189+
return gen_null_bitmap_8_impl(dst, src, size, null_val);
190+
}
191+
192+
size_t gen_null_bitmap_16(uint8_t* dst,
193+
const uint16_t* src,
194+
size_t size,
195+
const uint16_t null_val) {
196+
return gen_null_bitmap_16_impl(dst, src, size, null_val);
197+
}
198+
199+
size_t gen_null_bitmap_32(uint8_t* dst,
200+
const uint32_t* src,
201+
size_t size,
202+
const uint32_t null_val) {
203+
return gen_null_bitmap_32_impl(dst, src, size, null_val);
204+
}
205+
206+
size_t gen_null_bitmap_64(uint8_t* dst,
207+
const uint64_t* src,
208+
size_t size,
209+
const uint64_t null_val) {
210+
return gen_null_bitmap_64_impl(dst, src, size, null_val);
211+
}

omniscidb/Tests/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ endif()
5858

5959
# Tests + Microbenchmarks
6060
add_executable(StringDictionaryBenchmark StringDictionaryBenchmark.cpp)
61-
add_executable(BitmapGeneratorBenchmark BitmapGeneratorBenchmark.cpp ../ResultSet/BitmapGenerators.cpp)
61+
add_executable(BitmapGeneratorBenchmark BitmapGeneratorBenchmark.cpp)
62+
target_link_libraries(BitmapGeneratorBenchmark ResultSet)
6263

6364
if(ENABLE_L0)
6465
add_executable(L0MgrExecuteTest L0MgrExecuteTest.cpp)

0 commit comments

Comments
 (0)