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]

Reply via email to