Skip to content

Commit ccf0772

Browse files
author
phakumar
committed
BLIS library porting on to Windows:
This library ported on Windows 10 using CMake scripts and Visual Studio 2019 with clang compiler AMD internal:[CPUPL-657] Change-Id: Ie701f52ebc0e0585201ba703b6284ac94fc0feb9
1 parent 80b3127 commit ccf0772

107 files changed

Lines changed: 46455 additions & 2 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CMakeLists.txt

Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
##Copyright (C) 2020, Advanced Micro Devices, Inc.##
2+
3+
cmake_minimum_required(VERSION 3.0.0)
4+
5+
project(AOCL-LibBlis-Win C)
6+
7+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
8+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
9+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
10+
if (MSVC)
11+
set(TARGET_ARCH zen2)
12+
message(STATUS "Setting MSVC flags2")
13+
message(${TARGET_ARCH})
14+
option(BUILD_SHARED_LIBS "Build shared library" ON)
15+
option(ENABLE_MULTITHREADING "Enable Multi threading" OFF)
16+
17+
include_directories(${PROJECT_SOURCE_DIR}/external/msvc)
18+
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
19+
add_definitions(-DBLIS_ENABLE_CBLAS)
20+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MD ")
21+
#add_definitions(-DBLIS_IS_BUILDING_LIBRARY)
22+
if(NOT BUILD_SHARED_LIBS)
23+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MT ")
24+
add_definitions(-DBLIS_IS_BUILDING_LIBRARY)
25+
endif()
26+
27+
if(ENABLE_MULTITHREADING)
28+
add_definitions(-DBLIS_ENABLE_OPENMP)
29+
endif()
30+
31+
SET(ENABLE_SIMD_FLAGS "AVX2" CACHE STRING "Set compiler SIMD flags")
32+
SET_PROPERTY(CACHE ENABLE_SIMD_FLAGS PROPERTY STRINGS none SSE2 AVX AVX2)
33+
34+
if(${ENABLE_SIMD_FLAGS} MATCHES "AVX2")
35+
add_definitions(/arch:AVX2)
36+
message(STATUS "Enabling AVX2 instructions")
37+
elseif(${ENABLE_SIMD_FLAGS} MATCHES "AVX")
38+
add_definitions(/arch:AVX)
39+
message(STATUS "Enabling AVX instructions")
40+
elseif(${ENABLE_SIMD_FLAGS} MATCHES "SSE2")
41+
add_definitions(/arch:SSE2)
42+
message(STATUS "Enabling SSE2 instructions")
43+
endif()
44+
45+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W0 ")
46+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Oi")
47+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP")
48+
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /openmp")
49+
set(INTR_GENERAL_LINK_FLAGS "${INTR_GENERAL_LINK_FLAGS} /RELEGE")
50+
#add_definitions(-D_USRDLL)
51+
add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
52+
#add_definitions(-D_WIN32)
53+
#add_definitions(-D_BLIS)
54+
add_definitions(-DBLIS_OS_WINDOWS)
55+
add_definitions(-D_MSC_VER)
56+
add_definitions(-DBLIS_CNAME=${TARGET_ARCH})
57+
endif(MSVC)
58+
59+
include_directories(${CMAKE_SOURCE_DIR}/aocl_dtl)
60+
include_directories(${CMAKE_SOURCE_DIR}/.)
61+
include_directories(${CMAKE_SOURCE_DIR}/windows/${TARGET_ARCH})
62+
include_directories(${CMAKE_SOURCE_DIR}/frame/include)
63+
include_directories(${CMAKE_SOURCE_DIR}/frame/include/level0)
64+
include_directories(${CMAKE_SOURCE_DIR}/frame/include/level0/1e)
65+
include_directories(${CMAKE_SOURCE_DIR}/frame/include/level0/1m)
66+
include_directories(${CMAKE_SOURCE_DIR}/frame/include/level0/1r)
67+
include_directories(${CMAKE_SOURCE_DIR}/frame/include/level0/bb)
68+
include_directories(${CMAKE_SOURCE_DIR}/frame/include/level0/io)
69+
include_directories(${CMAKE_SOURCE_DIR}/frame/include/level0/ri)
70+
include_directories(${CMAKE_SOURCE_DIR}/frame/include/level0/ri3)
71+
include_directories(${CMAKE_SOURCE_DIR}/frame/include/level0/rih)
72+
include_directories(${CMAKE_SOURCE_DIR}/frame/include/level0/ro)
73+
include_directories(${CMAKE_SOURCE_DIR}/frame/include/level0/rpi)
74+
include_directories(${CMAKE_SOURCE_DIR}/frame/thread)
75+
include_directories(${CMAKE_SOURCE_DIR}/frame/base)
76+
include_directories(${CMAKE_SOURCE_DIR}/frame/base/cast)
77+
include_directories(${CMAKE_SOURCE_DIR}/frame/base/check)
78+
include_directories(${CMAKE_SOURCE_DIR}/frame/base/noopt)
79+
include_directories(${CMAKE_SOURCE_DIR}/frame/base/proj)
80+
include_directories(${CMAKE_SOURCE_DIR}/frame/0)
81+
include_directories(${CMAKE_SOURCE_DIR}/frame/0/copysc)
82+
include_directories(${CMAKE_SOURCE_DIR}/frame/1)
83+
include_directories(${CMAKE_SOURCE_DIR}/frame/1d)
84+
include_directories(${CMAKE_SOURCE_DIR}/frame/1f)
85+
include_directories(${CMAKE_SOURCE_DIR}/frame/1m)
86+
include_directories(${CMAKE_SOURCE_DIR}/frame/1m/packm)
87+
include_directories(${CMAKE_SOURCE_DIR}/frame/1m/unpackm)
88+
include_directories(${CMAKE_SOURCE_DIR}/frame/2)
89+
include_directories(${CMAKE_SOURCE_DIR}/frame/2/gemv)
90+
include_directories(${CMAKE_SOURCE_DIR}/frame/2/ger)
91+
include_directories(${CMAKE_SOURCE_DIR}/frame/2/hemv)
92+
include_directories(${CMAKE_SOURCE_DIR}/frame/2/her)
93+
include_directories(${CMAKE_SOURCE_DIR}/frame/2/her2)
94+
include_directories(${CMAKE_SOURCE_DIR}/frame/2/symv)
95+
include_directories(${CMAKE_SOURCE_DIR}/frame/2/syr)
96+
include_directories(${CMAKE_SOURCE_DIR}/frame/2/syr2)
97+
include_directories(${CMAKE_SOURCE_DIR}/frame/2/trmv)
98+
include_directories(${CMAKE_SOURCE_DIR}/frame/2/trsv)
99+
include_directories(${CMAKE_SOURCE_DIR}/frame/3)
100+
include_directories(${CMAKE_SOURCE_DIR}/frame/3/gemm)
101+
include_directories(${CMAKE_SOURCE_DIR}/frame/3/gemm/ind)
102+
include_directories(${CMAKE_SOURCE_DIR}/frame/3/hemm)
103+
include_directories(${CMAKE_SOURCE_DIR}/frame/3/her2k)
104+
include_directories(${CMAKE_SOURCE_DIR}/frame/3/herk)
105+
include_directories(${CMAKE_SOURCE_DIR}/frame/3/symm)
106+
include_directories(${CMAKE_SOURCE_DIR}/frame/3/syr2k)
107+
include_directories(${CMAKE_SOURCE_DIR}/frame/3/syrk)
108+
include_directories(${CMAKE_SOURCE_DIR}/frame/3/trmm)
109+
include_directories(${CMAKE_SOURCE_DIR}/frame/3/trmm3)
110+
include_directories(${CMAKE_SOURCE_DIR}/frame/3/trsm)
111+
include_directories(${CMAKE_SOURCE_DIR}/frame/compat)
112+
include_directories(${CMAKE_SOURCE_DIR}/frame/compat/blis/thread)
113+
include_directories(${CMAKE_SOURCE_DIR}/frame/compat/cblas)
114+
include_directories(${CMAKE_SOURCE_DIR}/frame/compat/cblas/f77_sub)
115+
include_directories(${CMAKE_SOURCE_DIR}/frame/compat/cblas/src)
116+
include_directories(${CMAKE_SOURCE_DIR}/frame/compat/check)
117+
include_directories(${CMAKE_SOURCE_DIR}/frame/compat/f2c)
118+
include_directories(${CMAKE_SOURCE_DIR}/frame/compat/f2c/util)
119+
include_directories(${CMAKE_SOURCE_DIR}/frame/ind)
120+
include_directories(${CMAKE_SOURCE_DIR}/frame/ind/cntx)
121+
include_directories(${CMAKE_SOURCE_DIR}/frame/ind/oapi)
122+
include_directories(${CMAKE_SOURCE_DIR}/frame/ind/tapi)
123+
include_directories(${CMAKE_SOURCE_DIR}/frame/ind/ukernels)
124+
include_directories(${CMAKE_SOURCE_DIR}/frame/util)
125+
include_directories(${CMAKE_SOURCE_DIR}/config/zen)
126+
include_directories(${CMAKE_SOURCE_DIR}/config/zen2)
127+
include_directories(${CMAKE_SOURCE_DIR}/ref_kernels)
128+
include_directories(${CMAKE_SOURCE_DIR}/kernels)
129+
include_directories(${CMAKE_SOURCE_DIR}/kernels/haswell)
130+
include_directories(${CMAKE_SOURCE_DIR}/kernels/haswell/3)
131+
include_directories(${CMAKE_SOURCE_DIR}/kernels/haswell/3/sup)
132+
include_directories(${CMAKE_SOURCE_DIR}/kernels/zen)
133+
include_directories(${CMAKE_SOURCE_DIR}/kernels/zen/1)
134+
include_directories(${CMAKE_SOURCE_DIR}/kernels/zen/1f)
135+
include_directories(${CMAKE_SOURCE_DIR}/kernels/zen/1m)
136+
include_directories(${CMAKE_SOURCE_DIR}/kernels/zen/3)
137+
include_directories(${CMAKE_SOURCE_DIR}/kernels/zen/3/sup)
138+
include_directories(${CMAKE_SOURCE_DIR}/kernels/zen2)
139+
include_directories(${CMAKE_SOURCE_DIR}/kernels/zen2/1f)
140+
include_directories(${CMAKE_SOURCE_DIR}/kernels/zen2/2)
141+
142+
file(GLOB headers ${CMAKE_SOURCE_DIR}/*.h)
143+
144+
if(BUILD_SHARED_LIBS)
145+
add_library("${PROJECT_NAME}" SHARED ${CMAKE_SOURCE_DIR}/windows/${TARGET_ARCH}/bli_config.h
146+
${CMAKE_SOURCE_DIR}/windows/${TARGET_ARCH}/blis.h
147+
${headers})
148+
target_compile_definitions("${PROJECT_NAME}" PUBLIC -DBLIS_IS_BUILDING_LIBRARY)
149+
set_target_properties("${PROJECT_NAME}" PROPERTIES LINKER_LANGUAGE C)
150+
endif()
151+
if(NOT BUILD_SHARED_LIBS)
152+
add_library("${PROJECT_NAME}" STATIC ${CMAKE_SOURCE_DIR}/windows/${TARGET_ARCH}/bli_config.h
153+
${CMAKE_SOURCE_DIR}/windows/${TARGET_ARCH}/blis.h
154+
${headers})
155+
set_target_properties("${PROJECT_NAME}" PROPERTIES LINKER_LANGUAGE C)
156+
endif()
157+
158+
159+
link_directories(${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
160+
add_definitions(-DEXPMODULE)
161+
162+
add_subdirectory(config)
163+
add_subdirectory(ref_kernels)
164+
add_subdirectory(kernels)
165+
add_subdirectory(frame)
166+
add_subdirectory(aocl_dtl)
167+
add_subdirectory(test)
168+
add_subdirectory(testsuite)

aocl_dtl/CMakeLists.txt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
##Copyright (C) 2020, Advanced Micro Devices, Inc ##
2+
3+
target_sources("${PROJECT_NAME}"
4+
PRIVATE
5+
${CMAKE_CURRENT_SOURCE_DIR}/aocldtl.c
6+
${CMAKE_CURRENT_SOURCE_DIR}/aocldtl.h
7+
${CMAKE_CURRENT_SOURCE_DIR}/aocldtlcf.h
8+
${CMAKE_CURRENT_SOURCE_DIR}/aocldtl_blis.c
9+
${CMAKE_CURRENT_SOURCE_DIR}/aocldtl_blis.h
10+
${CMAKE_CURRENT_SOURCE_DIR}/aoclfal.c
11+
${CMAKE_CURRENT_SOURCE_DIR}/aoclfal.h
12+
${CMAKE_CURRENT_SOURCE_DIR}/aoclflist.c
13+
${CMAKE_CURRENT_SOURCE_DIR}/aoclflist.h
14+
${CMAKE_CURRENT_SOURCE_DIR}/aoclos.c
15+
${CMAKE_CURRENT_SOURCE_DIR}/aoclos.h
16+
${CMAKE_CURRENT_SOURCE_DIR}/aocltpdef.h
17+
)

aocl_dtl/aocltpdef.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,11 @@
1515
#include <memory.h>
1616
#include <time.h>
1717
#include <math.h>
18+
#ifndef _WIN32
1819
#include <sys/types.h>
20+
#else
21+
typedef int pid_t;
22+
#endif
1923

2024
typedef double Double;
2125
typedef float Float;

common.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,7 @@ SOFLAGS := -shared
546546
ifeq ($(IS_WIN),yes)
547547
# Windows shared library link flags.
548548
ifeq ($(CC_VENDOR),clang)
549-
SOFLAGS += -Wl,-implib:$(BASE_LIB_PATH)/$(LIBBLIS).lib
549+
SOFLAGS += -Wl,-soname,$(LIBBLIS_SONAME)
550550
else
551551
SOFLAGS += -Wl,--out-implib,$(BASE_LIB_PATH)/$(LIBBLIS).dll.a
552552
endif

config/CMakeLists.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
##Copyright (C) 2020, Advanced Micro Devices, Inc ##
2+
3+
if(${TARGET_ARCH} STREQUAL zen2)
4+
message("The configuration is : ${TARGET_ARCH}")
5+
add_subdirectory(zen2)
6+
elseif(${TARGET_ARCH} STREQUAL zen)
7+
message("The configuration is : ${TARGET_ARCH}")
8+
add_subdirectory(zen)
9+
else(${TARGET_ARCH} STREQUAL haswell)
10+
message("The configuration is : ${TARGET_ARCH}")
11+
add_subdirectory(haswell)
12+
endif()

config/haswell/CMakeLists.txt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
##Copyright (C) 2020, Advanced Micro Devices, Inc ##
2+
3+
set(FILES
4+
${CMAKE_CURRENT_SOURCE_DIR}/bli_cntx_init_haswell.c
5+
${CMAKE_CURRENT_SOURCE_DIR}/bli_family_haswell.h
6+
)
7+
8+
set(SUBDIRECTORIES "")
9+
set(RELATIVE_PATH "haswell")
10+
11+
#Add all subdirectories
12+
foreach(VAR ${SUBDIRECTORIES})
13+
add_subdirectory(${VAR})
14+
endforeach()
15+
16+
if(FILES)
17+
#Add source files to target
18+
target_sources("${PROJECT_NAME}" PRIVATE ${FILES})
19+
20+
#Install our source files
21+
install(FILES ${FILES} DESTINATION ${RELATIVE_PATH})
22+
endif()

config/zen/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
##Copyright (C) 2020, Advanced Micro Devices, Inc ##
2+
3+
target_sources("${PROJECT_NAME}" PRIVATE
4+
${CMAKE_CURRENT_SOURCE_DIR}/bli_cntx_init_zen.c
5+
${CMAKE_CURRENT_SOURCE_DIR}/bli_family_zen.h
6+
)

config/zen2/CMakeLists.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
##Copyright (C) 2020, Advanced Micro Devices, Inc ##
2+
3+
target_sources("${PROJECT_NAME}"
4+
PRIVATE
5+
${CMAKE_CURRENT_SOURCE_DIR}/bli_cntx_init_zen2.c
6+
${CMAKE_CURRENT_SOURCE_DIR}/bli_family_zen2.h
7+
)

frame/0/CMakeLists.txt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
##Copyright (C) 2020, Advanced Micro Devices, Inc ##
2+
3+
target_sources("${PROJECT_NAME}"
4+
PRIVATE
5+
${CMAKE_CURRENT_SOURCE_DIR}/bli_l0.h
6+
${CMAKE_CURRENT_SOURCE_DIR}/bli_l0_check.c
7+
${CMAKE_CURRENT_SOURCE_DIR}/bli_l0_check.h
8+
${CMAKE_CURRENT_SOURCE_DIR}/bli_l0_fpa.c
9+
${CMAKE_CURRENT_SOURCE_DIR}/bli_l0_fpa.h
10+
${CMAKE_CURRENT_SOURCE_DIR}/bli_l0_ft.h
11+
${CMAKE_CURRENT_SOURCE_DIR}/bli_l0_oapi.c
12+
${CMAKE_CURRENT_SOURCE_DIR}/bli_l0_oapi.h
13+
${CMAKE_CURRENT_SOURCE_DIR}/bli_l0_tapi.c
14+
${CMAKE_CURRENT_SOURCE_DIR}/bli_l0_tapi.h
15+
)
16+
17+
add_subdirectory(copysc)

frame/0/copysc/CMakeLists.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
##Copyright (C) 2020, Advanced Micro Devices, Inc ##
2+
3+
target_sources("${PROJECT_NAME}"
4+
PRIVATE
5+
${CMAKE_CURRENT_SOURCE_DIR}/bli_copysc.c
6+
${CMAKE_CURRENT_SOURCE_DIR}/bli_copysc.h
7+
)

0 commit comments

Comments
 (0)