Skip to content

Commit 4c3ade9

Browse files
authored
Merge pull request #143 from r-devulap/maint
Simplify use of ISA specific routines through a unified API for static methods
2 parents 8cc37bd + 3a2bde3 commit 4c3ade9

37 files changed

+284
-292
lines changed

examples/Makefile

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,24 @@
1-
CXX ?= g++-12
2-
CFLAGS = -I../src -std=c++17 -O3 $(if $(CXXFLAGS),$(CXXFLAGS),)
3-
EXE = qsort32avx2 argsort kvsort qsortfp16 qsort16 qsort32 qsort64
1+
CXX ?= g++-13
2+
CFLAGS = -I../src -std=c++17 -O3
3+
EXE = kvsort qsortavx2 qsortavx512 qsortspr qsorticl
44

55
default: all
66
all : $(EXE)
77

8-
qsortfp16: avx512fp-16bit-qsort.cpp
9-
$(CXX) -o qsortfp16 -march=sapphirerapids $(CFLAGS) avx512fp-16bit-qsort.cpp
10-
11-
qsort16: avx512-16bit-qsort.cpp
12-
$(CXX) -o qsort16 -march=icelake-client $(CFLAGS) avx512-16bit-qsort.cpp
13-
14-
qsort32: avx512-32bit-qsort.cpp
15-
$(CXX) -o qsort32 -march=skylake-avx512 $(CFLAGS) avx512-32bit-qsort.cpp
8+
kvsort: avx512-kv.cpp
9+
$(CXX) -o kvsort -mavx512vl -mavx512dq $(CFLAGS) avx512-kv.cpp
1610

17-
qsort32avx2: avx2-32bit-qsort.cpp
18-
$(CXX) -o qsort32avx2 -march=haswell $(CFLAGS) avx2-32bit-qsort.cpp
11+
qsortavx512: skx-avx2.cpp
12+
$(CXX) -o qsortavx512 -mavx512vl -mavx512dq $(CFLAGS) skx-avx2.cpp
1913

20-
qsort64: avx512-64bit-qsort.cpp
21-
$(CXX) -o qsort64 -march=skylake-avx512 $(CFLAGS) avx512-64bit-qsort.cpp
14+
qsortavx2: skx-avx2.cpp
15+
$(CXX) -o qsortavx2 -mavx2 $(CFLAGS) skx-avx2.cpp
2216

23-
argsort: avx512-argsort.cpp
24-
$(CXX) -o argsort -march=skylake-avx512 $(CFLAGS) avx512-argsort.cpp
17+
qsorticl: icl-16bit.cpp
18+
$(CXX) -o qsorticl -mavx512vl -mavx512bw -mavx512dq -mavx512vbmi2 $(CFLAGS) icl-16bit.cpp
2519

26-
kvsort: avx512-kv.cpp
27-
$(CXX) -o kvsort -march=skylake-avx512 $(CFLAGS) avx512-kv.cpp
20+
qsortspr: spr-16bit.cpp
21+
$(CXX) -o qsortspr -mavx512vl -mavx512dq -mavx512vbmi2 -mavx512fp16 $(CFLAGS) spr-16bit.cpp
2822

2923
clean:
3024
$(RM) $(EXE)

examples/avx2-32bit-qsort.cpp

Lines changed: 0 additions & 11 deletions
This file was deleted.

examples/avx512-16bit-qsort.cpp

Lines changed: 0 additions & 11 deletions
This file was deleted.

examples/avx512-32bit-qsort.cpp

Lines changed: 0 additions & 11 deletions
This file was deleted.

examples/avx512-64bit-qsort.cpp

Lines changed: 0 additions & 11 deletions
This file was deleted.

examples/avx512-argsort.cpp

Lines changed: 0 additions & 10 deletions
This file was deleted.

examples/avx512-kv.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "avx512-64bit-keyvaluesort.hpp"
1+
#include "x86simdsort-static-incl.h"
22

33
int main()
44
{
@@ -7,17 +7,17 @@ int main()
77
uint64_t arr2[size];
88
double arr3[size];
99
float arr4[size];
10-
avx512_qsort_kv(arr1, arr1, size);
11-
avx512_qsort_kv(arr1, arr2, size);
12-
avx512_qsort_kv(arr1, arr3, size);
13-
avx512_qsort_kv(arr2, arr1, size);
14-
avx512_qsort_kv(arr2, arr2, size);
15-
avx512_qsort_kv(arr2, arr3, size);
16-
avx512_qsort_kv(arr3, arr1, size);
17-
avx512_qsort_kv(arr3, arr2, size);
18-
avx512_qsort_kv(arr1, arr4, size);
19-
avx512_qsort_kv(arr2, arr4, size);
20-
avx512_qsort_kv(arr3, arr4, size);
10+
x86simdsortStatic::keyvalue_qsort(arr1, arr1, size);
11+
x86simdsortStatic::keyvalue_qsort(arr1, arr2, size);
12+
x86simdsortStatic::keyvalue_qsort(arr1, arr3, size);
13+
x86simdsortStatic::keyvalue_qsort(arr2, arr1, size);
14+
x86simdsortStatic::keyvalue_qsort(arr2, arr2, size);
15+
x86simdsortStatic::keyvalue_qsort(arr2, arr3, size);
16+
x86simdsortStatic::keyvalue_qsort(arr3, arr1, size);
17+
x86simdsortStatic::keyvalue_qsort(arr3, arr2, size);
18+
x86simdsortStatic::keyvalue_qsort(arr1, arr4, size);
19+
x86simdsortStatic::keyvalue_qsort(arr2, arr4, size);
20+
x86simdsortStatic::keyvalue_qsort(arr3, arr4, size);
2121
return 0;
2222
return 0;
2323
}

examples/avx512fp-16bit-qsort.cpp

Lines changed: 0 additions & 11 deletions
This file was deleted.

examples/icl-16bit.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#include "x86simdsort-static-incl.h"
2+
3+
int main()
4+
{
5+
const int size = 1000;
6+
short arr[size];
7+
x86simdsortStatic::qsort(arr, size);
8+
x86simdsortStatic::qselect(arr, 10, size);
9+
x86simdsortStatic::partial_qsort(arr, 10, size);
10+
return 0;
11+
}

examples/skx-avx2.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#include "x86simdsort-static-incl.h"
2+
3+
int main()
4+
{
5+
const int size = 1000;
6+
double arrd[size];
7+
float arrf[size];
8+
x86simdsortStatic::qsort(arrf, size);
9+
x86simdsortStatic::qsort(arrd, size);
10+
x86simdsortStatic::qselect(arrf, 10, size);
11+
x86simdsortStatic::qselect(arrd, 10, size);
12+
x86simdsortStatic::partial_qsort(arrf, 10, size);
13+
x86simdsortStatic::partial_qsort(arrd, 10, size);
14+
auto arg1 = x86simdsortStatic::argsort(arrf, size);
15+
auto arg2 = x86simdsortStatic::argselect(arrf, 10, size);
16+
auto arg3 = x86simdsortStatic::argsort(arrd, size);
17+
auto arg4 = x86simdsortStatic::argselect(arrd, 10, size);
18+
return 0;
19+
}

0 commit comments

Comments
 (0)