Skip to content

Commit 8412041

Browse files
authored
Merge branch 'OpenMathLib:develop' into fixup5496
2 parents 822a7f3 + aef36a3 commit 8412041

File tree

9 files changed

+346
-8
lines changed

9 files changed

+346
-8
lines changed

azure-pipelines.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ jobs:
9595
vmImage: 'windows-latest'
9696
steps:
9797
- script: |
98-
mingw32-make CC=gcc FC=gfortran DYNAMIC_ARCH=1 DYNAMIC_LIST="SANDYBRIDGE"
98+
mingw32-make CC=gcc NOLAPACK=1 DYNAMIC_ARCH=1 DYNAMIC_LIST="SANDYBRIDGE"
9999
100100
- job: Windows_clang_cmake
101101
pool:
@@ -201,7 +201,7 @@ jobs:
201201
- script: |
202202
brew update
203203
brew install llvm libomp
204-
make TARGET=CORE2 USE_OPENMP=1 DYNAMIC_ARCH=1 CC=/usr/local/opt/llvm/bin/clang NOFORTRAN=1
204+
make TARGET=CORE2 USE_OPENMP=1 DYNAMIC_ARCH=1 DYNAMIC_LIST='NEHALEM HASWELL SKYLAKEX' CC=/usr/local/opt/llvm/bin/clang NOFORTRAN=1
205205
206206
- job: OSX_OpenMP_Clang_cmake
207207
pool:
@@ -215,7 +215,7 @@ jobs:
215215
brew install llvm libomp
216216
mkdir build
217217
cd build
218-
cmake -DTARGET=CORE2 -DUSE_OPENMP=1 -DINTERFACE64=1 -DDYNAMIC_ARCH=1 -DCMAKE_C_COMPILER=/usr/local/opt/llvm/bin/clang -DNOFORTRAN=1 -DNO_AVX512=1 ..
218+
cmake -DTARGET=CORE2 -DUSE_OPENMP=1 -DINTERFACE64=1 -DDYNAMIC_ARCH=1 -DDYNAMIC_LIST='NEHALEM HASWELL SKYLAKEX' -DCMAKE_C_COMPILER=/usr/local/opt/llvm/bin/clang -DNOFORTRAN=1 -DNO_AVX512=1 ..
219219
make
220220
ctest
221221

cmake/cc.cmake

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,30 @@ if (${CORE} STREQUAL PPCG4)
391391
endif ()
392392
endif ()
393393

394+
395+
if ((${CORE} STREQUAL RISCV64_ZVL128B) OR (${CORE} STREQUAL RISCV64_ZVL256B))
396+
set (RISCV64_OPT "rv64imafdcv")
397+
if (BUILD_BFLOAT16)
398+
set (RISCV64_OPT "${RISCV64_OPT}_zvfbfwma")
399+
endif()
400+
if (BUILD_HFLOAT16)
401+
set (RISCV64_OPT "${RISCV64_OPT}_zvfh_zfh")
402+
endif()
403+
if (${CORE} STREQUAL RISCV64_ZVL256B)
404+
set (CCOMMON_OPT "${CCOMMON_OPT} -march=${RISCV64_OPT}_zvl256b -mabi=lp64d")
405+
endif()
406+
if (${CORE} STREQUAL RISCV64_ZVL128B)
407+
set (CCOMMON_OPT "${CCOMMON_OPT} -march=${RISCV64_OPT}_zvl128b -mabi=lp64d")
408+
endif()
409+
endif()
410+
if (${CORE} STREQUAL RISCV64_GENERIC)
411+
set (CCOMMON_OPT "${CCOMMON_OPT} -march=rv64imafdc -mabi=lp64d")
412+
endif()
413+
if (${CORE} STREQUAL x280)
414+
set (CCOMMON_OPT "${CCOMMON_OPT} -march=rv64imafdcv_zba_zbb_zfh_zvl512b -mabi=lp64d")
415+
endif()
416+
417+
394418
if (NOT DYNAMIC_ARCH)
395419
if (HAVE_AVX2)
396420
set (CCOMMON_OPT "${CCOMMON_OPT} -mavx2")

cmake/kernel.cmake

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -230,10 +230,12 @@ macro(SetDefaultL2)
230230
if (BUILD_BFLOAT16)
231231
SetFallback(BGEMVNKERNEL ../generic/gemv_n.c)
232232
SetFallback(BGEMVTKERNEL ../generic/gemv_t.c)
233-
SetFallback(SHGEMVNKERNEL ../generic/gemv_n.c)
234-
SetFallback(SHGEMVTKERNEL ../generic/gemv_t.c)
235233
SetFallback(SBGEMVNKERNEL ../x86_64/sbgemv_n.c)
236234
SetFallback(SBGEMVTKERNEL ../x86_64/sbgemv_t.c)
235+
endif ()
236+
if (BUILD_HFLOAT16)
237+
SetFallback(SHGEMVNKERNEL ../generic/gemv_n.c)
238+
SetFallback(SHGEMVTKERNEL ../generic/gemv_t.c)
237239
SetFallback(SHGERKERNEL ../generic/ger.c)
238240
endif ()
239241
endmacro ()

