Hi all,

It has been a while since my last email.  I was busy until recently but
would like to restart the work now.

First of all, good news!  All tests were passing or with reasonable
workarounds (see below).  I also ran the benchmarks on SiFive Unmatched
board (with Ubuntu 24.04) and got the result w.r.t. CPython 2.7 (see the
attached JSON file).

*Thus, I would like to send out the Pull Request to merge the work soon.
What do you think?*

Back the the test result:

These were the failures I mentioned earlier:

* Test Suite: app-level (-A) test
  * test_getsetsockopt_zero -- It seems to be QEMU-specific. It isn't
reproducible on SiFive Unmatched + Ubuntu 24.04.
  * test_half_conversions -- sNAN being canonicalized when RISCV converts
F64->F32. I separate it into two cases: (1) F16->F64 (passing) and (2)
F16->F64->F32 (skipped).
  * test_floorceiltrunc -- RISC-V floor/ceil/trunc don't preserve signbit
for nan inputs.
  * test__mercurial -- This was fixed after installing the git command.
* Test Suite: -D tests
  * All passes.
* Test Suite: extra tests
  * test_connection_del -- Fixed
* Test Suite: lib-python test
  * test_ssl -- libssl internal error when TLSv1 was requested. I will send
out another Pull Request for this.
  * test_tokenize -- This was caused by a bug in RISCV backend card marking
code generator. This is fixed now.
  * test_zipfile64 -- This was caused by a bug in RISCV backend card
marking code generator. This is fixed now.
* Test Suite: pypyjit tests
  * test_jitlogparser -- This was caused by a bug in RISCV backend card
marking code generator. This is fixed now.
  * test_micronumpy -- This looked like a benign error (the order is
slightly different). Since the performance was fine, I wrote a special case
for RISCV.

The following were caused by slow CPU speed vs. wall clock time:

* Test Suite: lib-python test
  * test_json.py: test_roundtrip
  * test_textio.py: test_readline
  * test_unicode.py: test_index, test_rfind, test_rindex

These can be fixed by adding:

```
from hypothesis import settings, HealthCheck
@settings(suppress_health_check=[HealthCheck.too_slow])
```

I feel we can just ignore these for now.

This concludes the work to debug all failing tests.

The full list of Git commits can be found here:
https://github.com/pypy/pypy/compare/main...loganchien:pypy:rv64

Please let me know what you think.  Thank you.

Regards,
Logan

On Fri, Mar 1, 2024 at 11:52 AM Logan Chien <tzuhsiang.ch...@gmail.com>
wrote:

> Hi Armin,
>
> Thank you for the reply.  I'll check (1) the config, (2) the frontend code
> that emits guard_not_invalidated, and (3) the actual performance on HW this
> weekend.
>
> Regards,
> Logan
>
> On Thu, Feb 29, 2024 at 4:45 AM Armin Rigo <armin.r...@gmail.com> wrote:
>
>> Hi Logan,
>>
>> On Thu, 29 Feb 2024 at 08:37, Logan Chien <tzuhsiang.ch...@gmail.com>
>> wrote:
>> > IIUC, the difference is that guard_not_invalidated is at a different
>> location.
>> >
>> > But I don't understand why the backend can affect the logs in the
>> 'jit-log-opt-' tag.
>>
>> There are a few ways to influence the front-end: for example, the
>> "support_*" class-level flags.  Maybe the front-end did either do or
>> skip a specific optimization when compared with x86, and it results
>> only in a 'guard_not_invalidated' being present or not (and then once
>> it is emitted, it's not emitted again a few instructions below).  Or
>> there are some other reasons.  But as a general rule, we can mostly
>> ignore the position of 'guard_not_invalidated'.  It should have no
>> effect except in corner cases.
>>
>> > Also, I found that reduce_logical_and (failed) and reduce_logical_xor
>> (passed) are very different.
>> >
>> > Is there more information on the details of this test?  Any ideas to
>> debug this test case are very welcomed!  Thanks.
>>
>> A possibility is that some of these tests are flaky in the sense of
>> passing half by chance on x86---I vaguely remember having some
>> troubles sometimes.  It's sometimes hard to write tests without
>> testing too many details.  Others may have better comments about them.
>> Generally, it's OK to look at what you got and compare it with what
>> the test expects.  If you can come up with a reason for why what you
>> got is correct too, and free of real performance issues, then that's
>> good enough.
>>
>> A bientôt,
>> Armin
>>
>

Attachment: bench-result-pypy-jit-vs-cpython-2.7-base.json
Description: application/json

_______________________________________________
pypy-dev mailing list -- pypy-dev@python.org
To unsubscribe send an email to pypy-dev-le...@python.org
https://mail.python.org/mailman3/lists/pypy-dev.python.org/
Member address: arch...@mail-archive.com

Reply via email to