diff --git a/pyopencl/__init__.py b/pyopencl/__init__.py index 522e7e3296a29b8f9e9fc0c49882dc616cb615b9..053dad90d078ae38940b4b1e2f5c7de588d1a154 100644 --- a/pyopencl/__init__.py +++ b/pyopencl/__init__.py @@ -168,7 +168,7 @@ class Program(object): lambda: create_built_program_from_source_cached( self._context, self._source, options, devices, cache_dir=cache_dir), - options=options) + options=options, source=self._source) del self._context do_del_source = True @@ -178,7 +178,7 @@ class Program(object): return self - def _build_and_catch_errors(self, build_func, options): + def _build_and_catch_errors(self, build_func, options, source=None): try: return build_func() except _cl.RuntimeError, e: @@ -190,11 +190,11 @@ class Program(object): if options: what = what + "\n(options: %s)" % " ".join(options) - if self._source is not None: + if source is not None: from tempfile import NamedTemporaryFile srcfile = NamedTemporaryFile(mode="wt", delete=False, suffix=".cl") try: - srcfile.write(self._source) + srcfile.write(source) finally: srcfile.close()