Merge pull request #1049 from ncos/knl-rename
ISPC target rename plus insignificant changes in test system
This commit is contained in:
24
alloy.py
24
alloy.py
@@ -290,11 +290,11 @@ def build_LLVM(version_LLVM, revision, folder, tarball, debug, selfbuild, extra,
|
||||
|
||||
|
||||
def unsupported_llvm_targets(LLVM_VERSION):
|
||||
prohibited_list = {"3.2":["knl-avx512"],
|
||||
"3.3":["knl-avx512"],
|
||||
"3.4":["knl-avx512"],
|
||||
"3.5":["knl-avx512"],
|
||||
"3.6":["knl-avx512"],
|
||||
prohibited_list = {"3.2":["avx512knl-i32x16"],
|
||||
"3.3":["avx512knl-i32x16"],
|
||||
"3.4":["avx512knl-i32x16"],
|
||||
"3.5":["avx512knl-i32x16"],
|
||||
"3.6":["avx512knl-i32x16"],
|
||||
"3.7":[],
|
||||
"trunk":[]}
|
||||
return prohibited_list[LLVM_VERSION]
|
||||
@@ -321,7 +321,7 @@ def check_targets():
|
||||
AVX = ["avx1-i32x4", "avx1-i32x8", "avx1-i32x16", "avx1-i64x4"]
|
||||
AVX11 = ["avx1.1-i32x8","avx1.1-i32x16","avx1.1-i64x4"]
|
||||
AVX2 = ["avx2-i32x8", "avx2-i32x16", "avx2-i64x4"]
|
||||
KNL = ["knl-generic", "knl-avx512"]
|
||||
KNL = ["knl-generic", "avx512knl-i32x16"]
|
||||
|
||||
targets = [["AVX2", AVX2, False], ["AVX1.1", AVX11, False], ["AVX", AVX, False], ["SSE4", SSE4, False],
|
||||
["SSE2", SSE2, False], ["KNL", KNL, False]]
|
||||
@@ -349,7 +349,7 @@ def check_targets():
|
||||
f_lines = take_lines(sde_exists + " -help", "all")
|
||||
for i in range(0,len(f_lines)):
|
||||
if targets[5][2] == False and "knl" in f_lines[i]:
|
||||
answer_sde = answer_sde + [["-knl", "knl-generic"], ["-knl", "knl-avx512"]]
|
||||
answer_sde = answer_sde + [["-knl", "knl-generic"], ["-knl", "avx512knl-i32x16"]]
|
||||
if targets[3][2] == False and "wsm" in f_lines[i]:
|
||||
answer_sde = answer_sde + [["-wsm", "sse4-i32x4"], ["-wsm", "sse4-i32x8"], ["-wsm", "sse4-i16x8"], ["-wsm", "sse4-i8x16"]]
|
||||
if targets[2][2] == False and "snb" in f_lines[i]:
|
||||
@@ -636,14 +636,14 @@ def validation_run(only, only_targets, reference_branch, number, notify, update,
|
||||
if options.ispc_build_compiler == "gcc":
|
||||
stability.compiler_exe = "g++"
|
||||
# but 'knc/knl' target is supported only by icpc, so set explicitly
|
||||
if ("knc" in targets[j]) or ("knl-generic" in targets[j]) or ("knl-avx512" in targets[j]):
|
||||
if ("knc" in targets[j]) or ("knl-generic" in targets[j]):
|
||||
stability.compiler_exe = "icpc"
|
||||
# now set archs for targets
|
||||
if "generic" in targets[j]:
|
||||
arch = gen_archs
|
||||
elif "knc" in targets[j]:
|
||||
arch = knc_archs
|
||||
elif ("knl-generic" in targets[j]) or ("knl-avx512" in targets[j]):
|
||||
elif ("knl-generic" in targets[j]) or ("avx512knl-i32x16" in targets[j]):
|
||||
arch = knl_archs
|
||||
else:
|
||||
arch = archs
|
||||
@@ -670,7 +670,7 @@ def validation_run(only, only_targets, reference_branch, number, notify, update,
|
||||
stability.wrapexe = get_sde() + " " + sde_targets[j][0] + " -- "
|
||||
if "knc" in stability.target:
|
||||
arch = knc_archs
|
||||
elif ("knl-generic" in stability.target) or ("knl-avx512" in stability.target):
|
||||
elif ("knl-generic" in stability.target) or ("avx512knl-i32x16" in stability.target):
|
||||
arch = knl_archs
|
||||
else:
|
||||
arch = archs
|
||||
@@ -929,7 +929,7 @@ if __name__ == '__main__':
|
||||
"Performance validation run with 10 runs of each test and comparing to branch 'old'\n\talloy.py -r --only=performance --compare-with=old --number=10\n" +
|
||||
"Validation run. Update fail_db.txt with new fails, send results to my@my.com\n\talloy.py -r --update-errors=F --notify='my@my.com'\n" +
|
||||
"Test KNC target (not tested when tested all supported targets, so should be set explicitly via --only-targets)\n\talloy.py -r --only='stability' --only-targets='knc'\n" +
|
||||
"Test KNL target (requires sde)\n\talloy.py -r --only='stability' --only-targets='knl-generic knl-avx512'\n")
|
||||
"Test KNL target (requires sde)\n\talloy.py -r --only='stability' --only-targets='knl-generic avx512knl-i32x16'\n")
|
||||
|
||||
num_threads="%s" % multiprocessing.cpu_count()
|
||||
parser = MyParser(usage="Usage: alloy.py -r/-b [options]", epilog=examples)
|
||||
@@ -980,7 +980,7 @@ if __name__ == '__main__':
|
||||
help='rewrite fail_db.txt file according to received results (F or FP)', default="")
|
||||
run_group.add_option('--only-targets', dest='only_targets',
|
||||
help='set list of targets to test. Possible values - all subnames of targets, plus "knc" for "generic" ' +
|
||||
'version of knc support, "knl-generic" or "knl-avx512" for "generic"/"native" knl support', default="")
|
||||
'version of knc support, "knl-generic" or "avx512knl-i32x16" for "generic"/"native" knl support', default="")
|
||||
run_group.add_option('--time', dest='time',
|
||||
help='display time of testing', default=False, action='store_true')
|
||||
run_group.add_option('--only', dest='only',
|
||||
|
||||
@@ -126,7 +126,7 @@ lGetSystemISA() {
|
||||
else if ((info2[1] & (1 << 26)) != 0 && // AVX512 PF
|
||||
(info2[1] & (1 << 27)) != 0 && // AVX512 ER
|
||||
(info2[1] & (1 << 28)) != 0) { // AVX512 CDI
|
||||
return "KNL_AVX512";
|
||||
return "KNL";
|
||||
}
|
||||
// If it's unknown AVX512 target, fall through and use AVX2
|
||||
// or whatever is available in the machine.
|
||||
|
||||
46
fail_db.txt
46
fail_db.txt
@@ -166,26 +166,26 @@
|
||||
./tests/ptr-19.ispc runfail x86-64 generic-16 Linux LLVM 3.7 clang++3.4 -O0 *
|
||||
./tests/ptr-22.ispc runfail x86-64 generic-16 Linux LLVM 3.7 clang++3.4 -O0 *
|
||||
./tests/test-143.ispc runfail x86-64 generic-16 Linux LLVM 3.7 clang++3.4 -O0 *
|
||||
./tests/acos.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O2 *
|
||||
./tests/asin.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O2 *
|
||||
./tests/load-int16-1.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O2 *
|
||||
./tests/load-int8-1.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O2 *
|
||||
./tests/operators2.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O2 *
|
||||
./tests/packed-store-1.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O2 *
|
||||
./tests/packed-store2-1.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O2 *
|
||||
./tests/short-circuit-14.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O2 *
|
||||
./tests/short-circuit-15.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O2 *
|
||||
./tests/short-vec-5.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O2 *
|
||||
./tests/short-vec-6.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O2 *
|
||||
./tests/transcendentals-2-1.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O2 *
|
||||
./tests/transcendentals-2-2.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O2 *
|
||||
./tests/transcendentals-2-3.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O2 *
|
||||
./tests/acos.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O0 *
|
||||
./tests/asin.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O0 *
|
||||
./tests/short-circuit-14.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O0 *
|
||||
./tests/short-circuit-15.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O0 *
|
||||
./tests/short-circuit-5.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O0 *
|
||||
./tests/short-circuit-6.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O0 *
|
||||
./tests/short-circuit-7.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O0 *
|
||||
./tests/short-circuit-8.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O0 *
|
||||
./tests/short-circuit-9.ispc runfail x86-64 knl-avx512 Linux LLVM 3.7 icpc15.0 -O0 *
|
||||
./tests/acos.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O2 *
|
||||
./tests/asin.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O2 *
|
||||
./tests/load-int16-1.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O2 *
|
||||
./tests/load-int8-1.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O2 *
|
||||
./tests/operators2.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O2 *
|
||||
./tests/packed-store-1.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O2 *
|
||||
./tests/packed-store2-1.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O2 *
|
||||
./tests/short-circuit-14.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O2 *
|
||||
./tests/short-circuit-15.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O2 *
|
||||
./tests/short-vec-5.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O2 *
|
||||
./tests/short-vec-6.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O2 *
|
||||
./tests/transcendentals-2-1.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O2 *
|
||||
./tests/transcendentals-2-2.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O2 *
|
||||
./tests/transcendentals-2-3.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O2 *
|
||||
./tests/acos.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O0 *
|
||||
./tests/asin.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O0 *
|
||||
./tests/short-circuit-14.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O0 *
|
||||
./tests/short-circuit-15.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O0 *
|
||||
./tests/short-circuit-5.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O0 *
|
||||
./tests/short-circuit-6.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O0 *
|
||||
./tests/short-circuit-7.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O0 *
|
||||
./tests/short-circuit-8.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O0 *
|
||||
./tests/short-circuit-9.ispc runfail x86-64 avx512knl-i32x16 Linux LLVM 3.7 clang++3.7 -O0 *
|
||||
|
||||
18
ispc.cpp
18
ispc.cpp
@@ -170,7 +170,7 @@ lGetSystemISA() {
|
||||
else if ((info2[1] & (1 << 26)) != 0 && // AVX512 PF
|
||||
(info2[1] & (1 << 27)) != 0 && // AVX512 ER
|
||||
(info2[1] & (1 << 28)) != 0) { // AVX512 CDI
|
||||
return "knl-avx512";
|
||||
return "avx512knl-i32x16";
|
||||
}
|
||||
// If it's unknown AVX512 target, fall through and use AVX2
|
||||
// or whatever is available in the machine.
|
||||
@@ -509,7 +509,7 @@ Target::Target(const char *arch, const char *cpu, const char *isa, bool pic, boo
|
||||
|
||||
#if !defined(LLVM_3_2) && !defined(LLVM_3_3) && !defined(LLVM_3_4) && !defined(LLVM_3_5) && !defined(LLVM_3_6)// LLVM 3.7+
|
||||
case CPU_KNL:
|
||||
isa = "knl-avx512";
|
||||
isa = "avx512knl-i32x16";
|
||||
break;
|
||||
#endif
|
||||
|
||||
@@ -892,7 +892,7 @@ Target::Target(const char *arch, const char *cpu, const char *isa, bool pic, boo
|
||||
CPUfromISA = CPU_Haswell;
|
||||
}
|
||||
#if !defined(LLVM_3_2) && !defined(LLVM_3_3) && !defined(LLVM_3_4) && !defined(LLVM_3_5) && !defined(LLVM_3_6)// LLVM 3.7+
|
||||
else if (!strcasecmp(isa, "knl-avx512")) {
|
||||
else if (!strcasecmp(isa, "avx512knl-i32x16")) {
|
||||
this->m_isa = Target::KNL_AVX512;
|
||||
this->m_nativeVectorWidth = 16;
|
||||
this->m_nativeVectorAlignment = 64;
|
||||
@@ -1132,13 +1132,13 @@ Target::SupportedTargets() {
|
||||
"sse4-i32x4, sse4-i32x8, sse4-i16x8, sse4-i8x16, "
|
||||
"avx1-i32x4, "
|
||||
"avx1-i32x8, avx1-i32x16, avx1-i64x4, "
|
||||
"avx1.1-i32x8, avx1.1-i32x16, avx1.1-i64x4 "
|
||||
"avx1.1-i32x8, avx1.1-i32x16, avx1.1-i64x4, "
|
||||
"avx2-i32x8, avx2-i32x16, avx2-i64x4, "
|
||||
"generic-x1, generic-x4, generic-x8, generic-x16, "
|
||||
"generic-x32, generic-x64, *-generic-x16, "
|
||||
#if !defined(LLVM_3_2) && !defined(LLVM_3_3) && !defined(LLVM_3_4) && !defined(LLVM_3_5) && !defined(LLVM_3_6)// LLVM 3.7+
|
||||
"knl-avx512"
|
||||
"avx512knl-i32x16, "
|
||||
#endif
|
||||
"generic-x1, generic-x4, generic-x8, generic-x16, "
|
||||
"generic-x32, generic-x64, *-generic-x16"
|
||||
#ifdef ISPC_ARM_ENABLED
|
||||
", neon-i8x16, neon-i16x8, neon-i32x4"
|
||||
#endif
|
||||
@@ -1209,7 +1209,7 @@ Target::ISAToString(ISA isa) {
|
||||
return "avx2";
|
||||
#if !defined(LLVM_3_2) && !defined(LLVM_3_3) && !defined(LLVM_3_4) && !defined(LLVM_3_5) && !defined(LLVM_3_6)// LLVM 3.7+
|
||||
case Target::KNL_AVX512:
|
||||
return "knl-avx512";
|
||||
return "avx512knl-i32x16";
|
||||
#endif
|
||||
case Target::SKX:
|
||||
return "skx";
|
||||
@@ -1257,7 +1257,7 @@ Target::ISAToTargetString(ISA isa) {
|
||||
return "avx2-i32x8";
|
||||
#if !defined(LLVM_3_2) && !defined(LLVM_3_3) && !defined(LLVM_3_4) && !defined(LLVM_3_5) && !defined(LLVM_3_6)// LLVM 3.7+
|
||||
case Target::KNL_AVX512:
|
||||
return "knl-avx512";
|
||||
return "avx512knl-i32x16";
|
||||
#endif
|
||||
case Target::SKX:
|
||||
return "avx2";
|
||||
|
||||
21
run_tests.py
21
run_tests.py
@@ -270,8 +270,8 @@ def run_test(testname):
|
||||
elif (options.target == "knl-generic"):
|
||||
cc_cmd = "%s -O2 -I. %s %s test_static.cpp -DTEST_SIG=%d %s -o %s" % \
|
||||
(options.compiler_exe, gcc_arch, "-xMIC-AVX512", match, obj_name, exe_name)
|
||||
elif (options.target == "knl-avx512"):
|
||||
cc_cmd = "%s -O2 -I. %s %s test_static.cpp -DTEST_SIG=%d %s -o %s" % \
|
||||
elif (options.target == "avx512knl-i32x16"):
|
||||
cc_cmd = "%s -O2 -I. %s %s test_static.cpp -DTEST_SIG=%d %s -o %s" % \
|
||||
(options.compiler_exe, gcc_arch, "-march=knl", match, obj_name, exe_name)
|
||||
else:
|
||||
cc_cmd = "%s -O2 -I. %s %s test_static.cpp -DTEST_SIG=%d %s -o %s" % \
|
||||
@@ -558,7 +558,7 @@ def verify():
|
||||
"sse4-i8x16", "avx1-i32x4" "avx1-i32x8", "avx1-i32x16", "avx1-i64x4", "avx1.1-i32x8",
|
||||
"avx1.1-i32x16", "avx1.1-i64x4", "avx2-i32x8", "avx2-i32x16", "avx2-i64x4",
|
||||
"generic-1", "generic-4", "generic-8",
|
||||
"generic-16", "generic-32", "generic-64", "knc", "knl-generic", "knl-avx512"]]
|
||||
"generic-16", "generic-32", "generic-64", "knc", "knl-generic", "avx512knl-i32x16"]]
|
||||
for i in range (0,len(f_lines)):
|
||||
if f_lines[i][0] == "%":
|
||||
continue
|
||||
@@ -671,8 +671,6 @@ def run_tests(options1, args, print_version):
|
||||
options.compiler_exe = "icpc"
|
||||
elif (options.target == "knl-generic"):
|
||||
options.compiler_exe = "icpc"
|
||||
elif (options.target == "knl-avx512"):
|
||||
options.compiler_exe = "icpc"
|
||||
elif is_windows:
|
||||
options.compiler_exe = "cl.exe"
|
||||
else:
|
||||
@@ -911,7 +909,7 @@ if __name__ == "__main__":
|
||||
parser.add_option('-t', '--target', dest='target',
|
||||
help=('Set compilation target (sse2-i32x4, sse2-i32x8, sse4-i32x4, sse4-i32x8, ' +
|
||||
'sse4-i16x8, sse4-i8x16, avx1-i32x8, avx1-i32x16, avx1.1-i32x8, avx1.1-i32x16, ' +
|
||||
'avx2-i32x8, avx2-i32x16, generic-x1, generic-x4, generic-x8, generic-x16, ' +
|
||||
'avx2-i32x8, avx2-i32x16, avx512knl-i32x16, generic-x1, generic-x4, generic-x8, generic-x16, ' +
|
||||
'generic-x32, generic-x64, knc, knl-generic)'), default="sse4")
|
||||
parser.add_option('-a', '--arch', dest='arch',
|
||||
help='Set architecture (arm, x86, x86-64)',default="x86-64")
|
||||
@@ -924,8 +922,8 @@ if __name__ == "__main__":
|
||||
parser.add_option('-v', '--verbose', dest='verbose', help='Enable verbose output',
|
||||
default=False, action="store_true")
|
||||
parser.add_option('--wrap-exe', dest='wrapexe',
|
||||
help='Executable to wrap test runs with (e.g. "valgrind")',
|
||||
default="")
|
||||
help='Executable to wrap test runs with (e.g. "valgrind" or "sde -knl -- ")',
|
||||
default="")
|
||||
parser.add_option('--time', dest='time', help='Enable time output',
|
||||
default=False, action="store_true")
|
||||
parser.add_option('--non-interactive', dest='non_interactive', help='Disable interactive status updates',
|
||||
@@ -939,12 +937,5 @@ if __name__ == "__main__":
|
||||
default=False, action="store_true")
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
# Untill we have the hardware to run testing on:
|
||||
if ((options.target == "knl-generic") and (options.wrapexe == "")):
|
||||
options.wrapexe = "sde -knl -- "
|
||||
|
||||
if ((options.target == "knl-avx512") and (options.wrapexe == "")):
|
||||
options.wrapexe = "sde -knl -- "
|
||||
|
||||
L = run_tests(options, args, 1)
|
||||
exit(0)
|
||||
|
||||
Reference in New Issue
Block a user