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
|
#!/usr/bin/env python
from argparse import ArgumentParser
import os
import subprocess
import re
import sys
import pipes
CPU_CXX_COMPILER = ('%{host_cxx_compiler}')
CPU_C_COMPILER = ('%{host_c_compiler}')
CURRENT_DIR = os.path.dirname(sys.argv[0])
COMPUTECPP_ROOT = CURRENT_DIR +"/../sycl/"
COMPUTECPP_DRIVER= COMPUTECPP_ROOT+"bin/compute++"
COMPUTECPP_INCLUDE = COMPUTECPP_ROOT+"include"
def main():
computecpp_compiler_flags = [""]
computecpp_compiler_flags = [flag for flag in sys.argv[1:]]
computecpp_compiler_flags = computecpp_compiler_flags + ["-D_GLIBCXX_USE_CXX11_ABI=0"]
output_file_index = computecpp_compiler_flags.index("-o") +1
output_file_name = computecpp_compiler_flags[output_file_index]
if(output_file_index == 1):
# we are linking
return subprocess.call([CPU_CXX_COMPILER] +computecpp_compiler_flags )
# find what we compile
compiling_cpp = 0
if("-c" in computecpp_compiler_flags):
compiled_file_index = computecpp_compiler_flags.index("-c") +1
compited_file_name = computecpp_compiler_flags[compiled_file_index]
if(compited_file_name.endswith(('.cc', '.c++', '.cpp', '.CPP', '.C', '.cxx'))):
compiling_cpp = 1;
if(compiling_cpp == 1):
filename, file_extension = os.path.splitext(output_file_name)
bc_out = filename + ".sycl"
computecpp_compiler_flags = ['-sycl-compress-name', '-DTENSORFLOW_USE_SYCL', '-Wno-unused-variable','-I', COMPUTECPP_INCLUDE,'-isystem',
COMPUTECPP_INCLUDE, "-std=c++11", "-sycl", "-emit-llvm", "-no-serial-memop"] + computecpp_compiler_flags
# dont want that in case of compiling with computecpp first
host_compiler_flags = [""]
host_compiler_flags = [flag for flag in sys.argv[1:]
if not flag.startswith(('-MF','-MD',))
if not ".d" in flag]
x = subprocess.call([COMPUTECPP_DRIVER] +computecpp_compiler_flags )
if(x == 0):
host_compiler_flags = ['-D_GLIBCXX_USE_CXX11_ABI=0', '-DTENSORFLOW_USE_SYCL', '-Wno-unused-variable', '-I', COMPUTECPP_INCLUDE, "--include",bc_out] + host_compiler_flags
return subprocess.call([CPU_CXX_COMPILER] +host_compiler_flags )
return x
else:
# compile for C
return subprocess.call([CPU_C_COMPILER] +computecpp_compiler_flags)
if __name__ == '__main__':
sys.exit(main())
|