zeroshade commented on issue #279:
URL: https://github.com/apache/arrow-go/issues/279#issuecomment-2659800797
Can you give me any information on the Parquet file (number of
rows/rowgroups/rows per rowgroup? number of columns?)
Since you can't share the file, I have a few ideas that might affect things
if you are able to use a local version of the library and make some code
changes and test them out.
For instance:
1. Try adding NOSPLIT to the assembly?
2. In `typed_encoder.gen.go` on line 1176: change
`GetMinMaxInt32(*(*[]int32)(unsafe.Pointer(&idxes)))` to just
`GetMinMaxInt32(idxes)`
3. Add a `fmt.Println` to print out the `idxes` being checked and see if
there's any pattern we can discern to the slice (length, values, etc.) in the
situation when it fails (is it always a specific size, does it always contain a
specific value, etc.)
4. In `min_max_avx2_amd64.go` in the `int32MaxMinAVX2` function, same idea,
add a Println(values) to see if there's any common pattern to the slice when it
fails. Also, potentially change it so that instead of using the address of the
named returns, make explicit min and max variables on the stack there and
return those. i.e. change the function to the following:
```go
func int32MaxMinAVX2(values []int32) (int32, int32) {
var min, max int32
_int32_max_min_avx2(unsafe.Pointer(unsafe.SliceData(values)),
len(values), unsafe.Pointer(&min), unsafe.Pointer(&max))
return min, max
}
```
maybe the compiler is doing something weird with registers because of the
named returns?
What version of Go are you using?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]