Makefile 18.9 KB
Newer Older
1
2
3
# All included makefiles refer to 
# the official SDAccel GitHub repository / aws_2017.4 branch.
# These are not modified at all. In case custom configuration is required, 
Leonardo Solis's avatar
Leonardo Solis committed
4
# the corresponding vars of these makefiles are modified from here.
5
COMMON_REPO := ../SDAccel_Examples
lvs's avatar
lvs committed
6

7
# Common Includes
lvs's avatar
lvs committed
8
9
10
11
include $(COMMON_REPO)/utility/boards.mk
include $(COMMON_REPO)/libs/xcl2/xcl2.mk
include $(COMMON_REPO)/libs/opencl/opencl.mk

12
13
# Added to fix the unnecessarily required pointer 
# to global memory in each kernel
Leonardo Solis's avatar
Leonardo Solis committed
14
DUMMYGLOBPOINTER_FLAGS=
lvs's avatar
lvs committed
15

16
ifeq ($(TARGETS), sw_emu)
Leonardo Solis's avatar
Leonardo Solis committed
17
	DUMMYGLOBPOINTER_FLAGS=-DSW_EMU
18
endif
lvs's avatar
lvs committed
19

20
# Enable Kernels
Leonardo Solis's avatar
Leonardo Solis committed
21
22
23
24
25
26
27
28
ENABLE_KERNELS = -DENABLE_KRNL_GA \
		 -DENABLE_KRNL_CONFORM \
		 -DENABLE_KRNL_INTERE \
		 -DENABLE_KRNL_INTRAE \
		 -DENABLE_KRNL_PRNG_BT_USHORT_FLOAT \
		 -DENABLE_KRNL_PRNG_GG_UCHAR \
		 -DENABLE_KRNL_PRNG_GG_FLOAT \
		 -DENABLE_KRNL_IGL_ARBITER
29
30
31
32
33
34
35

# Fixed-point
# FIxed-POint COform flag (FIPOCO)
FIXED_POINT_CONFORM=NO
FIXED_POINT_INTERE=NO
FIXED_POINT_INTRAE=NO

Leonardo Solis's avatar
Leonardo Solis committed
36
ifeq ($(FIXED_POINT_CONFORM), YES) 
37
38
39
40
41
	FIPOCO_FLAG=-DFIXED_POINT_CONFORM
else	
	FIPOCO_FLAG=
endif

Leonardo Solis's avatar
Leonardo Solis committed
42
ifeq ($(FIXED_POINT_INTERE), YES) 
43
	FIPOIE_FLAG=-DFIXED_POINT_INTERE
Leonardo Solis's avatar
Leonardo Solis committed
44
else
45
46
47
48
49
50
51
52
53
	FIPOIE_FLAG=
endif

ifeq ($(FIXED_POINT_INTRAE), YES)
	FIPOIA_FLAG=-DFIXED_POINT_INTRAE
else	
	FIPOIA_FLAG=
endif

Leonardo Solis's avatar
Leonardo Solis committed
54
55
FIPO_FLAG = $(FIPOCO_FLAG) \
	    $(FIPOIE_FLAG) \
56
	    $(FIPOIA_FLAG)
57

Leonardo Solis's avatar
Leonardo Solis committed
58
# Other configs
59
60


Leonardo Solis's avatar
Leonardo Solis committed
61
# Overall custom configs
62
CONFIG_FLAG = $(FIPO_FLAG)
63

Leonardo Solis's avatar
Leonardo Solis committed
64
CXXFLAGS:=-Wall -O0 -g -std=c++14 $(DUMMYGLOBPOINTER_FLAGS)
65
66

# Host Application
lvs's avatar
lvs committed
67

