Skip to content
This repository was archived by the owner on Mar 21, 2024. It is now read-only.

Commit c36c2d3

Browse files
committed
Initial unification commit: git diff and then git apply Perforce commit
c130d5a (2016-05-04 Evghenii Gaburov integrate CL20721895 CL20714023 CL20707918 CL20713002 CL20713003 CL20714023 CL20721895) onto Github commit bdcd732 (2016-04-14 Jared Hoberock Merge pull request #777 from egaburov/issue-776).
1 parent 685dae9 commit c36c2d3

File tree

82 files changed

+5660
-0
lines changed

Some content is hidden

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

82 files changed

+5660
-0
lines changed

Makefile

Lines changed: 355 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,355 @@
1+
# Copyright 1993-2010 NVIDIA Corporation. All rights reserved.
2+
#
3+
# NOTICE TO USER:
4+
#
5+
# This source code is subject to NVIDIA ownership rights under U.S. and
6+
# international Copyright laws.
7+
#
8+
# This software and the information contained herein is being provided
9+
# under the terms and conditions of a Source Code License Agreement.
10+
#
11+
# NVIDIA MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOURCE
12+
# CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR
13+
# IMPLIED WARRANTY OF ANY KIND. NVIDIA DISCLAIMS ALL WARRANTIES WITH
14+
# REGARD TO THIS SOURCE CODE, INCLUDING ALL IMPLIED WARRANTIES OF
15+
# MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.
16+
# IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL,
17+
# OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
18+
# OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
19+
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
20+
# OR PERFORMANCE OF THIS SOURCE CODE.
21+
#
22+
# U.S. Government End Users. This source code is a "commercial item" as
23+
# that term is defined at 48 C.F.R. 2.101 (OCT 1995), consisting of
24+
# "commercial computer software" and "commercial computer software
25+
# documentation" as such terms are used in 48 C.F.R. 12.212 (SEPT 1995)
26+
# and is provided to the U.S. Government only as a commercial end item.
27+
# Consistent with 48 C.F.R.12.212 and 48 C.F.R. 227.7202-1 through
28+
# 227.7202-4 (JUNE 1995), all U.S. Government End Users acquire the
29+
# source code with only those rights set forth herein.
30+
31+
# Makefile for building Thrust unit test driver
32+
33+
34+
ifndef PROFILE
35+
ifdef VULCAN_TOOLKIT_BASE
36+
include $(VULCAN_TOOLKIT_BASE)/build/getprofile.mk
37+
include $(VULCAN_TOOLKIT_BASE)/build/config/$(PROFILE).mk
38+
else
39+
include ../build/getprofile.mk
40+
include ../build/config/$(PROFILE).mk
41+
endif
42+
endif
43+
44+
SOLNDIR := .
45+
46+
# Possible bug when compiling Thrust v.1.7.0 with VC8 so use at least VC9
47+
#ifndef USEVC10
48+
#export USEVC9= 1
49+
#endif
50+
51+
ifdef VULCAN_TOOLKIT_BASE
52+
include $(VULCAN_TOOLKIT_BASE)/build/config/DetectOS.mk
53+
else
54+
include ../build/config/DetectOS.mk
55+
endif
56+
57+
ifeq ($(OS),win32)
58+
export I_AM_SLOPPY := 1
59+
endif
60+
61+
TMP_DIR := built
62+
TMP_PREFIX := $(ROOTDIR)
63+
TMP_ARCH := $(ARCH)_$(PROFILE)_agnostic
64+
THRUST_MKDIR := $(TMP_PREFIX)/$(TMP_DIR)/$(TMP_ARCH)/thrust/mk
65+
THRUST_DIR := $(ROOTDIR)/thrust
66+
# TODO: Refactor //sw/gpgpu/build and devise a solution in a form of
67+
# include mk file that defines BUILT_ROOTDIR
68+
res:=$(shell $(PYTHON) generate_mk.py $(THRUST_MKDIR) $(THRUST_DIR))
69+
70+
## Generate makefiles
71+
#
72+
73+
# Use these environment variables to control what gets built
74+
# TEST_ALL
75+
# TEST_UNITTESTS
76+
# TEST_EXAMPLES
77+
# TEST_BENCH
78+
# TEST_OTHER
79+
80+
ifneq ($(TEST_ALL),)
81+
override TEST_UNITTESTS := 1
82+
override TEST_EXAMPLES := 1
83+
override TEST_BENCH := 1
84+
override TEST_OTHER := 1
85+
endif
86+
87+
ifneq ($(TEST_EXAMPLES_CUDA)$(TEST_EXAMPLES_THRUST),)
88+
override TEST_EXAMPLES=1
89+
endif
90+
91+
ifeq ($(TEST_UNITTESTS)$(TEST_EXAMPLES)$(TEST_BENCH)$(TEST_OTHER),)
92+
override TEST_UNITTESTS := 1
93+
override TEST_EXAMPLES := 1
94+
override TEST_BENCH := 1
95+
override TEST_OTHER := 1
96+
endif
97+
98+
filter_substr = $(foreach v,$2,$(if $(findstring $1,$v),$v))
99+
filterout_substr = $(foreach v,$2,$(if $(findstring $1,$v),,$v))
100+
101+
102+
ifneq ($(TEST_UNITTESTS),)
103+
# copy existing projects
104+
PROJECTS_COPY := $(PROJECTS)
105+
# empty PROJECTS
106+
PROJECTS :=
107+
# populate PROJECTS with unit tests
108+
include $(THRUST_MKDIR)/testing.mk
109+
110+
ifdef ERIS_TEST_LEVELS
111+
112+
ERIS_PROJECTS :=
113+
# an empty list for L0
114+
ifneq ($(findstring L0,$(ERIS_TEST_LEVELS)),)
115+
endif
116+
117+
# list of test for L1
118+
ifneq ($(findstring L1,$(ERIS_TEST_LEVELS)),)
119+
ERIS_PROJECTS += $(filter %testframework,$(PROJECTS))
120+
ERIS_PROJECTS += $(filter %thrust.test.adjacent_difference,$(PROJECTS))
121+
ERIS_PROJECTS += $(filter %thrust.test.cuda.merge_sort,$(PROJECTS))
122+
ERIS_PROJECTS += $(filter %thrust.test.cuda.pinned_allocator,$(PROJECTS))
123+
ERIS_PROJECTS += $(filter %thrust.test.cuda.radix_sort_by_key,$(PROJECTS))
124+
ERIS_PROJECTS += $(filter %thrust.test.cuda.radix_sort,$(PROJECTS))
125+
ERIS_PROJECTS += $(filter %thrust.test.cuda.reduce_intervals,$(PROJECTS))
126+
ERIS_PROJECTS += $(filter %thrust.test.binary_search,$(PROJECTS))
127+
ERIS_PROJECTS += $(filter %thrust.test.binary_search_descending,$(PROJECTS))
128+
ERIS_PROJECTS += $(filter %thrust.test.binary_search_vector,$(PROJECTS))
129+
ERIS_PROJECTS += $(filter %thrust.test.binary_search_vector_descending,$(PROJECTS))
130+
ERIS_PROJECTS += $(filter %thrust.test.copy,$(PROJECTS))
131+
ERIS_PROJECTS += $(filter %thrust.test.count,$(PROJECTS))
132+
ERIS_PROJECTS += $(filter %thrust.test.equal,$(PROJECTS))
133+
ERIS_PROJECTS += $(filter %thrust.test.fill,$(PROJECTS))
134+
ERIS_PROJECTS += $(filter %thrust.test.find,$(PROJECTS))
135+
ERIS_PROJECTS += $(filter %thrust.test.for_each,$(PROJECTS))
136+
ERIS_PROJECTS += $(filter %thrust.test.gather,$(PROJECTS))
137+
ERIS_PROJECTS += $(filter %thrust.test.generate,$(PROJECTS))
138+
ERIS_PROJECTS += $(filter %thrust.test.inner_product,$(PROJECTS))
139+
ERIS_PROJECTS += $(filter %thrust.test.is_partitioned,$(PROJECTS))
140+
ERIS_PROJECTS += $(filter %thrust.test.is_sorted,$(PROJECTS))
141+
ERIS_PROJECTS += $(filter %thrust.test.is_sorted_until,$(PROJECTS))
142+
ERIS_PROJECTS += $(filter %thrust.test.max_element,$(PROJECTS))
143+
ERIS_PROJECTS += $(filter %thrust.test.merge_by_key,$(PROJECTS))
144+
ERIS_PROJECTS += $(filter %thrust.test.merge,$(PROJECTS))
145+
ERIS_PROJECTS += $(filter %thrust.test.min_element,$(PROJECTS))
146+
ERIS_PROJECTS += $(filter %thrust.test.minmax_element,$(PROJECTS))
147+
ERIS_PROJECTS += $(filter %thrust.test.mismatch,$(PROJECTS))
148+
ERIS_PROJECTS += $(filter %thrust.test.partition,$(PROJECTS))
149+
ERIS_PROJECTS += $(filter %thrust.test.partition_point,$(PROJECTS))
150+
ERIS_PROJECTS += $(filter %thrust.test.permutation_iterator,$(PROJECTS))
151+
ERIS_PROJECTS += $(filter %thrust.test.reduce_by_key,$(PROJECTS))
152+
ERIS_PROJECTS += $(filter %thrust.test.reduce,$(PROJECTS))
153+
ERIS_PROJECTS += $(filter %thrust.test.remove,$(PROJECTS))
154+
ERIS_PROJECTS += $(filter %thrust.test.replace,$(PROJECTS))
155+
ERIS_PROJECTS += $(filter %thrust.test.reverse,$(PROJECTS))
156+
ERIS_PROJECTS += $(filter %thrust.test.reverse_iterator,$(PROJECTS))
157+
ERIS_PROJECTS += $(filter %thrust.test.scan_by_key,$(PROJECTS))
158+
ERIS_PROJECTS += $(filter %thrust.test.scan,$(PROJECTS))
159+
ERIS_PROJECTS += $(filter %thrust.test.scatter,$(PROJECTS))
160+
ERIS_PROJECTS += $(filter %thrust.test.sequence,$(PROJECTS))
161+
ERIS_PROJECTS += $(filter %thrust.test.set_difference_by_key,$(PROJECTS))
162+
ERIS_PROJECTS += $(filter %thrust.test.set_difference_by_key_descending,$(PROJECTS))
163+
ERIS_PROJECTS += $(filter %thrust.test.set_difference,$(PROJECTS))
164+
ERIS_PROJECTS += $(filter %thrust.test.set_difference_descending,$(PROJECTS))
165+
ERIS_PROJECTS += $(filter %thrust.test.set_intersection_by_key,$(PROJECTS))
166+
ERIS_PROJECTS += $(filter %thrust.test.set_intersection_by_key_descending,$(PROJECTS))
167+
ERIS_PROJECTS += $(filter %thrust.test.set_intersection,$(PROJECTS))
168+
ERIS_PROJECTS += $(filter %thrust.test.set_intersection_descending,$(PROJECTS))
169+
ERIS_PROJECTS += $(filter %thrust.test.set_symmetric_difference_by_key,$(PROJECTS))
170+
ERIS_PROJECTS += $(filter %thrust.test.set_symmetric_difference_by_key_descending,$(PROJECTS))
171+
ERIS_PROJECTS += $(filter %thrust.test.set_symmetric_difference,$(PROJECTS))
172+
ERIS_PROJECTS += $(filter %thrust.test.set_symmetric_difference_descending,$(PROJECTS))
173+
ERIS_PROJECTS += $(filter %thrust.test.set_union_by_key,$(PROJECTS))
174+
ERIS_PROJECTS += $(filter %thrust.test.set_union_by_key_descending,$(PROJECTS))
175+
ERIS_PROJECTS += $(filter %thrust.test.set_union,$(PROJECTS))
176+
ERIS_PROJECTS += $(filter %thrust.test.set_union_descending,$(PROJECTS))
177+
ERIS_PROJECTS += $(filter %thrust.test.sort_by_key,$(PROJECTS))
178+
ERIS_PROJECTS += $(filter %thrust.test.sort,$(PROJECTS))
179+
ERIS_PROJECTS += $(filter %thrust.test.stable_sort_by_key,$(PROJECTS))
180+
ERIS_PROJECTS += $(filter %thrust.test.stable_sort,$(PROJECTS))
181+
ERIS_PROJECTS += $(filter %thrust.test.swap_ranges,$(PROJECTS))
182+
ERIS_PROJECTS += $(filter %thrust.test.tabulate,$(PROJECTS))
183+
ERIS_PROJECTS += $(filter %thrust.test.transform,$(PROJECTS))
184+
ERIS_PROJECTS += $(filter %thrust.test.transform_reduce,$(PROJECTS))
185+
ERIS_PROJECTS += $(filter %thrust.test.transform_scan,$(PROJECTS))
186+
ERIS_PROJECTS += $(filter %thrust.test.uninitialized_copy,$(PROJECTS))
187+
ERIS_PROJECTS += $(filter %thrust.test.unique_by_key,$(PROJECTS))
188+
ERIS_PROJECTS += $(filter %thrust.test.unique,$(PROJECTS))
189+
ERIS_PROJECTS += $(filter %thrust.test.vector_insert,$(PROJECTS))
190+
endif
191+
192+
# a full unit test suite for L2
193+
ifneq ($(findstring L2,$(ERIS_TEST_LEVELS)),)
194+
ERIS_PROJECTS := $(PROJECTS)
195+
endif
196+
197+
PROJECTS := $(ERIS_PROJECTS)
198+
199+
endif # ERIS_TEST_LEVELS
200+
201+
ifdef THRUST_DVS
202+
ifndef THRUST_DVS_NIGHTLY
203+
PRJ := $(filter %testframework,$(PROJECTS))
204+
PRJ += $(filter %test.adjacent_difference,$(PROJECTS))
205+
PRJ += $(filter %test.cuda.arch,$(PROJECTS))
206+
PRJ += $(filter %test.cuda.radix_sort,$(PROJECTS))
207+
PRJ += $(filter %test.cuda.radix_sort_by_key,$(PROJECTS))
208+
PRJ += $(filter %test.binary_search_vector,$(PROJECTS))
209+
PRJ += $(filter %test.copy,$(PROJECTS))
210+
PRJ += $(filter %test.count,$(PROJECTS))
211+
PRJ += $(filter %test.fill,$(PROJECTS))
212+
PRJ += $(filter %test.for_each,$(PROJECTS))
213+
PRJ += $(filter %test.gather,$(PROJECTS))
214+
PRJ += $(filter %test.generate,$(PROJECTS))
215+
PRJ += $(filter %test.inner_product,$(PROJECTS))
216+
PRJ += $(filter %test.logical,$(PROJECTS))
217+
PRJ += $(filter %test.max_element,$(PROJECTS))
218+
PRJ += $(filter %test.merge,$(PROJECTS))
219+
PRJ += $(filter %test.merge_key_value,$(PROJECTS))
220+
PRJ += $(filter %test.min_element,$(PROJECTS))
221+
PRJ += $(filter %test.minmax_element,$(PROJECTS))
222+
PRJ += $(filter %test.partition,$(PROJECTS))
223+
PRJ += $(filter %test.partition_point,$(PROJECTS))
224+
PRJ += $(filter %test.reduce,$(PROJECTS))
225+
PRJ += $(filter %test.reduce_by_key,$(PROJECTS))
226+
PRJ += $(filter %test.remove,$(PROJECTS))
227+
PRJ += $(filter %test.replace,$(PROJECTS))
228+
PRJ += $(filter %test.reverse,$(PROJECTS))
229+
PRJ += $(filter %test.set_intersection,$(PROJECTS))
230+
PRJ += $(filter %test.set_symmetric_difference,$(PROJECTS))
231+
PRJ += $(filter %test.set_union,$(PROJECTS))
232+
PRJ += $(filter %test.transform,$(PROJECTS))
233+
PRJ += $(filter %test.transform_scan,$(PROJECTS))
234+
PRJ += $(filter %test.type_traits,$(PROJECTS))
235+
PRJ += $(filter %test.unique,$(PROJECTS))
236+
PRJ += $(filter %test.unique_by_key,$(PROJECTS))
237+
PRJ += $(filter %test.vector_cpp_subset,$(PROJECTS))
238+
PROJECTS := $(PRJ)
239+
endif
240+
endif # THRUST_DVS
241+
242+
# once PROJECTS is populated with unit tests extend it it with previous projects
243+
PROJECTS += $(PROJECTS_COPY)
244+
245+
# Filter out tests that are known to fail to compile
246+
ifeq ($(TARGET_OS), QNX)
247+
PROJECTS := $(filter-out %thrust.test.complex_transform, $(PROJECTS))
248+
endif
249+
endif
250+
251+
ifneq ($(TEST_OTHER),)
252+
PROJECTS += internal/build/warningstester
253+
endif
254+
255+
ifneq ($(TEST_BENCH),)
256+
PROJECTS += internal/benchmark/bench
257+
endif
258+
259+
ifneq ($(TEST_EXAMPLES),)
260+
PROJECTS_COPY := $(PROJECTS)
261+
PROJECTS :=
262+
include $(THRUST_MKDIR)/examples.mk
263+
264+
EXAMPLES_CUDA := $(call filter_substr,example.cuda,$(PROJECTS))
265+
EXAMPLES_THRUST := $(call filterout_substr,example.cuda,$(PROJECTS))
266+
267+
ifneq ($(TEST_EXAMPLES_CUDA),)
268+
PROJECTS := $(PROJECTS_COPY) $(EXAMPLES_CUDA)
269+
else ifneq ($(TEST_EXAMPLES_THRUST),)
270+
PROJECTS := $(PROJECTS_COPY) $(EXAMPLES_THRUST)
271+
else
272+
PROJECTS := $(PROJECTS_COPY) $(EXAMPLES_CUDA) $(EXAMPLES_THRUST)
273+
endif
274+
275+
# custom_temporary_allocation only works with gcc version 4.4 and higher
276+
ifneq ($(OS), win32)
277+
ifneq ($(shell expr "`$(CC) -dumpversion`" \< "4.4"), 0)
278+
PROJECTS := $(filter-out %example.cuda.custom_temporary_allocation, $(PROJECTS))
279+
endif
280+
endif
281+
282+
# fallback_allocator TDRs on windows, thrust_nightly doesn't have a per-OS waive mechanism at the moment
283+
# so don't build it
284+
ifeq ($(OS), win32)
285+
PROJECTS := $(filter-out %example.cuda.fallback_allocator, $(PROJECTS))
286+
endif
287+
endif
288+
289+
ifneq ($(OPENMP),)
290+
PROJECTS += internal/build/unittesterOMP
291+
endif
292+
293+
ifdef ERIS_TEST_LEVELS
294+
PROJECTS += internal/build/eris_testsuites
295+
endif
296+
297+
ifdef VULCAN_TOOLKIT_BASE
298+
include $(VULCAN_TOOLKIT_BASE)/build/common.mk
299+
else
300+
include ../build/common.mk
301+
endif
302+
303+
.PHONY: docs copy_doc
304+
docs:
305+
$(MAKE) -f internal/doc/pdf.mk ROOTDIR=$(ROOTDIR) docs
306+
307+
copy_docs:
308+
$(MAKE) -f internal/doc/pdf.mk ROOTDIR=$(ROOTDIR) copy_docs
309+
310+
docs.clean:
311+
$(MAKE) -f internal/doc/pdf.mk ROOTDIR=$(ROOTDIR) clean
312+
313+
ifeq ($(OS), win32)
314+
MAKE_DVS_PACKAGE = $(ZIP) -r built/CUDA-thrust-package.zip bin thrust/internal/test $(DVS_COMMON_TEST_PACKAGE_FILES)
315+
else
316+
MAKE_DVS_PACKAGE = tar -cvj -f built/CUDA-thrust-package.tar.bz2 bin thrust/internal/test $(DVS_COMMON_TEST_PACKAGE_FILES)
317+
endif
318+
319+
DVS_OPTIONS :=
320+
321+
ifneq ($(TARGET_ARCH),$(HOST_ARCH))
322+
DVS_OPTIONS += TARGET_ARCH=$(TARGET_ARCH)
323+
endif
324+
ifeq ($(TARGET_ARCH),ARMv7)
325+
DVS_OPTIONS += ABITYPE=$(ABITYPE)
326+
endif
327+
328+
THRUST_DVS_BUILD = release
329+
330+
dvs:
331+
$(MAKE) $(DVS_OPTIONS) -s -C ../cuda $(THRUST_DVS_BUILD)
332+
$(MAKE) $(DVS_OPTIONS) $(THRUST_DVS_BUILD) THRUST_DVS=1
333+
cd .. && $(MAKE_DVS_PACKAGE)
334+
335+
dvs_release:
336+
$(MAKE) dvs THRUST_DVS_BUILD=release
337+
338+
dvs_nightly dvs_nightly_release:
339+
$(MAKE) dvs_release THRUST_DVS_NIGHTLY=1
340+
341+
dvs_debug:
342+
$(MAKE) dvs THRUST_DVS_BUILD=debug
343+
344+
dvs_nightly_debug:
345+
$(MAKE) dvs_debug THRUST_DVS_NIGHTLY=1
346+
347+
348+
349+
include $(THRUST_MKDIR)/dependencies.mk
350+
351+
ifdef ERIS_TEST_LEVELS
352+
DEPS := $(filter-out eris_testsuites,$(notdir $(PROJECTS)))
353+
eris_testsuites: $(DEPS)
354+
endif
355+

0 commit comments

Comments
 (0)