После некоторой обработки мне нужно написать свои данные, и я хотел оптимизировать их с помощью AVX2.
(версия AVX-512-это дополнительная дополнительная; работа с просто AVX2 является основной целью.) < /p>
У меня есть этот формат назначения: < /p>
struct data
{
uint32_t a, b, c, d, e;
uint32_t f;
uint32_t g;
};
В массиве источников первые 5 элементов сгруппированы, но элементы f и g отдельные.
В целом, 7 avx2 (ymm Registers/__m256i varibles). Держать 8 -код structs, но мне нужно Resshine/Plopull Combe). /> Как я планирую загрузить свои данные, первые 5 Regs содержат ABCDE < /code> упакованные данные. (Он был считан из памяти, например, ABCDeaBcDeaBcde и т. Д., ABCDE x8 раз), тогда один avx2 reg содержит fffffffff , а один avx2 reg содержит GGGGGGG .
veristers, в основном содержащий этот данных, если я загружаю 5 vector из F и g массивов:
После некоторой обработки мне нужно написать свои данные, и я хотел оптимизировать их с помощью AVX2.
(версия AVX-512-это дополнительная дополнительная; работа с просто AVX2 является основной целью.) < /p> У меня есть этот формат назначения: < /p> struct data { uint32_t a, b, c, d, e; uint32_t f; uint32_t g; };
В массиве источников первые 5 элементов сгруппированы, но элементы f и g отдельные. В целом, 7 avx2 (ymm Registers/__m256i varibles). Держать 8 -код structs, но мне нужно Resshine/Plopull Combe). /> Как я планирую загрузить свои данные, первые 5 Regs содержат ABCDE < /code> упакованные данные. (Он был считан из памяти, например, ABCDeaBcDeaBcde и т. Д., ABCDE x8 раз), тогда один avx2 reg содержит fffffffff , а один avx2 reg содержит GGGGGGG . veristers, в основном содержащий этот данных, если я загружаю 5 vector из F и g массивов: [code]1st register: [a0,b0,c0,d0,e0, a1,b1,c1]
2nd register: [d1,e1, a2,b2,c2,d2,e2, a3]
3rd register: [b3,c3,d3,e3, a4,b4,c4,d4]
4th register: [e4, a5,b5,c5,d5,e5, a6,b6]
5th register: [c6,d6,e6, a7,b7,c7,d7,e7]
6th register: [f0,f1,f2,f3,f4,f5,f6,f7]
7th register: [g0,g1,g2,g3,g4,g5,g6,g7] < /code> Как я могу переставить их, чтобы иметь ABCDEFG < /code> в каждом регистре? 1 -й регистр: [A0, B0, C0, D0, E0, F0, G0, A1], 2 -й регистр: [B1, C1, D1, E1, F1, G1, A2, B2] и так на В целом, цель его переставить элементы, чтобы они могли вывести их упорядоченные. Расположение в векторах на самом деле является детализацией реализации; Другие способы достижения того же результата в памяти в порядке. < /p>
Фактический код, который я пытаюсь ускорить: < /p> #pragma pack(push, 1) struct Data { uint32_t a,b,c,d,e; uint32_t f, g; }; #pragma pack(pop)
Предположим, у меня есть две функции: func1 и func2. func1 возвращает список из 3 целых чисел, а func2 принимает кортеж из 3 целых чисел. Как мне преобразовать список в кортеж таким образом, чтобы можно было предотвратить ошибки с помощью средств...
Кто-нибудь знает прототип BFont::DrawString(wchar_t*, int, int, int, int, int, int) в библиотеке BFont++? Кажется, она была популярна где-то в 2003 году, мне бы хотелось получить прототип этой функции для модификации старой программы. Буду очень...