68
hostbin_SRCS=$(wildcard ./host/src/*.cpp) \
lvs's avatar
lvs committed
69
70
71
		$(oclHelper_SRCS) \
		$(xcl2_SRCS)

lvs's avatar
lvs committed
72
hostbin_HDRS=$(wildcard ./host/inc/*.h) \
lvs's avatar
lvs committed
73
74
75
76
		$(xcl2_HDRS)

# -U__STRICT_ANSI__: to avoid: ‘cl_float3 {aka union cl_float4}’ has no member named ‘y’

77
hostbin_CXXFLAGS=   -I./host/inc/ \
lvs's avatar
lvs committed
78
79
80
81
82
		    -I. \
		    $(opencl_CXXFLAGS) $(xcl2_CXXFLAGS) $(oclHelper_CXXFLAGS) \
		    -std=c++0x \
		    -U__STRICT_ANSI__ \
		    $(ENABLE_KERNELS) \
Leonardo Solis's avatar
Leonardo Solis committed
83
84
	            $(CONFIG_FLAG)
   
Leonardo Solis's avatar
Leonardo Solis committed
85
hostbin_LDFLAGS=$(opencl_LDFLAGS) -lrt
lvs's avatar
lvs committed
86

lvs's avatar
lvs committed
87
EXES=hostbin
lvs's avatar
lvs committed
88
89

# Kernel
lvs's avatar
lvs committed
90
Krnl_GA_SRCS=./device/Krnl_GA.cl
lvs's avatar
lvs committed
91

Leonardo Solis's avatar
Leonardo Solis committed
92
# Custom configuration of vars within: boards.mk
Leonardo Solis's avatar
Leonardo Solis committed
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#CLFLAGS= --xp "param:compiler.version=31" \
#	 --xp "param:compiler.preserveHlsOutput=1" \
#	 --xp "param:compiler.generateExtraRunData=true" \
#	 -s -g -I./ -I../ -I./device \
#	 $(CONFIG_FLAG) \
#	 $(DUMMYGLOBPOINTER_FLAGS)

# Kernel "-g" debug option must be added 
# only for sw-emu and hw-emu, not hw
# UG1023: SDAccel Debug Command Line Flow / Preparing the Kernel
KERNELDEBUG_FLAGS=

ifeq ($(TARGETS), sw_emu)
	KERNELDEBUG_FLAGS=-g
else
	ifeq ($(TARGETS), hw_emu)
		KERNELDEBUG_FLAGS=-g
	endif
endif

Leonardo Solis's avatar
Leonardo Solis committed
113
114
115
CLFLAGS= --xp "param:compiler.version=31" \
	 --xp "param:compiler.preserveHlsOutput=1" \
	 --xp "param:compiler.generateExtraRunData=true" \
Leonardo Solis's avatar
Leonardo Solis committed
116
	 -s -I./ -I../ -I./device \
Leonardo Solis's avatar
Leonardo Solis committed
117
	 $(CONFIG_FLAG) \
Leonardo Solis's avatar
Leonardo Solis committed
118
119
120
	 $(DUMMYGLOBPOINTER_FLAGS) \
	 $(KERNELDEBUG_FLAGS)

121
122
LDCLFLAGS=$(CLFLAGS)

Leonardo Solis's avatar
Leonardo Solis committed
123
# Custom configuration of vars within: opencl.mk
124
125
opencl_LDFLAGS=-L$(OPENCL_LIB) -L$(SDA_LIB) -lxilinxopencl -pthread

Leonardo Solis's avatar
Leonardo Solis committed
126
127
128
# Enable in evaluation & disable previous one
#opencl_LDFLAGS=-L$(OPENCL_LIB) -L$(SDA_LIB) -lOpenCL -pthread

129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#-------------------------------
# AWS only: apply the following 
# kernel compile & link configuration options

# Otherwise error during VPL
# "dr.bd.tcl" seems to be using a configuration for VCU1525
# instead for AWS VU9P

# Problem reported here:
# https://forums.xilinx.com/t5/SDAccel/Building-ERROR-VPL-17-55-set-property-expects-at-least-one/td-p/893221

# AWS reference guide
# https://github.com/aws/aws-fpga/blob/master/SDAccel/docs/On_Premises_Development_Steps.md
# aws-fpga/SDAccel/examples/aws/kernel_3ddr_bandwidth/Makefile

# https://www.xilinx.com/support/documentation/sw_manuals/xilinx2017_2/ug1023-sdaccel-user-guide.pdf
# Page 33 (could not find in the v2017.4)
# --max_memory_ports [all | <kernel_name>]
# Optional
# Sets the maximum memory port property 
# for all kernels or a given kernel

151
152
## Commented because it is example
## Choosing the "bandwidth" kernel for maximum memory port property 
153
154
# krnl_GA_CLFLAGS=--max_memory_ports bandwidth

155
156
157
158
## Commented because not all kernels in design need that
## Choosing the all kernels in design for maximum memory port property 
# Krnl_GA_CLFLAGS=--max_memory_ports all

159
160
161
162
163
164
## Ideal configuration, but results in routing error
#Krnl_GA_CLFLAGS=--max_memory_ports Krnl_GA \
#		--max_memory_ports Krnl_Conform \
#		--max_memory_ports Krnl_InterE \
#		--max_memory_ports Krnl_IntraE

165
Krnl_GA_CLFLAGS=--max_memory_ports Krnl_GA
166
167
168
169
170
171
172
173

# https://www.xilinx.com/support/documentation/sw_manuals/xilinx2017_4/ug1023-sdaccel-user-guide.pdf
# Page 44
# --sp <kernel_inst_name>.<interface_name>:<bank>
# Valid DDR4 bank names are 
# bank0, bank1, bank2, and bank3 
# for platforms with 4 DDR banks.

Leonardo Solis's avatar
Leonardo Solis committed
174
175
176
177
178
#Krnl_GA_LDCLFLAGS+=--sp Krnl_GA_1.m_axi_gmem:bank0      \
#		   --sp Krnl_Conform_1.m_axi_gmem:bank1 \
#		   --sp Krnl_InterE_1.m_axi_gmem:bank2  \
#		   --sp Krnl_IntraE_1.m_axi_gmem:bank3

179
180
181
182
183
184
185
186
187
188
#Krnl_GA_LDCLFLAGS+=--sp Krnl_GA_1.m_axi_gmem:bank0      \
#		   --sp Krnl_Conform_1.m_axi_gmem:bank0 \
#		   --sp Krnl_InterE_1.m_axi_gmem:bank1  \
#		   --sp Krnl_IntraE_1.m_axi_gmem:bank1

Krnl_GA_LDCLFLAGS+=--sp Krnl_GA_1.m_axi_gmem0:bank0 \
		   --sp Krnl_GA_1.m_axi_gmem1:bank2 \
	           --sp Krnl_GA_1.m_axi_gmem2:bank2 \
	           --sp Krnl_GA_1.m_axi_gmem3:bank2 \
                   --sp Krnl_GA_1.m_axi_gmem4:bank2 \
Leonardo Solis's avatar
Leonardo Solis committed
189
190
		   --sp Krnl_Conform_1.m_axi_gmem:bank0 \
		   --sp Krnl_InterE_1.m_axi_gmem:bank1  \
191
192
193
194
195
		   --sp Krnl_IntraE_1.m_axi_gmem:bank1  \
		   --sp Krnl_IGL_Arbiter_1.m_axi_gmem:bank3 \
		   --sp Krnl_Prng_BT_ushort_float_1.m_axi_gmem:bank3 \
                   --sp Krnl_Prng_GG_uchar_1.m_axi_gmem:bank3 \
		   --sp Krnl_Prng_GG_float_1.m_axi_gmem:bank3
Leonardo Solis's avatar
Leonardo Solis committed
196

197
198
199
200
201
202
203
204
##
# https://www.xilinx.com/support/documentation/sw_manuals/xilinx2017_4/ug1281-sdaccel-debugging-guide.pdf
# Page 32
# Instrumentation 1: Kernel Hangs due to AXI Violations
##

# Add Lightweight AXI Protocol Checker (lapc)
# <protocol:< compute_unit_name >:< interface_name >>
205
206
# To see kernel interfaces, check <ports> </ports> field within: 
# _xocc_compile_<>/impl/kernels/<MYKERNEL>/<MYKERNEL>/kernel.xml
207
208
209
LAPC:=none

ifneq ($(LAPC),none)
210
211
212

## Commented because error was obtained:
## Number of axi protocol checkers requested must be between 1 and 63.
213
214
#Krnl_GA_LDCLFLAGS+=--dk protocol:all:all

215
216
217
## Warning obtained (not sure if because of configuration)
## # xbsak status --lapc
## Invalid codes read, skip decoding
218
219
220
221
222
223
224
225
226
227
228
229
230

## Valid config for ga-sdx174, 
## but commented because something more ambicious can be done
#Krnl_GA_LDCLFLAGS+=--dk protocol:Krnl_GA_1:m_axi_gmem \
#		   --dk protocol:Krnl_Conform_1:m_axi_gmem \
#                  --dk protocol:Krnl_InterE_1:m_axi_gmem \
#	           --dk protocol:Krnl_IntraE_1:m_axi_gmem

Krnl_GA_LDCLFLAGS+=--dk protocol:Krnl_GA_1:all \
		   --dk protocol:Krnl_Conform_1:all \
                   --dk protocol:Krnl_InterE_1:all \
	           --dk protocol:Krnl_IntraE_1:all

231
232
233
234
235
236
237
238
239
240
241
242
## Commented because error was obtained:
## No interface pins matched 'get_bd_intf_pins -of /Krnl_Conform_1 -filter NAME=~m_axi_gmem'
## ERROR: caught error: Unable to find interface pin  for AXI protocol checker insertion
#Krnl_GA_LDCLFLAGS+=--dk protocol:Krnl_GA_1:m_axi_gmem \
#		   --dk protocol:Krnl_Conform_1:m_axi_gmem \
#                  --dk protocol:Krnl_InterE_1:m_axi_gmem \
#	           --dk protocol:Krnl_IntraE_1:m_axi_gmem
endif

## Adding Performance Monitors (spm) 
## enables the listing of detailed communication statistics (counters). 
## --profile_kernel data:<kernel_name|all>:<cu_name|all>:<interface_name|all>
243
244
# To see kernel interfaces, check <ports> </ports> field within: 
# _xocc_compile_<>/impl/kernels/<MYKERNEL>/<MYKERNEL>/kernel.xml
245
246
247
248
249
SPM:=none

ifneq ($(SPM),none)
##--profile_kernel data:krnl1:cu1:m_axi_gmem0
##--profile_kernel data:krnl2:cu2:m_axi_gmem
250
251
252
253
254
255
256
257
258
259
260
261
262
263
#Krnl_GA_LDCLFLAGS+=--profile_kernel data:Krnl_GA:Krnl_GA_1:all \
#		   --profile_kernel data:Krnl_Conform:Krnl_Conform_1:all \
#		   --profile_kernel data:Krnl_InterE:Krnl_InterE_1:all \
#		   --profile_kernel data:Krnl_IntraE:Krnl_IntraE_1:all

Krnl_GA_LDCLFLAGS+=\
--profile_kernel data:Krnl_GA:Krnl_GA_1:all \
--profile_kernel data:Krnl_Conform:Krnl_Conform_1:all \
--profile_kernel data:Krnl_InterE:Krnl_InterE_1:all \
--profile_kernel data:Krnl_IntraE:Krnl_IntraE_1:all \
--profile_kernel data:Krnl_IGL_Arbiter:Krnl_IGL_Arbiter_1:all \
--profile_kernel data:Krnl_Prng_BT_ushort_float:Krnl_Prng_BT_ushort_float_1:all \
--profile_kernel data:Krnl_Prng_GG_uchar:Krnl_Prng_GG_uchar_1:all \
--profile_kernel data:Krnl_Prng_GG_float:Krnl_Prng_GG_float_1:all
264
265
endif

266
267
268
269
#-------------------------------



270

lvs's avatar
lvs committed
271
XOS=Krnl_GA
lvs's avatar
lvs committed
272

lvs's avatar
lvs committed
273
Krnl_GA_XOS=Krnl_GA
lvs's avatar
lvs committed
274

lvs's avatar
lvs committed
275
XCLBINS=Krnl_GA
lvs's avatar
lvs committed
276
277

# check
lvs's avatar
lvs committed
278
279
check_EXE=hostbin
check_XCLBINS=Krnl_GA
lvs's avatar
lvs committed
280
281
282
CHECKS=check

include $(COMMON_REPO)/utility/rules.mk
lvs's avatar
lvs committed
283

284
285
286
287
288
289
290
# Note that the definition of "newline" contains two blank lines.
# Using $(newline) will expand into only one newline.
define newline


endef

291
292
293
294
295
# Docking parameters 
# that directly determine the execution time
# Following values are used only for emulation
# to have a short but still a representative test
PDB  := 1stp
296
PSIZE:= 150
Leonardo Solis's avatar
Leonardo Solis committed
297
298
299
NRUN := 10
NEV  := 800000
NGEN := 27000
300
GFPOP:= 0
301

302
303
304
# Switching to the other SDAccel 2017.4 default platform
# As it is available in Xelera "saruman" server
#DEVICES:= xilinx:kcu1500:dynamic (in ../common_xilinx/utility/boards.mk)
Leonardo Solis's avatar
Leonardo Solis committed
305

306
307
# Boards in SDAccel installation path: /opt/cad/xilinx/SDx/2017.4/platforms/

Leonardo Solis's avatar
Leonardo Solis committed
308
309
# If several versions are present, e.g.: "vcu1525_5_0" and "vcu1525_5_1"
# Pay attention to which should be used
310
#BOARD:= xilinx:kcu1500:dynamic
Leonardo Solis's avatar
Leonardo Solis committed
311
312
313
#BOARD:= xilinx:vcu1525:dynamic

# Boards in external paths
314
315
316
317
318
319
320
321
322
323
324

# Cloned from https://github.com/aws/aws-fpga
# This corresponds to AWS Shell v04261818 
# https://github.com/aws/aws-fpga/blob/master/hdk/docs/AWS_Shell_RELEASE_NOTES.md
# IMPORTANT: source scripts to get the full DSA
# Because by default only the "sw" component is provided in GitHub
#BOARD:= /home/wimi/lvs/ocl_xilinx/aws-fpga/SDAccel/aws_platform/xilinx_aws-vu9p-f1-04261818_dynamic_5_0/xilinx_aws-vu9p-f1-04261818_dynamic_5_0.xpfm
BOARD:= /home/wimi/lvs/DSA_SDACCEL_AWS_VU9P/xilinx_aws-vu9p-f1-04261818_dynamic_5_0/xilinx_aws-vu9p-f1-04261818_dynamic_5_0.xpfm

# Copied from Xelera (saruman) SDAccel installation path
#BOARD:= /home/wimi/lvs/DSA_SDACCEL_AWS_VU9P/xilinx_aws-vu9p-f1_dynamic_5_0/xilinx_aws-vu9p-f1_dynamic_5_0.xpfm
325
#BOARD:= /home/wimi/lvs/DSA_SDACCEL_VCU1525_5_1/xilinx_vcu1525_dynamic_5_1/xilinx_vcu1525_dynamic_5_1.xpfm
326
#BOARD:= /opt/cad/xilinx/SDx/2017.1/platforms/xilinx_adm-pcie-7v3_1ddr_3_0/xilinx_adm-pcie-7v3_1ddr_3_0.xpfm
Leonardo Solis's avatar
Leonardo Solis committed
327

328
329
NDEVICES_EMU:=1

330

331
332
333
334
# Compile and generate report
kerrpt-sw:
	make clean
	@echo $(newline)
335
	make all REPORT=estimate TARGETS=sw_emu DEVICES=$(BOARD)
336
337
338
339
340
	@echo $(newline)
	cp ./xclbin/$(XCLBINS).sw_emu.*.xclbin .
	@echo $(newline)
	mv ./$(XCLBINS).sw_emu.*.xclbin ./$(XCLBINS).xclbin
	@echo $(newline)
341
342
343
	@echo "==============================================================================="
	@echo "INFO: sw emulation file created under: \"./xclbin/$(XCLBINS).sw_emu.*.xclbin\" "
	@echo "INFO: ... was copied and renamed as \"./$(XCLBINS).xclbin\"                    "
344
	@echo $(newline)
345
346
	@echo "INFO: a \"./system_estimate.xtxt\" report was generated!                       "
	@echo "==============================================================================="
347
348
	@echo $(newline)

349

350
# Compile for sw and hw emulation
351
kerswemu:
352
	make all TARGETS=sw_emu DEVICES=$(BOARD)
353
	@echo $(newline)
354
355
356
	@echo "==============================================================================="
	@echo "INFO: sw emulation file created under: \"./xclbin/$(XCLBINS).sw_emu.*.xclbin\" "
	@echo "==============================================================================="
357
	@echo $(newline)
358

359

360
kerhwemu:
361
	make all TARGETS=hw_emu	DEVICES=$(BOARD)
362
	@echo $(newline)
363
364
365
	@echo "==============================================================================="
	@echo "INFO: hw emulation file created under: \"./xclbin/$(XCLBINS).hw_emu.*.xclbin\" "
	@echo "==============================================================================="
366
	@echo $(newline)
367

368

369
370
371
# Run emulation
# Compilation (host & device) if not done previously
# The .dlg file is written in ./
lvs's avatar
lvs committed
372
# "exe" and "xclbin" are rules from "rules.mk"
373
374
# SDAccel 2017.4: User Guide UG1023, "Running Software and Hardware Emulation in XOCC Flow"
#emconfigutil --platform xilinx_vcu1525_dynamic_5_0 --nd 1
375
swemu: kerswemu
376
	emconfigutil --platform $(BOARD) --nd $(NDEVICES_EMU)
377
378
379
380
	XCL_EMULATION_MODE=sw_emu ./$(EXES) \
	-ffile input/$(PDB)/derived/$(PDB)_protein.maps.fld \
	-lfile input/$(PDB)/derived/$(PDB)_ligand.pdbqt \
	-psize $(PSIZE) -nrun $(NRUN) -nev $(NEV) -ngen $(NGEN) -gfpop 1
381
	@echo $(newline)
Leonardo Solis's avatar
Leonardo Solis committed
382
383
	@echo "===================================================================================="
	@echo "INFO: swemu log file is under: \"./docking.dlg\"                                    "
384
	@echo $(newline)
Leonardo Solis's avatar
Leonardo Solis committed
385
386
	@echo "INFO: profile and timeline trace report files are formatted for SDx GUI             "
	@echo "INFO: ... if reports not generated, verify that \"sdaccel.ini\" exists!             "
387
388
389
390
	@echo $(newline)
	sdx_analyze profile sdaccel_profile_summary.csv
	@echo $(newline)
	sdx_analyze trace sdaccel_timeline_trace.csv
Leonardo Solis's avatar
Leonardo Solis committed
391
392
393
	@echo $(newline)
	@echo "INFO: (1) open sdx, (2) select \"File->Open File\", (3) browse to *.xprf or *.wdb  "
	@echo "===================================================================================="
394
395
	@echo $(newline)

396
397
398
399
400
401
402
403
404
405
406
407
408
409
# Debug on software using Xilinx GDB
# Analyze hangs with the following gdb extensions:
# xprint queue [<cl_command_queue>]
# xprint event <cl_event>
# xprint mem [<cl_mem>]
# xprint kernel
# xprint all
swemudebug:
	xgdb --args \
	./$(EXES) \
	-ffile input/$(PDB)/derived/$(PDB)_protein.maps.fld \
	-lfile input/$(PDB)/derived/$(PDB)_ligand.pdbqt \
	-psize $(PSIZE) -nrun $(NRUN) -nev $(NEV) -ngen $(NGEN) -gfpop 1

410

411
hwemu: kerhwemu
412
	emconfigutil --platform $(BOARD) --nd $(NDEVICES_EMU)
413
414
415
416
	XCL_EMULATION_MODE=hw_emu ./$(EXES) \
	-ffile input/$(PDB)/derived/$(PDB)_protein.maps.fld \
	-lfile input/$(PDB)/derived/$(PDB)_ligand.pdbqt \
	-psize $(PSIZE) -nrun $(NRUN) -nev $(NEV) -ngen $(NGEN) -gfpop 1
417
	@echo $(newline)
418
419
	@echo "==========================================================================="
	@echo "INFO: hwemu log file is under: \"./docking.dlg\"                           "
420
	@echo $(newline)
421
422
	@echo "INFO: profile and timeline trace report files are formatted for SDx GUI    "
	@echo "INFO: ... if reports not generated, verify that \"sdaccel.ini\" exists!    "
423
424
425
426
	@echo $(newline)
	sdx_analyze profile sdaccel_profile_summary.csv
	@echo $(newline)
	sdx_analyze trace sdaccel_timeline_trace.csv
427
	@echo "==========================================================================="
428
	@echo $(newline)
429

430

431
432
433
# Build hw (FPGA bitstream)
# NOT integrated yet in a multistep compilation
hw: 	
434
	make all TARGETS=hw DEVICES=$(BOARD)
435
	@echo $(newline)
436
437
438
	@echo "========================================================================="
	@echo "INFO: FPGA bitstream is under: \"./xclbin/$(XCLBINS).hw.*.xclbin\"       " 
	@echo "========================================================================="
439
	@echo $(newline)
440

441

442
443
# Build instrumented hw (FPGA bitstream)
# NOT integrated yet in a multistep compilation
444
445
LAPCIN:=yes
SPMIN:=yes
446
hw-instr: 	
447
	make all TARGETS=hw DEVICES=$(BOARD) LAPC=$(LAPCIN) SPM=$(SPMIN)
448
449
450
451
452
453
454
455
	@echo $(newline)
	@echo "=============================================================================================="
	@echo "INFO: [instrumented] FPGA bitstream is under: \"./xclbin/$(XCLBINS).hw.*.xclbin\"             " 
	@echo "=============================================================================================="
	@echo $(newline)



456
457
458
459
460
461
# Execute on remote server
# Host-recompilation
# Copy of host to $(TARGET_DIR_HW)
# The working directory is changed
# So .dlg file is written in $(TARGET_DIR_HW)
eva: exe
462
463
464
465
466
	./$(EXES) \
	-ffile input/$(PDB)/derived/$(PDB)_protein.maps.fld \
	-lfile input/$(PDB)/derived/$(PDB)_ligand.pdbqt \
	-resnam docking_$(PDB)_$(NRUN) \
	-nrun $(NRUN) -gfpop $(GFPOP)
467
468
469
470
471
472
473
474
475
476
477
478
479
480
	@echo $(newline)
	@echo "==========================================================================="
	@echo "INFO: evaluation log file is under: \"./docking.dlg\"                      "
	@echo $(newline)
	@echo "INFO: profile and timeline trace report files are formatted for SDx GUI    "
	@echo "INFO: ... if reports not generated, verify that \"sdaccel.ini\" exists!    "
	@echo $(newline)
	sdx_analyze profile sdaccel_profile_summary.csv
	@echo $(newline)
	sdx_analyze trace sdaccel_timeline_trace.csv
	@echo "==========================================================================="
	@echo $(newline)


481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
# Debug on hardware using Xilinx GDB
# Analyze hangs with the following gdb extensions:
# xprint queue [<cl_command_queue>]
# xprint event <cl_event>
# xprint mem [<cl_mem>]
# xprint kernel
# xprint all
evadebug:
	xgdb --args \
	./$(EXES) \
	-ffile input/$(PDB)/derived/$(PDB)_protein.maps.fld \
	-lfile input/$(PDB)/derived/$(PDB)_ligand.pdbqt \
	-resnam docking_debug_$(PDB)_$(NRUN) \
	-nrun $(NRUN) -gfpop $(GFPOP)


497
498
499
500
501
502
503
504
# Project name
PROJECT_NAME := ofdock_taskpar_xl

COPY_DIR := copy_$(PROJECT_NAME)
COPY_DIR_DOCK := $(PROJECT_NAME)

# Make sure this remote-server alias exists (in ~/.ssh/config)

505
506
507
508
509
510
511
## Xelera
#SERVER_BRIDGE := erebor:/scratch/
#SERVER_EXEC   := saruman:~/ocladock_sdx17_4

## AWS
SERVER_BRIDGE := eredmithrim:/home/lvs/ESA/AWS
SERVER_EXEC   := AWS
512
513
514
515
516
517
518
519
520
521
522
523

# Delete an existing folder if previously created
# Create a folder $(COPY_DIR) in the parent directory
# Copy binaries into $(COPY_DIR) folder, avoiding the (innecesary) compilation intermediate files
# Copy source files into $(COPY_DIR) as host is built in the remote $(SERVER)
# Create a zip file out of the $(COPY_DIR) folder
copy: clean-copy
	mkdir ../$(COPY_DIR)
	mkdir ../$(COPY_DIR)/$(COPY_DIR_DOCK)
	mkdir ../$(COPY_DIR)/$(COPY_DIR_DOCK)/xclbin
	cp ./xclbin/$(XCLBINS).hw.*.xclbin ../$(COPY_DIR)/$(COPY_DIR_DOCK)/xclbin/
	cp ./xclbin/$(XCLBINS).hw.*.xo ../$(COPY_DIR)/$(COPY_DIR_DOCK)/xclbin/
524
	cp sdaccel.ini ../$(COPY_DIR)/$(COPY_DIR_DOCK)/
525
526
	cp Makefile ../$(COPY_DIR)/$(COPY_DIR_DOCK)/
	cp defines.h ../$(COPY_DIR)/$(COPY_DIR_DOCK)/
527
528
	#cp defines_fixedpt.h ../$(COPY_DIR)/$(COPY_DIR_DOCK)/
	#cp defines_fixedpt_64.h ../$(COPY_DIR)/$(COPY_DIR_DOCK)/
529
	cp -r host/ ../$(COPY_DIR)/$(COPY_DIR_DOCK)/
530
	#cp -r input/ ../$(COPY_DIR)/$(COPY_DIR_DOCK)/
531
532
	cd ../;	zip -r $(COPY_DIR).zip $(COPY_DIR)
	@echo $(newline)
533
534
	@echo "INFO: transfering the \"$(COPY_DIR).zip\" file to $(SERVER_BRIDGE) server: "
	@echo $(newline)
535
536
	cd ../ && scp $(COPY_DIR).zip $(SERVER_BRIDGE)
	@echo $(newline)
537
	@echo "=================================================================="
538
	@echo "INFO: files listed were transferred to $(SERVER_BRIDGE)           "
539
	@echo $(newline)
540
541
	@echo "INFO: then, create AFI and transfer files manually                "
	@echo "INFO: ... from $(SERVER_BRIDGE) to $(SERVER_EXEC)                 "
542
	@echo "=================================================================="
543
544
545
546
547
548
549
550
	@echo $(newline)


clean-copy:
	rm -rf ../$(COPY_DIR)
	rm -f ../$(COPY_DIR).zip
	@echo $(newline)
	@echo "=================================================================="
551
	@echo "INFO: previous \"$(COPY_DIR).zip\" and its folder were deleted    "
552
553
554
555
	@echo "=================================================================="
	@echo $(newline)