cmake/system.cmake

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,28 @@ if (${TARGET} STREQUAL NEOVERSEV1)
381381
endif()
382382
endif()
383383

384+
if ((${TARGET} STREQUAL RISCV64_ZVL128B) OR (${TARGET} STREQUAL RISCV64_ZVL256B))
385+
set (RISCV64_OPT "rv64imafdcv")
386+
if (BUILD_BFLOAT16)
387+
set (RISCV64_OPT "${RISCV64_OPT}_zvfbfwma")
388+
endif()
389+
if (BUILD_HFLOAT16)
390+
set (RISCV64_OPT "${RISCV64_OPT}_zvfh_zfh")
391+
endif()
392+
if (${TARGET} STREQUAL RISCV64_ZVL256B)
393+
set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -march=${RISCV64_OPT}_zvl256b -mabi=lp64d")
394+
endif()
395+
if (${TARGET} STREQUAL RISCV64_ZVL128B)
396+
set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -march=${RISCV64_OPT}_zvl128b -mabi=lp64d")
397+
endif()
398+
endif()
399+
if (${TARGET} STREQUAL RISCV64_GENERIC)
400+
set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -march=rv64imafdc -mabi=lp64d")
401+
endif()
402+
if (${TARGET} STREQUAL x280)
403+
set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -march=rv64imafdcv_zba_zbb_zfh_zvl512b -mabi=lp64d")
404+
endif()
405+
384406
endif()
385407

386408
if (DEFINED BINARY)

driver/level2/CMakeLists.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,15 @@ if (BUILD_BFLOAT16)
202202
if (USE_THREAD)
203203
GenerateNamedObjects("sbgemv_thread.c" "" "gemv_thread_n" false "" "" false "BFLOAT16")
204204
GenerateNamedObjects("sbgemv_thread.c" "TRANSA" "gemv_thread_t" false "" "" false "BFLOAT16")
205+
GenerateNamedObjects("sbgemv_thread.c" "BGEMM;BFLOAT16" "bgemv_thread_n" false "" "" true "")
206+
GenerateNamedObjects("sbgemv_thread.c" "BGEMM;BFLOAT16;TRANSA" "bgemv_thread_t" false "" "" true "")
207+
endif ()
208+
endif ()
209+
210+
if (BUILD_HFLOAT16)
211+
if (USE_THREAD)
212+
GenerateNamedObjects("sbgemv_thread.c" "" "gemv_thread_n" false "" "" false "HFLOAT16")
213+
GenerateNamedObjects("sbgemv_thread.c" "TRANSA" "gemv_thread_t" false "" "" false "HFLOAT16")
205214
endif ()
206215
endif ()
207216

driver/level3/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ foreach (GEMM_DEFINE ${GEMM_DEFINES})
1717
GenerateNamedObjects("gemm.c" "${GEMM_DEFINE};BGEMM" "gemm_${GEMM_DEFINE_LC}" 0 "" "" false "BFLOAT16")
1818
if (USE_THREAD AND NOT USE_SIMPLE_THREADED_LEVEL3)
1919
GenerateNamedObjects("gemm.c" "${GEMM_DEFINE};THREADED_LEVEL3" "gemm_thread_${GEMM_DEFINE_LC}" 0 "" "" false "BFLOAT16")
20+
GenerateNamedObjects("gemm.c" "${GEMM_DEFINE};THREADED_LEVEL3;BGEMM" "gemm_thread_${GEMM_DEFINE_LC}" 0 "" "" false "BFLOAT16")
2021
endif ()
2122
endif ()
2223
if (BUILD_HFLOAT16)

test/CMakeLists.txt

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,28 @@ foreach(test_bin ${OpenBLAS_Tests})
3636
target_link_libraries(${test_bin} ${OpenBLAS_LIBNAME})
3737
endforeach()
3838

