提交 fa10f1dc authored 作者: Frederic's avatar Frederic

make compatible with python 2.4 and check that it was not compiled while waiting for the lock

上级 c0d9f466
...@@ -95,8 +95,10 @@ nvcc_compiler.add_standard_rpath(cuda_ndarray_loc) ...@@ -95,8 +95,10 @@ nvcc_compiler.add_standard_rpath(cuda_ndarray_loc)
compile_cuda_ndarray = True compile_cuda_ndarray = True
outdated = False
if os.path.exists(cuda_ndarray_so): if os.path.exists(cuda_ndarray_so):
compile_cuda_ndarray = date >= os.stat(cuda_ndarray_so)[stat.ST_MTIME] outdated = date >= os.stat(cuda_ndarray_so)[stat.ST_MTIME]
compile_cuda_ndarray = outdated
if not compile_cuda_ndarray: if not compile_cuda_ndarray:
try: try:
# If we load a previously-compiled version, config.compiledir should # If we load a previously-compiled version, config.compiledir should
...@@ -110,32 +112,45 @@ if not compile_cuda_ndarray: ...@@ -110,32 +112,45 @@ if not compile_cuda_ndarray:
if compile_cuda_ndarray: if compile_cuda_ndarray:
get_lock() get_lock()
try: try:
if not nvcc_compiler.is_nvcc_available(): if not outdated:
set_cuda_disabled() # Maybe someone else compiled it while we got the lock.
try:
if cuda_available: # If we load a previously-compiled version,
code = open(os.path.join(cuda_path, "cuda_ndarray.cu")).read() # config.compiledir should be in sys.path.
if config.compiledir not in sys.path:
if not os.path.exists(cuda_ndarray_loc): sys.path.append(config.compiledir)
os.makedirs(cuda_ndarray_loc) from cuda_ndarray.cuda_ndarray import *
compile_cuda_ndarray = False
# If $TMPDIR is defined, nvopencc wants it to exist except ImportError:
if 'TMPDIR' in os.environ: compile_cuda_ndarray = True
tmpdir = os.environ['TMPDIR'] if compile_cuda_ndarray:
if not os.path.exists(tmpdir): try:
os.makedirs(tmpdir) if not nvcc_compiler.is_nvcc_available():
set_cuda_disabled()
compiler = nvcc_compiler.NVCC_compiler()
compiler.compile_str( if cuda_available:
'cuda_ndarray', code = open(os.path.join(cuda_path, "cuda_ndarray.cu")).read()
code,
location=cuda_ndarray_loc, if not os.path.exists(cuda_ndarray_loc):
include_dirs=[cuda_path], libs=['cublas'], os.makedirs(cuda_ndarray_loc)
preargs=compiler.compile_args())
from cuda_ndarray.cuda_ndarray import * # If $TMPDIR is defined, nvopencc wants it to exist
except Exception, e: if 'TMPDIR' in os.environ:
_logger.error("Failed to compile cuda_ndarray.cu: %s", str(e)) tmpdir = os.environ['TMPDIR']
set_cuda_disabled() if not os.path.exists(tmpdir):
os.makedirs(tmpdir)
compiler = nvcc_compiler.NVCC_compiler()
compiler.compile_str(
'cuda_ndarray',
code,
location=cuda_ndarray_loc,
include_dirs=[cuda_path], libs=['cublas'],
preargs=compiler.compile_args())
from cuda_ndarray.cuda_ndarray import *
except Exception, e:
_logger.error("Failed to compile cuda_ndarray.cu: %s", str(e))
set_cuda_disabled()
finally: finally:
release_lock() release_lock()
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论