29 stories
·
2 followers

SIMDe 0.8.0 & 0.8.2 Released

1 Comment and 2 Shares

I’m pleased to announce the availability of the latest releases of SIMD Everywhere (SIMDe), version 0.8.0 and version 0.8.2, representing another year of work by over 20 contributors since version 0.7.6.

Request for help: SIMDe has only one maintainer (@mr-c)! Please inquire about assisting in new work, code review, and more.

SIMDe is a permissively-licensed (MIT) header-only library which provides fast, portable implementations of SIMD intrinsics for platforms which aren’t natively supported by the API in question.

For example, with SIMDe you can use SSE, SSE2, SSE3, SSE4.1 and 4.2, AVX, AVX2, and many AVX-512 intrinsics on ARM, POWER, WebAssembly, or almost any platform with a C compiler. That includes, of course, x86 CPUs which don’t support the ISA extension in question (e.g., calling AVX-512F functions on a CPU which doesn’t natively support them).

If the target natively supports the SIMD extension in question there is no performance penalty for using SIMDe. Otherwise, accelerated implementations, such as NEON on ARM, AltiVec on POWER, WASM SIMD on WebAssembly, etc., are used when available to provide good performance.

SIMDe is not just about implementing Intel/AMD intrinsics, it also has implementations for 99% of the ARM NEON intrinsics and in-progress support for others.

SIMDe has already been used to port several packages to additional architectures through either upstream support or distribution packages, particularly on Debian.