39+
if (BUILD_BFLOAT16)
40+
add_executable(test_bgemm compare_sgemm_bgemm.c)
41+
target_compile_definitions(test_bgemm PUBLIC -DIBFLOAT16 -DOBFLOAT16)
42+
target_link_libraries(test_bgemm ${OpenBLAS_LIBNAME})
43+
add_executable(test_bgemv compare_sgemv_bgemv.c)
44+
target_compile_definitions(test_bgemv PUBLIC -DIBFLOAT16 -DOBFLOAT16)
45+
target_link_libraries(test_bgemv ${OpenBLAS_LIBNAME})
46+
add_executable(test_sbgemm compare_sgemm_sbgemm.c)
47+
target_compile_definitions(test_sbgemm PUBLIC -DIBFLOAT16)
48+
target_link_libraries(test_sbgemm ${OpenBLAS_LIBNAME})
49+
add_executable(test_sbgemv compare_sgemv_sbgemv.c)
50+
target_compile_definitions(test_sbgemv PUBLIC -DIBFLOAT16)
51+
target_link_libraries(test_sbgemv ${OpenBLAS_LIBNAME})
52+
endif()
53+
54+
if (BUILD_HFLOAT16)
55+
add_executable(test_shgemm compare_sgemm_shgemm.c)
56+
target_link_libraries(test_shgemm ${OpenBLAS_LIBNAME})
57+
add_executable(test_shgemv compare_sgemv_shgemv.c)
58+
target_link_libraries(test_shgemv ${OpenBLAS_LIBNAME})
59+
endif()
60+
3961
# $1 exec, $2 input, $3 output_result
4062
if(WIN32)
4163
FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/test_helper.ps1
@@ -94,3 +116,21 @@ add_test(NAME "${float_type}blas3_3m"
94116
endif()
95117
endif()
96118
endforeach()
119+
120+
if (BUILD_BFLOAT16)
121+
add_test(NAME "bgemm"
122+
COMMAND $<TARGET_FILE:test_bgemm>)
123+
add_test(NAME "bgemv"
124+
COMMAND $<TARGET_FILE:test_bgemv>)
125+
add_test(NAME "sbgemm"
126+
COMMAND $<TARGET_FILE:test_sbgemm>)
127+
add_test(NAME "sbgemv"
128+
COMMAND $<TARGET_FILE:test_sbgemv>)
129+
endif()
130+
131+
if (BUILD_HFLOAT16)
132+
add_test(NAME "shgemm"
133+
COMMAND $<TARGET_FILE:test_shgemm>)
134+
add_test(NAME "shgemv"
135+
COMMAND $<TARGET_FILE:test_shgemv>)
136+
endif()

test/Makefile

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,9 @@ ifeq ($(BUILD_BFLOAT16),1)
234234
BF3= test_bgemm
235235
B3 = test_sbgemm
236236
endif
237+
ifeq ($(BUILD_HFLOAT16),1)
238+
H3 = test_shgemm
239+
endif
237240
ifeq ($(BUILD_SINGLE),1)
238241
S3=sblat3
239242
endif
@@ -257,9 +260,9 @@ endif
257260

258261

259262
ifeq ($(SUPPORT_GEMM3M),1)
260-
level3: $(BF3) $(B3) $(S3) $(D3) $(C3) $(Z3) level3_3m
263+
level3: $(BF3) $(B3) $(H3) $(S3) $(D3) $(C3) $(Z3) level3_3m
261264
else
262-
level3: $(BF3) $(B3) $(S3) $(D3) $(C3) $(Z3)
265+
level3: $(BF3) $(B3) $(H3) $(S3) $(D3) $(C3) $(Z3)
263266
endif
264267

265268
ifneq ($(CROSS), 1)
@@ -454,6 +457,9 @@ test_sbgemv : compare_sgemv_sbgemv.c ../$(LIBNAME)
454457
endif
455458

456459
ifeq ($(BUILD_HFLOAT16),1)
460+
test_shgemm : compare_sgemm_shgemm.c test_helpers.h ../$(LIBNAME)
461+
$(CC) $(CLDFLAGS) -DIHFLOAT16 -o test_shgemm compare_sgemm_shgemm.c ../$(LIBNAME) $(EXTRALIB) $(CEXTRALIB)
462+
457463
test_shgemv : compare_sgemv_shgemv.c ../$(LIBNAME)
458464
$(CC) $(CLDFLAGS) -o test_shgemv compare_sgemv_shgemv.c ../$(LIBNAME) $(EXTRALIB) $(CEXTRALIB)
459465
endif
@@ -475,7 +481,7 @@ clean:
475481
@rm -f *.$(SUFFIX) *.$(PSUFFIX) gmon.$(SUFFIX)ut *.SUMM *.cxml *.exe *.pdb *.dwf \
476482
sblat1 dblat1 cblat1 zblat1 \
477483
sblat2 dblat2 cblat2 zblat2 \
478-
test_bgemm test_bgemv test_sbgemm test_sbgemv test_shgemv sblat3 dblat3 cblat3 zblat3 \
484+
test_bgemm test_bgemv test_sbgemm test_sbgemv test_shgemm test_shgemv sblat3 dblat3 cblat3 zblat3 \
479485
sblat1p dblat1p cblat1p zblat1p \
480486
sblat2p dblat2p cblat2p zblat2p \
481487
sblat3p dblat3p cblat3p zblat3p \

0 commit comments

Comments
 (0)