hi,

i'm currently trying to find a way to generate simd code for python
loops that operate on numpy arrays.
The IRC is quite busy so I think I'd rather post it as an email...

I have familiarized myself with pypy and read most of the docs and read
the code in the metainterp to understand how the traces are built.

I translated pypy with --withmod-micronumpy enabled (installed numpy
pypy fork in an virtual env) and gave the jitviewer a try.
Here is a sample program that does not really make sense, but I think it
would contain opportunity to generate SIMD instructions.

```
import numpy
def invoke():
    a = numpy.zeros(1024)
    b = numpy.zeros(1024)
    c = numpy.zeros(1024)
    # (2)
    for i in range(0,1024):
        c[i] = a[i] + b[i]
    # (3)
    c = a + b

if __name__ == '__main__':
    i = 0
    # (1)
    while i < 500:
        invoke()
        i += 1
```

Here is the trace of invoke visible in jitviewer (uploaded to
https://postimg.org/image/kbntluw55/full/).

Here are some questions I have that would really help me to get going:

(1) Is there a better way to get loops hot?

(2) I cannot really figure out what all those trace/loop parameters are.
obviously i can guess some but most of them do not really make sense to
me. Am I missing some settings to be able to display more information
for the trace?
    In addition to that I do not really see any chance to generate a
simd loop for (2). Every array access is (arguably) guarded by an array
index overflow and I think to skip that check would be invalid.

(3) There is no trace generated for this instruction? Does this
internally call a c function?

(4) What in our opinion makes sense to vectorize with simd instructions?
Could you provide some sample loops/code (ranging from simple to complex
loops)?

I would really appreciate any help and/or push into the right direction.

Best,
Richard

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
pypy-dev mailing list
pypy-dev@python.org
https://mail.python.org/mailman/listinfo/pypy-dev

Reply via email to