2016-11-05 2 views
1

Ist es möglich, den Compiler zu sagen, dass vector[index] 128bit Speicherausrichtung für einen bestimmten Index hat?Speicher Ausrichtung eines Arrays bei einem Index

Oder können wir tun, dass nicht mit dem Index, und muss mit Zeiger das tun?

+0

denke ich, würde der Compiler wissen, dass selbst wenn man sich die Art der vom Array gespeicherten Daten anschaut –

+0

Unterstützung für Alignment größer als die fundamentale Alignment (dh 'alignof (std :: max_align_t)' wird immer an der Implementierung liegen. Das heißt, C++ 17 fügt bessere Unterstützung hinzu Für eine erweiterte Ausrichtung, so lange Sie Ihren * Typ * ausgerichtet haben, werden die Elemente auch so sein.Auf der anderen Seite, wenn Ihre Typen kleiner sind und Sie nur * einige * Elemente ausrichten möchten, dann a) Sie sollte deinen Code neu gestalten, um das Typsystem zu nutzen, und b) du wirst wahrscheinlich etwas manuellen Code schreiben müssen. –

+0

@Nana Osaberima: meinst du nur einen Vektor von 128bit Elementen zu verwenden? Solange wir dem Compiler sagen können, dass das 0. Element ausgerichtet ist, weiß der Compiler, dass jedes Element ausgerichtet ist. hmm. wie geht das? –

Antwort

1

Rare Ich kann eine c Frage beantworten ... Aber gemischte Sprache hilft.

Ich denke, (e) er fragt, ob es so etwas wie das icc/

#pragma assume aligned : 64 ::A 

, oder so ähnlich ist ... In ifort es

ist
!DIR$ ASSUME_ALIGNED :64 :: A 

Es gibt auch Compiler Schalter für Array-Ausrichtung, und All dies soll die Übertragung von Speicher unterstützen. Wenn es eine gute Übung ist.

https://software.intel.com/en-us/node/522571

Dir ist auch ein Bündel von diesem Zeug auf dem Intel-Webinar für Xeon-Phi und AXV-512, so nehme ich an, dass es eine gcc entspricht. Nur die 128 überspringen und auf 512 (64 Bytes) gehen und dann sind Sie AVX 512 bereit;)

Die Tatsache, dass ein zu 256 gehen kann, scheint für AVX Hoffnung, um anzuzeigen, 2K

+0

Ich mag es, die Analogie zu verwenden, die Mrs Schuhe von einer Seite des Wandschranks zur anderen Seite zu bewegen. Wenn links (oder linker Fuß) shoeA ist in Box1 und rechts ShoeA ist box2 mit der linken shoeB, dann muss ich im Wesentlichen die Schuhe wieder in Kisten, die links und rechts von jedem Schuh enthalten, wenn ich am Ende sie überqueren der Schrank. Es ist viel einfacher, wenn ich sie während des Kompilierens und der Ausführung/Einrichtung mit den Kästchen ausrichtet. Wenn man nur ein paar Schuhe hat, sollte man sich nicht so sorgen, als wäre es eine Ms Marcos große Kollektion. Für große SIMD macht dies einen Unterschied. – Holmz

Verwandte Themen