Re: [go-nuts] HPC image processing in go?

2021-11-04 Thread jlfo...@berkeley.edu
I'm wondering if it would be worth the effort to improve Go's vectorization 
optimizations as opposed to creating/improving
its bindings to the various GPUs.

Jon


On Thursday, November 4, 2021 at 7:28:15 AM UTC-7 david@gmail.com wrote:

> On Thu, Nov 4, 2021 at 5:43 AM quin...@gmail.com  
> wrote:
>
>> Hi,
>>
>> Has anyone got any experience of high performance image processing in go?
>>
>> By this I mean doing complex image processing in real time at 4K 
>> resolution on commodity hardware. This is really pushing it using carefully 
>> written C++ but when we tried writing similar code using go slices we go a 
>> significant slowdown (x4 over gcc).
>>
>> We experimented using unsafe pointers thinking it is go's slice range 
>> checking that cause the problems, but surprisingly saw no improvement.
>>
>> Has anyone had success saturating the memory bandwidth using go?  Is my 
>> result a surprise to people? Is it just that gcc's code generator is very 
>> mature and Go's is less so, or should I keep looking for dropoffs in my 
>> code?
>>
> This doesn't particularly surprise me. The Go GC compiler is optimised for 
> fast compile-times and does very limited vectorization.
>
> I think the general advice in cases where one needs better optimization 
> paths has been to use gccgo or gollvm (if possible).
>  
>
>>
>> I haven't looked at the generated assembly yet, but that is my next step.
>>
>> Any opinions?
>>
>> -Steve
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "golang-nuts" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to golang-nuts...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/golang-nuts/8419a816-8058-48c1-874b-09a34be0f3fcn%40googlegroups.com
>>  
>> 
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/e2003daa-9f13-48a6-a787-91ec22badb42n%40googlegroups.com.


Re: [go-nuts] HPC image processing in go?

2021-11-04 Thread David Finkel
On Thu, Nov 4, 2021 at 5:43 AM quin...@gmail.com  wrote:

> Hi,
>
> Has anyone got any experience of high performance image processing in go?
>
> By this I mean doing complex image processing in real time at 4K
> resolution on commodity hardware. This is really pushing it using carefully
> written C++ but when we tried writing similar code using go slices we go a
> significant slowdown (x4 over gcc).
>
> We experimented using unsafe pointers thinking it is go's slice range
> checking that cause the problems, but surprisingly saw no improvement.
>
> Has anyone had success saturating the memory bandwidth using go?  Is my
> result a surprise to people? Is it just that gcc's code generator is very
> mature and Go's is less so, or should I keep looking for dropoffs in my
> code?
>
This doesn't particularly surprise me. The Go GC compiler is optimised for
fast compile-times and does very limited vectorization.

I think the general advice in cases where one needs better optimization
paths has been to use gccgo or gollvm (if possible).


>
> I haven't looked at the generated assembly yet, but that is my next step.
>
> Any opinions?
>
> -Steve
>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/golang-nuts/8419a816-8058-48c1-874b-09a34be0f3fcn%40googlegroups.com
> 
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CANrC0Bgua02tU4h1QayM%2BHVmOWNznKnYiSdzFTsKkUT_wVZNYw%40mail.gmail.com.


[go-nuts] HPC image processing in go?

2021-11-04 Thread quin...@gmail.com
Hi,

Has anyone got any experience of high performance image processing in go?

By this I mean doing complex image processing in real time at 4K resolution 
on commodity hardware. This is really pushing it using carefully written 
C++ but when we tried writing similar code using go slices we go a 
significant slowdown (x4 over gcc).

We experimented using unsafe pointers thinking it is go's slice range 
checking that cause the problems, but surprisingly saw no improvement.

Has anyone had success saturating the memory bandwidth using go?  Is my 
result a surprise to people? Is it just that gcc's code generator is very 
mature and Go's is less so, or should I keep looking for dropoffs in my 
code?

I haven't looked at the generated assembly yet, but that is my next step.

Any opinions?

-Steve

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/8419a816-8058-48c1-874b-09a34be0f3fcn%40googlegroups.com.