added basic support for nvptx target
This commit is contained in:
9
nvptxcc
Executable file
9
nvptxcc
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
PTXCC=ptxcc
|
||||||
|
ARGS=${@:2}
|
||||||
|
$($PTXCC $1 -o $1.o) && \
|
||||||
|
$(nvcc test_static_nvptx.cpp examples_ptx/nvcc_helpers.cu examples_ptx/ispc_malloc.cpp $1.o -arch=sm_35 -Iexamples_ptx/ -D_CUDA_ -lcudadevrt $ARGS)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
25
run_tests.py
25
run_tests.py
@@ -204,6 +204,7 @@ def run_test(testname):
|
|||||||
return (1, 0)
|
return (1, 0)
|
||||||
else:
|
else:
|
||||||
global is_generic_target
|
global is_generic_target
|
||||||
|
global is_nvptx_target
|
||||||
if is_windows:
|
if is_windows:
|
||||||
if is_generic_target:
|
if is_generic_target:
|
||||||
obj_name = "%s.cpp" % os.path.basename(filename)
|
obj_name = "%s.cpp" % os.path.basename(filename)
|
||||||
@@ -218,6 +219,8 @@ def run_test(testname):
|
|||||||
else:
|
else:
|
||||||
if is_generic_target:
|
if is_generic_target:
|
||||||
obj_name = "%s.cpp" % testname
|
obj_name = "%s.cpp" % testname
|
||||||
|
elif is_nvptx_target:
|
||||||
|
obj_name = "%s.ptx" % testname
|
||||||
else:
|
else:
|
||||||
obj_name = "%s.o" % testname
|
obj_name = "%s.o" % testname
|
||||||
exe_name = "%s.run" % testname
|
exe_name = "%s.run" % testname
|
||||||
@@ -248,6 +251,11 @@ def run_test(testname):
|
|||||||
cc_cmd += ' -Wl,-no_pie'
|
cc_cmd += ' -Wl,-no_pie'
|
||||||
if should_fail:
|
if should_fail:
|
||||||
cc_cmd += " -DEXPECT_FAILURE"
|
cc_cmd += " -DEXPECT_FAILURE"
|
||||||
|
if is_nvptx_target:
|
||||||
|
nvptxcc_exe = "nvptxcc"
|
||||||
|
nvptxcc_exe_rel = add_prefix(nvptxcc_exe)
|
||||||
|
cc_cmd = "%s %s -DTEST_SIG=%d -o %s" % \
|
||||||
|
(nvptxcc_exe_rel, obj_name, match, exe_name)
|
||||||
|
|
||||||
ispc_cmd = ispc_exe_rel + " --woff %s -o %s --arch=%s --target=%s" % \
|
ispc_cmd = ispc_exe_rel + " --woff %s -o %s --arch=%s --target=%s" % \
|
||||||
(filename, obj_name, options.arch, options.target)
|
(filename, obj_name, options.arch, options.target)
|
||||||
@@ -255,6 +263,16 @@ def run_test(testname):
|
|||||||
ispc_cmd += " -O0"
|
ispc_cmd += " -O0"
|
||||||
if is_generic_target:
|
if is_generic_target:
|
||||||
ispc_cmd += " --emit-c++ --c++-include-file=%s" % add_prefix(options.include_file)
|
ispc_cmd += " --emit-c++ --c++-include-file=%s" % add_prefix(options.include_file)
|
||||||
|
if is_nvptx_target:
|
||||||
|
filename4ptx = filename+".ptx.parsed.ispc"
|
||||||
|
grep_cmd = "grep -v 'export uniform int width' %s > %s " % \
|
||||||
|
(filename, filename4ptx)
|
||||||
|
if options.verbose:
|
||||||
|
print "Grepping: %s" % grep_cmd
|
||||||
|
sp = subprocess.Popen(grep_cmd, shell=True)
|
||||||
|
sp.communicate()
|
||||||
|
ispc_cmd = ispc_exe_rel + " --woff %s -o %s --arch=%s --emit-asm --target=%s" % \
|
||||||
|
(filename4ptx, obj_name, options.arch, options.target)
|
||||||
|
|
||||||
# compile the ispc code, make the executable, and run it...
|
# compile the ispc code, make the executable, and run it...
|
||||||
(compile_error, run_error) = run_cmds([ispc_cmd, cc_cmd],
|
(compile_error, run_error) = run_cmds([ispc_cmd, cc_cmd],
|
||||||
@@ -290,6 +308,7 @@ def run_tasks_from_queue(queue, queue_ret, queue_skip, total_tests_arg, max_test
|
|||||||
ispc_exe = glob_var[3]
|
ispc_exe = glob_var[3]
|
||||||
global is_generic_target
|
global is_generic_target
|
||||||
is_generic_target = glob_var[4]
|
is_generic_target = glob_var[4]
|
||||||
|
global is_nvptx_target
|
||||||
global run_tests_log
|
global run_tests_log
|
||||||
run_tests_log = glob_var[5]
|
run_tests_log = glob_var[5]
|
||||||
|
|
||||||
@@ -503,6 +522,8 @@ def run_tests(options1, args, print_version):
|
|||||||
|
|
||||||
if options.target == 'neon':
|
if options.target == 'neon':
|
||||||
options.arch = 'arm'
|
options.arch = 'arm'
|
||||||
|
if options.target == "nvptx":
|
||||||
|
options.arch = "nvptx64"
|
||||||
|
|
||||||
# use relative path to not depend on host directory, which may possibly
|
# use relative path to not depend on host directory, which may possibly
|
||||||
# have white spaces and unicode characters.
|
# have white spaces and unicode characters.
|
||||||
@@ -528,9 +549,11 @@ def run_tests(options1, args, print_version):
|
|||||||
print_debug("Testing ispc: " + ispc_exe + "\n", s, run_tests_log)
|
print_debug("Testing ispc: " + ispc_exe + "\n", s, run_tests_log)
|
||||||
ispc_exe += " " + options.ispc_flags
|
ispc_exe += " " + options.ispc_flags
|
||||||
|
|
||||||
global is_generic_target
|
global is_generic_target
|
||||||
|
global is_nvptx_target
|
||||||
is_generic_target = (options.target.find("generic-") != -1 and
|
is_generic_target = (options.target.find("generic-") != -1 and
|
||||||
options.target != "generic-1" and options.target != "generic-x1")
|
options.target != "generic-1" and options.target != "generic-x1")
|
||||||
|
is_nvptx_target = (options.target.find("nvptx") != -1)
|
||||||
if is_generic_target and options.include_file == None:
|
if is_generic_target and options.include_file == None:
|
||||||
if options.target == "generic-4" or options.target == "generic-x4":
|
if options.target == "generic-4" or options.target == "generic-x4":
|
||||||
error("No generics #include specified; using examples/intrinsics/sse4.h\n", 2)
|
error("No generics #include specified; using examples/intrinsics/sse4.h\n", 2)
|
||||||
|
|||||||
Reference in New Issue
Block a user