提交 a1d395b1 authored 作者: Olivier Delalleau's avatar Olivier Delalleau

Added new convenience function hash_from_file

上级 94519309
...@@ -7,6 +7,7 @@ from copy import copy ...@@ -7,6 +7,7 @@ from copy import copy
import re #for set_compiledir import re #for set_compiledir
import os, sys, StringIO import os, sys, StringIO
if sys.version_info[:2] >= (2,5): if sys.version_info[:2] >= (2,5):
import hashlib import hashlib
def hash_from_code(msg): def hash_from_code(msg):
...@@ -16,6 +17,12 @@ else: ...@@ -16,6 +17,12 @@ else:
def hash_from_code(msg): def hash_from_code(msg):
return md5.new(msg).hexdigest() return md5.new(msg).hexdigest()
def hash_from_file(file_path):
"""Return the MD5 hash of a file."""
return hash_from_code(open(file_path, 'rb').read())
import theano import theano
from theano.gof.python25 import all from theano.gof.python25 import all
from theano import config from theano import config
...@@ -44,6 +51,7 @@ import cmodule ...@@ -44,6 +51,7 @@ import cmodule
import logging import logging
_logger=logging.getLogger("theano.gof.cc") _logger=logging.getLogger("theano.gof.cc")
_logger.setLevel(logging.WARN)
def info(*args): def info(*args):
_logger.info(' '.join(str(a) for a in args)) _logger.info(' '.join(str(a) for a in args))
def debug(*args): def debug(*args):
...@@ -864,7 +872,11 @@ class CLinker(link.Linker): ...@@ -864,7 +872,11 @@ class CLinker(link.Linker):
sig = ['CLinker.cmodule_key'] # will be cast to tuple on return sig = ['CLinker.cmodule_key'] # will be cast to tuple on return
if compile_args is not None: sig.append(tuple(compile_args)) if compile_args is not None: sig.append(tuple(compile_args))
if libraries is not None: sig.append(tuple(libraries)) if libraries is not None: sig.append(tuple(libraries))
sig.append(theano.configparser.get_config_md5()) # IMPORTANT: The 'md5' prefix is used to isolate the compilation
# parameters from the rest of the key. If you want to add more key
# elements, they should be before this md5 hash if and only if they
# can lead to a different compiled file with the same source code.
sig.append('md5:' + theano.configparser.get_config_md5())
# technically this should only be appended for gcc-compiled Ops # technically this should only be appended for gcc-compiled Ops
# and the flags of other compilers should be inserted here... but it's not clear how to # and the flags of other compilers should be inserted here... but it's not clear how to
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论