This repository has been archived by the owner on May 13, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathsetenv.sh
executable file
·201 lines (170 loc) · 8.56 KB
/
setenv.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
#!/bin/bash
function show_usage {
echo "DevCloud usage:"
echo " source setenv.sh devcloud oneapi fpga"
echo " source setenv.sh devcloud opencl fpga"
echo " source setenv.sh devcloud cm (gen9 | gen12)"
echo "Local usage:"
echo " source setenv.sh local opencl fpga # Only this local configuration supported so far"
}
if [ $0 == $BASH_SOURCE ]; then
echo "This script should be sourced, not run."
exit
fi
if [ "$1" != "devcloud" -a "$1" != "local" ]; then
show_usage
return
fi
if [ "$1" == "devcloud" ]; then
if [ "$HOSTNAME" == "login-2" ]; then
echo "Error: The script should be run on a compute node of DevCloud or a local machine, not on the head node of DevCloud (login-2)."
return
fi
fi
if [ "$1" == "local" ]; then
if [ "$2" != "opencl" -o "$3" != "fpga" ]; then
show_usage
return
fi
fi
if [ "$2" != "oneapi" -a "$2" != "opencl" -a "$2" != "cm" ]; then
show_usage
return
fi
if [ "$3" != "fpga" -a "$3" != "gen9" -a "$3" != "gen12" ]; then
show_usage
return
fi
if [ "$2" == "oneapi" -a "$3" != "fpga" ]; then
show_usage
return
fi
if [ "$2" == "opencl" -a "$3" != "fpga" ]; then
show_usage
return
fi
if [ "$2" == "cm" -a "$3" != "gen9" -a "$3" != "gen12" ]; then
show_usage
return
fi
export T2S_PATH="$( cd "$(dirname $(realpath "$BASH_SOURCE") )" >/dev/null 2>&1 ; pwd -P )" # The path to this script
TOOLS_PATH=$T2S_PATH/install
# Modify these 3 paths if you installed your own versions of gcc or llvm-clang
# gcc should be located at $GCC_PATH/bin
GCC_PATH=$TOOLS_PATH/gcc-7.5.0
export LLVM_CONFIG=$TOOLS_PATH/bin/llvm-config
export CLANG=$TOOLS_PATH/bin/clang
if [ "$1" = "local" -a "$3" = "fpga" ]; then
# Modify according to your machine's setting
ALTERA_PATH=$HOME/intelFPGA_pro
AOCL_VERSION=19.1
FPGA_BOARD_PACKAGE=a10_ref
export FPGA_BOARD=a10gx
export LM_LICENSE_FILE=1800@altera02p.elic.intel.com
fi
#### No need to change below this point ##########
if [ "$1" = "local" -a "$2" = "opencl" -a "$3" = "fpga" ]; then
# Intel OpenCL related setting
export ALTERAOCLSDKROOT=$ALTERA_PATH/$AOCL_VERSION/hld
export INTELFPGAOCLSDKROOT=$ALTERAOCLSDKROOT
export AOCL_SO=$ALTERAOCLSDKROOT/host/linux64/lib/libalteracl.so
export AOCL_BOARD_SO=$ALTERA_PATH/$AOCL_VERSION/hld/board/${FPGA_BOARD_PACKAGE}/linux64/lib/libaltera_${FPGA_BOARD_PACKAGE}_mmd.so
export AOCL_LIBS="-L$ALTERA_PATH/$AOCL_VERSION/hld/board/${FPGA_BOARD_PACKAGE}/host/linux64/lib -L$ALTERA_PATH/$AOCL_VERSION/hld/board/${FPGA_BOARD_PACKAGE}/linux64/lib -L$ALTERA_PATH/$AOCL_VERSION/hld/host/linux64/lib -Wl,--no-as-needed -lalteracl -laltera_${FPGA_BOARD_PACKAGE}_mmd"
export QSYS_ROOTDIR=$ALTERAOCLSDKROOT/../qsys/bin
export QUARTUS_ROOTDIR_OVERRIDE=$ALTERAOCLSDKROOT/../quartus
export LD_LIBRARY_PATH=$ALTERAOCLSDKROOT/host/linux64/lib:$ALTERAOCLSDKROOT/board/${FPGA_BOARD_PACKAGE}/linux64/lib:$LD_LIBRARY_PATH
export PATH=$QUARTUS_ROOTDIR_OVERRIDE/bin:$ALTERAOCLSDKROOT/bin:$PATH
source $ALTERAOCLSDKROOT/init_opencl.sh
unset CL_CONTEXT_EMULATOR_DEVICE_ALTERA
export EMULATOR_LIBHALIDE_TO_LINK="-lHalide"
export HW_LIBHALIDE_TO_LINK="-lHalide"
fi
if [ "$1" = "devcloud" -a "$2" = "opencl" -a "$3" = "fpga" ]; then
if [ -f /data/intel_fpga/devcloudLoginToolSetup.sh ]; then
source /data/intel_fpga/devcloudLoginToolSetup.sh
fi
pbsnodes -s v-qsvr-fpga $(hostname) >& tmp.txt
if grep "fpga,arria10" tmp.txt; then
tools_setup -t A10DS 1.2.1
export FPGA_BOARD=pac_a10
else
if grep "fpga,darby" tmp.txt; then
tools_setup -t S10DS
export FPGA_BOARD=pac_s10_dc
else
echo The current compute node does not have either an A10 or an S10 card with it.
echo Please choose another compute node from 'Nodes with Arria 10 Release 1.2.1',
echo or 'Nodes with Stratix 10', without OneAPI
return
fi
fi
export AOCL_SO=$ALTERAOCLSDKROOT/host/linux64/lib/libalteracl.so
export AOCL_BOARD_SO=$AOCL_BOARD_PACKAGE_ROOT/linux64/lib/libintel_opae_mmd.so
export AOCL_LIBS="-L$INTELFPGAOCLSDKROOT/linux64/lib -L$AOCL_BOARD_PACKAGE_ROOT/linux64/lib -L$INTELFPGAOCLSDKROOT/host/linux64/lib -Wl,--no-as-needed -lalteracl -lintel_opae_mmd"
# The aoc on DevCloud has an LLVM whose version is different from that of the LLVM libHalide.so has linked with. Consequently, calling
# aoc dynamically will have two LLVMs messed up: the aoc has some LLVM calls to some symbols that are not resolved to be in the aoc linked
# LLVM, but instead the libHalide.so linked LLVM, because libHalide.so was loaded the first.
# Using the static libHalide.a instead of th dynamic libHalide.so is the only solution we found so far.
export EMULATOR_LIBHALIDE_TO_LINK="$T2S_PATH/Halide/lib/libHalide.a"
export HW_LIBHALIDE_TO_LINK="$T2S_PATH/Halide/lib/libHalide.a $AOCL_LIBS"
source /glob/development-tools/versions/intel-parallel-studio-2019/debugger_2019/bin/debuggervars.sh
alias gdb='gdb-ia'
# Figure out the emulator and hardware run platform
AOC_VERSION=$(aoc -version | grep -E 'Version\ [^[:space:]]*' -o |grep -E '[0-9]+[\.[0-9]+]*' -o)
OLDER_VERSION=0
if [ "$AOC_VERSION" != "19.4.0" ]; then
if [ $(printf '%s\n' "$AOC_VERSION" "19.4.0" | sort -V | head -n1) == "$AOC_VERSION" ]; then
# aoc is a version older than 19.4.0.
OLDER_VERSION=1
fi
fi
if [ "$OLDER_VERSION" == "1" ]; then
export EMULATOR_PLATFORM="Intel(R) FPGA SDK for OpenCL(TM)"
else
export EMULATOR_PLATFORM="Intel(R) FPGA Emulation Platform for OpenCL(TM)"
fi
export HW_PLATFORM="Intel(R) FPGA SDK for OpenCL(TM)"
# Figure out aoc options for emulator
if [ "$AOC_VERSION" != "19.2.0" ]; then
export EMULATOR_AOC_OPTION="-march=emulator"
else
export EMULATOR_AOC_OPTION="-march=emulator -legacy-emulator"
fi
fi
if [ "$1" = "devcloud" -a "$2" = "oneapi" -a "$3" = "fpga" ]; then
pbsnodes $(hostname) >& tmp.txt
if [ "$(grep -c "fpga_runtime" tmp.txt)" -eq 0 ]; then
echo Warning: This compute node does not have FPGA runtime.
fi
export EMULATOR_LIBHALIDE_TO_LINK="$T2S_PATH/Halide/lib/libHalide.a"
export HW_LIBHALIDE_TO_LINK="$T2S_PATH/Halide/lib/libHalide.a"
fi
if [ "$1" = "devcloud" -a "$2" = "cm" ]; then
if [ "$3" = "gen9" ]; then
export CM_ROOT=$T2S_PATH/install/Linux_C_for_Metal_Development_Package_20200119
export LIBVA_DRIVERS_PATH=$CM_ROOT/drivers/media_driver/release/extract/usr/lib/x86_64-linux-gnu/dri
export PATH=$CM_ROOT/compiler/bin:$PATH
export LD_LIBRARY_PATH=$CM_ROOT/drivers/IGC/extract/usr/local/lib:$CM_ROOT/drivers/media_driver/release/extract/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
fi
export HW_LIBHALIDE_TO_LINK="-lHalide"
fi
#A place to store generated Intel OpenCL files
mkdir -p ~/tmp
# Add tools
export PATH=$TOOLS_PATH/bin:$PATH
export LD_LIBRARY_PATH=$TOOLS_PATH/lib64:$TOOLS_PATH/lib:$LD_LIBRARY_PATH
# Add gcc
export PATH=$GCC_PATH/bin:$PATH
export LD_LIBRARY_PATH=$GCC_PATH/bin:$GCC_PATH/lib64:$LD_LIBRARY_PATH
# Add Halide
export PATH=$T2S_PATH/Halide/bin:$PATH
export LD_LIBRARY_PATH=$T2S_PATH/Halide/bin:$LD_LIBRARY_PATH
# Common options for compiling a specification
export COMMON_OPTIONS_COMPILING_SPEC="-I $T2S_PATH/Halide/include -L $T2S_PATH/Halide/bin -lz -lpthread -ldl -std=c++11"
# Common options for running a specification to synthesize a kernel for emulation or execution
export COMMON_AOC_OPTION_FOR_EMULATION="$EMULATOR_AOC_OPTION -board=$FPGA_BOARD -emulator-channel-depth-model=strict"
export COMMON_AOC_OPTION_FOR_EXECUTION="-v -profile -fpc -fp-relaxed -board=$FPGA_BOARD"
# Common options for comping a host file
export COMMON_OPTIONS_COMPILING_HOST="$T2S_PATH/t2s/src/AOT-OpenCL-Runtime.cpp $T2S_PATH/t2s/src/Roofline.cpp $T2S_PATH/t2s/src/SharedUtilsInC.cpp -DLINUX -DALTERA_CL -fPIC -I$T2S_PATH/t2s/src/ -I $T2S_PATH/Halide/include -I$INTELFPGAOCLSDKROOT/examples_aoc/common/inc $INTELFPGAOCLSDKROOT/examples_aoc/common/src/AOCLUtils/opencl.cpp $INTELFPGAOCLSDKROOT/examples_aoc/common/src/AOCLUtils/options.cpp -I$INTELFPGAOCLSDKROOT/host/include -L$INTELFPGAOCLSDKROOT/linux64/lib -L$AOCL_BOARD_PACKAGE_ROOT/linux64/lib -L$INTELFPGAOCLSDKROOT/host/linux64/lib -lOpenCL -L $T2S_PATH/Halide/bin -lelf -lz -lpthread -ldl -std=c++11"
export COMMON_OPTIONS_COMPILING_HOST_FOR_EMULATION="$COMMON_OPTIONS_COMPILING_HOST $EMULATOR_LIBHALIDE_TO_LINK"
export COMMON_OPTIONS_COMPILING_HOST_FOR_EXECUTION="$COMMON_OPTIONS_COMPILING_HOST $HW_LIBHALIDE_TO_LINK"