Tomasz Rybak <[email protected]> writes:

> Dnia 2012-08-12, nie o godzinie 22:57 +0200, Tomasz Rybak pisze:
>> Replying to both your emails here.
>> 
>> Dnia 2012-08-11, sob o godzinie 18:52 -0400, Andreas Kloeckner pisze:
>> > Tomasz Rybak <[email protected]> writes:
>> > > I have run tests on 1GB NVIDIA GeForce GTX 460 and results
>> > > are strange.
>> > > I got two errors related to registering dtypes, with test_struct_reduce
>> > > and test_sort.
>> > 
>> > Can you check if these are gone?
>> > 
>> > > I got one error related to insufficient memory in test_segmented_scan
>> > > and adding gc.collect() did not help.
>> > 
>> > Which test was this in?
>> > 
>> 
>> I have packaged latest git version. On Loveland I got 7 failures:
>> $ py.test --tb=short test_array.py 
>> ============================= test session starts
>> ==============================
>> platform linux2 -- Python 2.7.3 -- pytest-2.2.4
>> collected 84 items 
>> 
>> test_array.py 
>> ....s...........................................s...........F.F.F.F.F.F.F...........
>
> [cut tests results]
>
>> It looks like all tests from test_array.py pass now on Fermi.
>> The only problem is still with Image-related tests (they
>> segfault when run on non-NVIDIA ICD loader with NVIDIA ICD);
>> I intend to debug those on Wednesday or during next weekend.
>
>
> I've just run test_array.py on ION (GeForce 9400M) and got strange
> memory error:
> $ python test_array.py 
> ============================= test session starts
> ==============================
> platform linux2 -- Python 2.7.3 -- pytest-2.2.4
> collected 84 items 
>
> test_array.py 
> .....s...........................................s...........F.F.F.
> INTERNALERROR> Traceback (most recent call last):
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/_pytest/main.py", line 74, in
> wrap_session
> INTERNALERROR>     doit(config, session)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/_pytest/main.py", line 106, in _main
> INTERNALERROR>     config.hook.pytest_runtestloop(session=session)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/_pytest/core.py", line 421, in
> __call__
> INTERNALERROR>     return self._docall(methods, kwargs)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/_pytest/core.py", line 432, in _docall
> INTERNALERROR>     res = mc.execute()
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/_pytest/core.py", line 350, in execute
> INTERNALERROR>     res = method(**kwargs)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/_pytest/main.py", line 119, in
> pytest_runtestloop
> INTERNALERROR>     item.config.hook.pytest_runtest_protocol(item=item,
> nextitem=nextitem)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/_pytest/core.py", line 421, in
> __call__
> INTERNALERROR>     return self._docall(methods, kwargs)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/_pytest/core.py", line 432, in _docall
> INTERNALERROR>     res = mc.execute()
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/_pytest/core.py", line 350, in execute
> INTERNALERROR>     res = method(**kwargs)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/_pytest/runner.py", line 61, in
> pytest_runtest_protocol
> INTERNALERROR>     runtestprotocol(item, nextitem=nextitem)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/_pytest/runner.py", line 68, in
> runtestprotocol
> INTERNALERROR>     reports.append(call_and_report(item, "call", log))
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/_pytest/runner.py", line 99, in
> call_and_report
> INTERNALERROR>     report = hook.pytest_runtest_makereport(item=item,
> call=call)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/_pytest/main.py", line 141, in
> call_matching_hooks
> INTERNALERROR>     return hookmethod.pcall(plugins, **kwargs)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/_pytest/core.py", line 425, in pcall
> INTERNALERROR>     return self._docall(methods, kwargs)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/_pytest/core.py", line 432, in _docall
> INTERNALERROR>     res = mc.execute()
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/_pytest/core.py", line 350, in execute
> INTERNALERROR>     res = method(**kwargs)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/_pytest/capture.py", line 173, in
> pytest_runtest_makereport
> INTERNALERROR>     rep = __multicall__.execute()
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/_pytest/core.py", line 350, in execute
> INTERNALERROR>     res = method(**kwargs)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/_pytest/runner.py", line 187, in
> pytest_runtest_makereport
> INTERNALERROR>     longrepr = item.repr_failure(excinfo)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/_pytest/python.py", line 392, in
> repr_failure
> INTERNALERROR>     style=self.config.option.tbstyle)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/_pytest/python.py", line 387, in
> _repr_failure_py
> INTERNALERROR>     style=style)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/_pytest/main.py", line 278, in
> _repr_failure_py
> INTERNALERROR>     style=style)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/py/_code/code.py", line 377, in
> getrepr
> INTERNALERROR>     return fmt.repr_excinfo(self)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/py/_code/code.py", line 553, in
> repr_excinfo
> INTERNALERROR>     reprtraceback = self.repr_traceback(excinfo)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/py/_code/code.py", line 545, in
> repr_traceback
> INTERNALERROR>     reprentry = self.repr_traceback_entry(entry, einfo)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/py/_code/code.py", line 506, in
> repr_traceback_entry
> INTERNALERROR>     reprargs = self.repr_args(entry)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/py/_code/code.py", line 431, in
> repr_args
> INTERNALERROR>     args.append((argname, self._saferepr(argvalue)))
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/py/_code/code.py", line 425, in
> _saferepr
> INTERNALERROR>     return py.io.saferepr(obj)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/py/_io/saferepr.py", line 54, in
> saferepr
> INTERNALERROR>     return srepr.repr(obj)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/py/_io/saferepr.py", line 13, in repr
> INTERNALERROR>     return self._callhelper(reprlib.Repr.repr, self, x)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/py/_io/saferepr.py", line 21, in
> _callhelper
> INTERNALERROR>     s = call(x, *args)
> INTERNALERROR>   File "/usr/lib/python2.7/repr.py", line 24, in repr
> INTERNALERROR>     return self.repr1(x, self.maxlevel)
> INTERNALERROR>   File "/usr/lib/python2.7/repr.py", line 34, in repr1
> INTERNALERROR>     s = __builtin__.repr(x)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/pyopencl/array.py", line 393, in
> __repr__
> INTERNALERROR>     return repr(self.get())
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/pyopencl/array.py", line 379, in get
> INTERNALERROR>     is_blocking=not async)
> INTERNALERROR>   File
> "/usr/lib/python2.7/dist-packages/pyopencl/__init__.py", line 834, in
> enqueue_copy
> INTERNALERROR>     return _cl._enqueue_read_buffer(queue, src, dest,
> **kwargs)
> INTERNALERROR> MemoryError: clEnqueueReadBuffer failed: mem object
> allocation failure
>
> =============== 3 failed, 62 passed, 2 skipped in 578.53 seconds
> ===============

This seems to indicate that 'out of device memory' likely shouldn't be
reported as a subclass of MemoryError. pytest seems to treat that as
unrecoverable, and I have to admit that it has a point there.

I've removed MemoryError from the base classes of PyOpenCL's and
PyCUDA's MemoryError classes.

If you catch MemoryErrors and mean to catch device memory errors, this
will break your code. (But I don't think that's a likely scenario, so I
went ahead and made the change.)

Andreas

_______________________________________________
PyCUDA mailing list
[email protected]
http://lists.tiker.net/listinfo/pycuda

Reply via email to