[asterisk-bugs] [JIRA] (ASTERISK-25842) Move from linked lists to another type

Badalian Vyacheslav (JIRA) noreply at issues.asterisk.org
Sun Mar 13 07:30:56 CDT 2016


     [ https://issues.asterisk.org/jira/browse/ASTERISK-25842?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Badalian Vyacheslav updated ASTERISK-25842:
-------------------------------------------

    Description: 
Hello dev.
I vote on the care of using a linked list.

You must use the combined aligned memory area for storing the list so that you can use vectorization and avx, avx2, avx256 optimizations.

For example smaller lists may be held without locks in a single pass. Ie the operation will be the Atomic.

A linked list does not allow vectorization and search all the elements by design.

I propose, in order not to alter ABI add an array-reference to the head and SIMD to use it as an assistant.

I can implement the option, but to be honest a little on a clean gcc is not convenient. That the command asterisk thinks of OpenMP to work with SIMD?

i think we may use some like this
{code}
# aligned 8
struct head {
struct * before:
struct[512] ptr_array;
struct * after:
}
{code}
use 512 is optimal for avx2 multicore, in futere we may change it to 1024 pointers in struct



  was:
Hello dev.
I vote on the care of using a linked list.

You must use the combined aligned memory area for storing the list so that you can use vectorization and avx, avx2, avx256 optimizations.

For example smaller lists may be held without locks in a single pass. Ie the operation will be the Atomic.

A linked list does not allow vectorization and search all the elements by design.

I propose, in order not to alter ABI add an array-reference to the head and SIMD to use it as an assistant.

I can implement the option, but to be honest a little on a clean gcc is not convenient. That the command asterisk thinks of OpenMP to work with SIMD?

i think we may use some like this
{code}
# aligned 8
struct head {
struct * before:
struct[510] ptr_array;
struct * after:
}
{code}
use 512 is optimal for avx2 multicore, in futere we may change it to 1024 pointers in struct




> Move from linked lists to another type
> --------------------------------------
>
>                 Key: ASTERISK-25842
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-25842
>             Project: Asterisk
>          Issue Type: New Feature
>      Security Level: None
>          Components: Core/General
>    Affects Versions: 13.7.2
>            Reporter: Badalian Vyacheslav
>
> Hello dev.
> I vote on the care of using a linked list.
> You must use the combined aligned memory area for storing the list so that you can use vectorization and avx, avx2, avx256 optimizations.
> For example smaller lists may be held without locks in a single pass. Ie the operation will be the Atomic.
> A linked list does not allow vectorization and search all the elements by design.
> I propose, in order not to alter ABI add an array-reference to the head and SIMD to use it as an assistant.
> I can implement the option, but to be honest a little on a clean gcc is not convenient. That the command asterisk thinks of OpenMP to work with SIMD?
> i think we may use some like this
> {code}
> # aligned 8
> struct head {
> struct * before:
> struct[512] ptr_array;
> struct * after:
> }
> {code}
> use 512 is optimal for avx2 multicore, in futere we may change it to 1024 pointers in struct



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list