What’s new in 0.8.0 / 0.8.2

  • 99% complete set of implementations for all NEON intrinsics have been finished, up from 56.46% in version 0.7.6! (@yyctw @wewe5215
  • Start of RISCV64 optimized implementation using the RVV1.0 vector extension! Thank you @eric900115 @howjmay @zengdage.
  • SIMDe PRs are tested using Fedora Rawhide (@junaruga)

As always, we have an extensive test suite to verify our implementations.

For a complete list of changes, check out the 0.8.0 and 0.8.2 release notes.

Below are some additional highlights:

X86

There are a total of 6876 SIMD functions on x86, 2930 (43.17%) of which have been implemented in SIMDe so far. Specifically for AVX-512, of the 5160 functions currently in AVX-512, SIMDe implements 1510 (29.26%).

Note: Intel has removed the intrinsics that were unique to Intel Xeon Phi (ER, PF, 4MAPS, and 4VNNIW) from their intrinsic list. SIMDe will retain those few implementations we already had, but this changes how our completeness statistics are calculated.

Newly added function families

  • AES: 5 of 6 (83.33%)

    Newly AVX512 added function families

  • castph: 1 of 9 (11.11%) implemented.
  • cvtus_storeu: 1 of 18 (5.56%) implemented.
  • fpclass: 3 of 24 (12.50%) implemented.
  • i32gather: 1 of 8 (12.50%) implemented.
  • i64gather: 8 of 8 :100:
  • permutex: 3 of 12 (25.00%) implemented.
  • rcp14: 1 of 24 (4.17%) implemented. reduce
  • reduce_max: 7 of 31 (22.58%) implemented.
  • reduce_min: 7 of 31 (22.58%) implemented.
  • shufflehi: 1 of 7 (14.29%) implemented.
  • shufflelo: 1 of 7 (14.29%) implemented.

    Additions to existing families

  • AVX512BW: 7 additional, 337 of 790 (42.66%)
  • AVX512DQ: 5 additional, 112 total of 376 (29.79%)
  • AVX512F: 48 additional, 1087 total of 2812 (38.66%)
  • AVX512_FP16: 15 additional, 17 total of 1105 (1.54%)

    Neon

    SIMDe currently implements 6608 out of 6670 (99.07%) NEON functions; up from 56.46% in the previous release!

    Newly added families

  • abal
  • abal_high
  • abd
  • abdh
  • abdl_high
  • addhn_high
  • aes
  • bfdot
  • bfdot_lane
  • cadd_rot
  • cale
  • calt
  • cmla_lane
  • cmla_rot_lane
  • copy_lane
  • cvt_high
  • cvt_n
  • cvta
  • cvtn
  • cvtp
  • cvtx
  • cvtx_high
  • div
  • dupb_lane
  • duph_lane
  • eor3
  • fmlal
  • fms
  • fms_lane
  • fms_n
  • ld2_dup
  • ld2_lane
  • ld3_dup
  • ld3_lane
  • ld4_dup
  • maxnmv
  • minnmv
  • mla_lane
  • mla_high_lane
  • mls_lane
  • mlsl_high_lane
  • mmla
  • mull_high_lane
  • mull_high_n
  • mulx
  • mulx_lane
  • pmaxnm
  • pminnm
  • qdmlal
  • qdmlal_high
  • qdmlal_high_lane
  • qdmlal_high_n
  • qdmlal_lane
  • qdmlal_n
  • qdmlsl
  • qdmlsl_high
  • qdmlsl_high_lane
  • qdmlsl_high_n
  • qdmlsl_lane
  • qdmlsl_n
  • qdmlslh
  • qdmlslh_lane
  • qdmulhh
  • qdmulhh_lane
  • qdmull_high
  • qdmull_high_lane
  • qdmull_high_n
  • qdmull_lane
  • qdmull_n
  • qdmullh_lane
  • qmovun_high
  • qrdmlah
  • qrdmlah_lane
  • qrdmlahh
  • qrdmlahh_lane
  • qrdmlsh
  • qrdmlsh_lane
  • qrdmlshh
  • qrdmlshh_lane
  • qrdmulhh_lane
  • qrshl
  • qrshlh
  • qrshrn_high_n
  • qrshrnh_n
  • qrshrun_high_n
  • qrshrunh_n
  • qshl_n
  • qshlh_n
  • qshluh_n
  • qshrn_high_n
  • qshrnh_n
  • qshrun_high_n
  • qshrunh_n
  • raddhn
  • raddhn_high
  • rax
  • recp
  • rnd32x
  • rnd32x
  • rnd32x
  • rnd64z
  • rnda
  • rndx
  • rshrn_high_n
  • rsubhn
  • rsubhn
  • set_lane
  • sha1
  • sha1h
  • sha256
  • sha512
  • shll_high_n
  • shrn_high_n
  • sli_n
  • sm3
  • sm4
  • sqrt
  • st1_x2
  • st1_x3
  • st1_x4
  • st1q_x2
  • st1q_x3
  • st1q_x4
  • subhn_high
  • sudot_lane
  • usdot
  • usdot_lane

Finally complete families

  • cvtn
  • mla_lane

Getting Involved

If you’re interested in using SIMDe but need some specific functions to be implemented first, please file an issue and we may be able to prioritize those functions.

If you’re interested in helping out please get in touch. We have a chat room on Matrix/Element if you have questions, or of course you can just dive right in on the issue tracker.

Read the whole story
biocrusoe
49 days ago
reply
More NEON & RISCV64 goodness!
Berlin
luizirber
48 days ago
reply
Davis, CA
Share this story
Delete

CJEU landmark rulings on “credit ranking” and review of DPAs

1 Share
CJEU landmark rulings on “credit ranking” and review of DPAs The CJEU issued two judgments with far-reaching consequences for the credit ranking business and judicial review of DPAs Schufa Credit Score
Read the whole story
biocrusoe
195 days ago
reply
Berlin
Share this story
Delete

Growing up Alyssa

1 Share

When I was 10, I came out as transgender. I was a girl and I knew it.

I was one of the lucky ones.

After four painful years, I was fortunate enough to access gender-affirming health care. First testosterone blockers. Later estrogen, the stuff my peers soaked in for years while I threw myself into software development to distract from pain.

Despite being old enough to go through the wrong puberty and suffer its permanent changes, it took four years to access the medical fix. Four years of gender therapy, hard talks with doctors, and a lot of determination.

There’s a vicious myth that kids just walk into clinics and leave with hormones. Quite the opposite.

I was lucky: my parents supported me, and by then we lived near San Francisco, where a gender clinic was willing to take me as patient.

I’m 21 now. I’ll be blunt: if not for gender-affirming care, I don’t know if I would be around. If there would be FOSS graphics drivers for Mali-T860 or the Apple M1.

If I were a few years younger, lived in the wrong part of the US, that may well be the reality, because gender-affirming care is banned for minors in conservative areas across the United States. Texas, for example, would threaten to take me from my loving parents under Greg Abbott’s directive.

Even now, I’m lucky I don’t live in the wrong place: the medication I’m prescribed is banned for adults in several American states.

I fear the 2024 election. How long until there’s a ban nationwide?

In high school, I knew this day might come. I applied to Canadian universities. Canada isn’t perfect, far from it. But stripping trans rights isn’t on the ballot yet.

Growing up, we liked visiting Florida.

Now there are travel advisories against it.

One recent Florida law threatens jail time if a trans person uses the bathroom - any bathroom - in a public space. I remember in high school, arguing back against “bathroom bills” designed to marginalize trans people. They seem tame next to the vile attacks on trans people championed by Ron DeSantis.

What’s next?

Does anybody remember the Nuremberg laws?

I was raised Jewish. Growing up, we were haunted by the spectre of the Holocaust. I knew queer Germans were in the cross-hairs alongside Jews. I didn’t know that Berlin was a queer centre before Hitler came to power.

In high school, I understood if fascists came to power in the United States, I might be first to go. Nazis had a special symbol for people like me: a pink triangle superimposed on a yellow triangle. I was 16 when I wondered if one day I would be forced to wear it.

In 2020, Donald Trump used the Nazi’s symbol for political prisoners – forced to be worn in camps – to threaten leftists in a campaign ad.

Subtle.

You don’t need to like Democrats, but I need you to understand that if you vote Republican in 2024, you vote erasure. You vote oppression. You vote fascism.

Maybe you “just have some concerns” about trans kids.

I was a trans kid, and I want you to know that DeSantis, Abbott, and Trump were my nightmares. Their policies will lead to the deaths of transgender Americans. With hundreds of GOP-sponsored anti-trans bills and laws simultaneously sweeping the United States, it’s hard to believe this isn’t by design.

It doesn’t have to be that way.

The trans experience isn’t inherently defined by suffering. Not for trans kids, not for trans adults.

When treated with respect, allowed to transition, when we can access the medication we know we need, life can be great.

Personally, I have felt virtually no gender-related discomfort in years now.

I once recoiled at my reflection. Now I look in the mirror and smile at the cute woman smiling back at me. I’m surrounded by lovely friends, and we support each other. Laugh together. Cry together. Text endless stickers of cartoon sharks together. Past the shared struggle, there is immense trans joy.

When we are made to suffer – by banning our medication, arresting us for peeing, legislating our identities out of existence on the road to establishing a theocratic state – that is a policy choice.

We’re not asking for much. We don’t want special treatment. We just want respect. Life, liberty, and the pursuit of happiness.

Right now I want legislators to get the fuck out of our doctors’ office.

I’m on the board overseeing Linux graphics. Half of us are trans. If all you care about is Linux, resist the attacks on trans people.

If you have any decency, fight back.

It’s your choice.


Selected reading:


Read the whole story
biocrusoe
395 days ago
reply
Berlin
Share this story
Delete

SIMDe 0.7.6 Released

2 Shares

I’m pleased to announce the availability of the latest release of SIMD Everywhere (SIMDe), version 0.7.6, representing more than two years of work by over 30 developers since version 0.7.2. (I also released 0.7.4 two weeks ago, but it needed a few more fixes; thanks go to the early adopters who helped me out.)

SIMDe is a permissively-licensed (MIT) header-only library which provides fast, portable implementations of SIMD intrinsics for platforms which aren’t natively supported by the API in question.

For example, with SIMDe you can use SSE, SSE2, SSE3, SSE4.1 and 4.2, AVX, AVX2, and many AVX-512 intrinsics on ARM, POWER, WebAssembly, or almost any platform with a C compiler. That includes, of course, x86 CPUs which don’t support the ISA extension in question (e.g., calling AVX-512F functions on a CPU which doesn’t natively support them).

If the target natively supports the SIMD extension in question there is no performance penalty for using SIMDe. Otherwise, accelerated implementations, such as NEON on ARM, AltiVec on POWER, WASM SIMD on WebAssembly, etc., are used when available to provide good performance.

SIMDe has already been used to port several packages to additional architectures through either upstream support or distribution packages, particularly on Debian.

What’s new in 0.7.4 / 0.7.6

  • 40 new ARM NEON families implemented
  • Initial support for ARM SVE API implementation (14 families)
  • Complete support for x86 F16C API
  • Initial support for MIPS MSA API
  • Nearly complete support for WASM SIMD128 C/C++ API
  • Initial support for the E2K (Elbrus) architecture
  • Initial support for LoongArch LASX/LSX and optimized implementations of some SSE intrinsics
  • MSVC has many fixes, now compiled in CI using /ARCH:AVX, /ARCH:AVX2, and /ARCH:AVX512
  • Minimum meson version is now 0.54

As always, we have an extensive test suite to verify our implementations.

For a complete list of changes, check out the 0.7.4 and 0.7.6 release notes.

Below are some additional highlights:

X86

There are a total of 7470 SIMD functions on x86, 2971 (39.77%) of which have been implemented in SIMDe so far. Specifically for AVX-512, of the 5270 functions currently in AVX-512, SIMDe implements 1439 (27.31%)

Completely supported functions families

Newly added function families

Additions to existing families

  • AVX512F: 579 additional, 856 total of 2660 (31.80%)
  • AVX512BW: 178 additional, 335 total of 828 (40.46%)
  • AVX512DQ: 77 additional, 111 total of 399 (27.82%)
  • AVX512_VBMI: 9 additional, 30 total of 30 💯%!
  • KNCNI: 113 additional, 114 total of 595 (19.16%)
  • VPCLMULQDQ: 1 additional, 2 total of 2 💯%!

Neon

SIMDe currently implements 56.46% of the ARM NEON functions (3766 out of 6670). If you don’t count 16-bit floats and poly types, it’s 75.95% (3766 / 4969).

Newly added families

  • addhn
  • bcax
  • cage
  • cmla
  • cmla_rot90
  • cmla_rot180
  • cmla_rot270
  • cvtn
  • fma
  • fma_lane
  • fma_n
  • ld2
  • ld4_lane
  • mla_lane
  • mlal_high_n
  • mlal_lane
  • mls_n
  • mlsl_high_n
  • mlsl_lane
  • mull_lane
  • qdmulh_lane
  • qdmulh_n
  • qrdmulh_lane
  • qrshrn_n
  • qrshrun_n
  • qshlu_n
  • qshrn_n
  • qshrun_n
  • recpe
  • recps
  • rshrn_n
  • rsqrte
  • rsqrts
  • shll_n
  • shrn_n
  • sqadd
  • sri_n
  • st2
  • st2_lane
  • st3_lane
  • st4_lane
  • subhn
  • subl_high
  • xar

MSA

Overall, SIMDe implementents 40 of 533 (7.50%) functions from MSA.

What is coming next

Work on SIMDe is proceeding rapidly, but there are a lot of functions to implement… x86 alone has about 8,000 SIMD functions, and we’ve implemented about 3,000 of them. We will keep adding more functions and improving the implementations we already have.

If you’re interested in using SIMDe but need some specific functions to be implemented first, please file an issue and we may be able to prioritize those functions.

Getting Involved

If you’re interested in helping out please get in touch. We have a chat room on Matrix/Element which is fairly active if you have questions, or of course you can just dive right in on the issue tracker.

Read the whole story
luizirber
392 days ago
reply
Davis, CA
biocrusoe
397 days ago
reply
Berlin
Share this story
Delete

Methods Included

1 Comment and 2 Shares

Standardizing computational reuse and portability with the Common Workflow Language.

Read the whole story
biocrusoe
761 days ago
reply
Our big paper is out!
Berlin
luizirber
758 days ago
reply
Davis, CA
Share this story
Delete

2020: A Year in Review

1 Comment

2020 is not a year any of us will forget. The coronavirus pandemic has brought unprecedented changes to our daily lives. Sadly, many people have endured the loss of loved ones because of the pandemic. Some people suffering discrimination and persecution - including LGBT people - have felt this intensify as a result of changes in society brought about by the pandemic. In many ways, a concern for and a need to protect human rights has never felt more urgent. 

On the ECHR Sexual Orientation Blog I have tried, as always, to provide a factual and critical account of cases in the European Court of Human Rights (and wider developments in the Council of Europe) concerning sexual orientation discrimination. As usual, I have tried to provide readers with an insight into the facts of cases, a discussion of how the Court has approached them, as well as giving my own "point of view".

Below is an overview of much of the activity on the blog this year.

I want to thank everyone who stops by here from time to time to read about the Court and its cases. I have been writing this blog for 7 years now, and over that time I have made lots of new friends because of the blog - people who have contacted me via email, or on Twitter (@echrso) - and I really value that. Thank you for engaging with the material here!

I wish you all a very happy Christmas, in these difficult days, and a happy new year, in which I hope we all have brighter days. 


2020: A Year in Review

Decisions and judgments of the European Court of Human Rights

The Court issued a number of important decisions and judgments relating to sexual orientation discrimination throughout 2020...

In January, the Court issued its judgment in the case of Beizaras and Levickas v Lithuania, holding unanimously that there had been a violation of the Convention in respect of the State’s failure to protect individuals from homophobic hate speech. The judgment is important because it explicitly addresses "hateful comments", including undisguised calls for violence, made by private individuals against the gay community via social media. 

Also in January, the Court issued its judgment in Alekseyev and Others v Russia which concerned 77 applications made to the Court between November 2015 and June 2018 that primarily related to the ban, imposed by Russian authorities, on holding LGBT public assemblies. The Court found violations, but declared applications by Nikolay Alekseyev inadmissible as an abuse of the right of individual application (which I wrote about, in connection with an earlier case, here).

In June, the Court published its decision in the case of Carl Jóhann Lilliendahl v Iceland, in which it unanimously declared the application, by a 74-year-old man concerning a conviction in Iceland for anti-gay expression, inadmissible. The most striking aspect of the Court's decision was the clarification it contained regarding its approach to considering the expression of "hatred" against people on the grounds of sexual orientation. 

In October, the Court issued its judgment in the case of Aghdgomelashvili and Japaridze v Georgia. The case concerned discriminatory ill‑treatment by the police on the grounds of sexual orientation and gender identity, and the absence of an effective domestic investigation of this ill-treatment. The violations found by the Court make an important contribution to its evolving jurisprudence on the interplay between Article 3 and Article 14 of the Convention in respect of acts of hatred (both physical and speech acts) against LGBT people.

In November, the Court issued its judgment in Sozayev and Others v Russia. The case concerned the arrest and conviction of five applicants, in 2013, after they participated in a public assembly in front of the State Duma in Moscow in response to the legislative ban on the "promotion of non-traditional sexual relations among minors". In finding violations of the Convention the judgment addressed restrictions on the right to freedom of peaceful assembly generally, and the right to peacefully assemble to object to homophobic and transphobic laws.

Also in November, the Court issued its judgment in B and C v Switzerlandwhich concerned the case of a gay man (in a same-sex relationship) challenging his deportation to a country (The Gambia) where he would be at risk of ill-treatment because of his sexual orientation. For the first time in its history, the Court held that returning an applicant to a non-European state where they would be at risk of ill-treatment on the grounds of their sexual orientation amounted to a violation of Article 3 (prohibition of torture) of the Convention. 

And again in November, the Court issued its judgment in Honner v France in which it held that the refusal to award contact rights to the applicant in respect of the child which had been born to her former partner in Belgium using assisted reproductive techniques, while the two women were a couple, did not violate the Convention. 

In December, the Court issued its judgment in Berkman v RussiaThe case concerned the failure of police officers to ensure that an LGBTI event disrupted by counter-demonstrators proceeded peacefully, and the unlawful arrest of the applicant at the event. Finding violations of the Convention, the judgment was a further reiteration of the Court's now established principle that domestic authorities are under a positive obligation to ensure that LGBT+ people can exercise their right to freedom of peaceful assembly in circumstances free from homophobic hatred. 

Communicated cases

The Court communicated a range of new cases concerning sexual orientation discrimination throughout 2020, many of which I wrote about on the blog. I detailed...

Cases against Russia concerning employment discrimination, failure of the police to investigate violent hate crime, the deportation of a gay man to a country where he would be at risk, and "homosexual propaganda" laws.

A case against the United Kingdom concerning refusal to supply a gay man with a commercial service

A case against Romania brought by eight same-sex couples concerning the lack of legal recognition of their relationships.

Cases against Lithuania concerning anti-gay hate speech, and restrictions placed on a book for children.

Seven new cases against Poland concerning different aspects of sexual orientation discrimination

A case against France concerning access to a child.

A case against Greece, brought by 162 same-sex couples, concerning lack of relationship recognition

And a case against Croatia concerning lack of access to a fair trial in respect of an allegation of sexual orientation discrimination.

Anniversaries

There were a number of anniversaries this year connected to the Convention, and to sexual orientation discrimination, that I wrote about...

In January, the UK celebrated the 20th anniversary of the ban on gay people serving in the armed forces being lifted. The ban came to an end on 12th January 2000 and this was the direct result of judgments by the Court in 1999. 

In November, the Convention had its 70th birthday.

Also in November, the UK celebrated the 20th anniversary of the legislation that brought about an equal "age of consent", which was significantly encouraged by litigation under the Convention. I summarised the legal history in a piece for Openly (which can be heard as a short podcast).  

December brought the 65th anniversary of the very first case brought under the Convention concerning sexual orientation discrimination. 

Other entries on the blog

In January, I wrote a piece about UK universities, freedom of speech, and trans issues

In June, I detailed an article that I wrote in the European Human Rights Law Review about "gender critical" beliefs.

In September, I wrote a piece about why LGBT people in the UK should prepare to defend their human rights, and this was discussed by Naomi Wolf.

In October, I made available an updated chapter that aims to provide a comprehensive but condensed assessment of the historical development and current state of human rights protection offered to LGBT people by the Council of Europe and, importantly, identify the gaps that currently exist in that protection. 

Also in October, I made available a draft of a new research article, written with Silvia Falcetta, which examines faith-based objections to the inclusion of LGBT content in "relationships education" in primary schools in England.

Blog readership

In the last year, the blog has been visited 51,500 times:


The readership of the blog is global, and four of the top ten countries for readership are outside of the Council of Europe:



The all-time visits for the blog, since it was founded in February 2013, is 331,526.

Read the whole story
biocrusoe
1278 days ago
reply
What happened this year in the European Court of Human Rights with respect to sexual orientation rights.
Berlin
Share this story
Delete
Next Page of Stories