Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Своместимые версии g++ и Boost https://www.cyberforum.ru/ cpp-beginners/ thread3153015.html
Добрый день, решил в качестве проекта по ООП С++ написать бота. Писать все на С++ немного мазохизм, а на питоне нельзя. Поэтому выход один - соединить 2 языка, столкнулся с проблемой совместимости версий g++ и Boost, скачал последние версии, но они не совместимы. прощу подскажите совместимые версии(если можно отправьте в ответе архивами 2 новейшие версии или ссылки на них и адекватные...
При вводе слов и чисел, слова вывести в возрастающем порядке, числа - в убывающем C++
При вводе с клавиатуры списка слов и чисел, слова вывести в возрастающем порядке, числа - в убывающем. Пример ввода: Вишня 1 Боб 3 Яблоко 22 0
C++ разные заголовочный файлы и связанные в них классы Здравствуйте. Имеем: 1. 4 заголовочных файла: main.h; FirstClass.h, SecondClass.h, ThirdClass.h; 2. В SecondClass.h есть ссылка на класс из FirstClass.h; 3. В ThirdClass.h есть ссылка на класс из SecondClass.h; https://www.cyberforum.ru/ cpp-beginners/ thread3152942.html C++ Второй цикл for выдает 0 https://www.cyberforum.ru/ cpp-beginners/ thread3152929.html
Здравствуйте! Пишу код по формуле (x-2n)/(x-3n), арифметическая прогрессия. При расчете знаменателя цикл почему-то выводит 0, абсолютно всегда. Попробовал переставить знаменатель с числителем - стало наоборот, то есть, проблема со второй формулой как позицией, цикл for почему-то не дает ее рассчитать, будто что-то теряет после расчета первой формулы. Прошу помощи, пожалуйста #include <cstdlib>...
Создайте класс Отрезок, который представляет отрезок C++
Нужна помощь с решением задачи. Вот собственно и задача: Создайте класс Отрезок, который представляет отрезок. Класс должен иметь поля для хранения двух точек - начала и конца отрезка - и методы для вычисления длины отрезка, проверки параллельности двух отрезков.
C++ Как работает программа Изучаю С++, не могу разобраться как получается 4. #include <iostream> using namespace std; void fun1(){cout<<"1"<<endl;} void fun2(){cout<<"2"<<endl;} void fun3(){cout<<"3"<<endl;} void fun4(){cout<<"4"<<endl;} https://www.cyberforum.ru/ cpp-beginners/ thread3152878.html
C++ Как получается ответ 0103 по итогу выполнения https://www.cyberforum.ru/ cpp-beginners/ thread3152875.html
Только недавно начал изучать С++ и не могу понять, как это работает, выводит 0103. #include <iostream> using namespace std; static int b = 0; template <class N> void func(N m) { static int a = b; ++b; cout<< a;
C++ Помощь в доработке программы для работы с таблицами
Ребята привет, такая проблема, написал программу для работы с таблицами. Но когда добавляем строку, вместо русского языка, он выдаёт крокозабру. Но когда программу запускаешь, изначальное содержание таблицы в нормальном виде. Работаю в Dev C++. #include <stdlib.h> #include <cstdlib> #include <iostream> #include <clocale> #include <cmath> #include <ctime> #include <iomanip> #include...
C++ Разработка класса Телевизор https://www.cyberforum.ru/ cpp-beginners/ thread3152823.html
Помогите решить задачу Задание - разработка класса Телевизор Разработайте класс TV, моделирующий работу телевизора по следующим правилам: Телевизор может быть включен либо выключен. Начальное состояние телевизора — выключен. Когда телевизор включен, он позволяет выбрать канал с 1 по 99 включительно. Нельзя выбрать канал с номером, меньшим 1 и большим 99. Выключенный телевизор не может...
C++ Отрицательный индекс в массиве https://www.cyberforum.ru/ cpp-beginners/ thread3152807.html
typedef struct PHD_MATRIX { int32_t _00; int32_t _01; int32_t _02; int32_t _03; int32_t _10; int32_t _11; int32_t _12; int32_t _13; int32_t _20;
Ошибка: выражение должно быть допустимым для изменения левосторонним значением C++
Есть код его тз "Создать абстрактный базовый класс Function (функция) с виртуальными ме¬тодами вычисления значения функции у = f(r) в заданной точке х и вывода результата на экран. Определить производные классы Ellipse (эллипс), Hyperbola (гипербола) с собственными функциями вычисления у в зависимости от входного параметра х. Уравнение эллипса х2 / а2 + у2 / b2 = 1; гиперболы: х2 / а2-у2 /b2= 1."...
C++ С какого проекта начать новичку, которой освоил базу C++ https://www.cyberforum.ru/ cpp-beginners/ thread3152655.html
Подскажите пожалуйста, или приведите примеры из личного опыта, что можно начать писать новичку, чтобы постепенно улучшались навыки владения языком и улучшилось его понимание?
1 / 1 / 0
Регистрация: 30.03.2017
Сообщений: 133
0

Быстрая функция копирования блоков памяти memcpy с использованием AVX инструкций - C++ - Ответ 17201028

01.02.2024, 22:42. Показов 1266. Ответов 14
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток есть кастомная реализация функции memcpy, которая копирует блоки памяти выровненные по 32, размером кратному 32. Вопрос, что делать если при копировании блоки не кратны 32? Я планирую использовать для копирования строк поэтому была мысль хвост добивать нулями. Но хотелось бы реализовать идею дабивки хвоста побайтно, как это сделать?

Функция копирования памяти memcpy с использованием регистров __m256

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <immintrin.h>
void avx_memcpy(void *  pvDest, void *pvSrc, size_t nBytes) {
  assert(nBytes % 32 == 0);
  assert((intptr_t(pvDest) & 31) == 0);
  assert((intptr_t(pvSrc) & 31) == 0);
  const __m256i *pSrc = reinterpret_cast<const __m256i*>(pvSrc);
  __m256i *pDest = reinterpret_cast<__m256i*>(pvDest);
  int64_t nVects = nBytes / sizeof(*pSrc);
  for (; nVects > 0; nVects--, pSrc++, pDest++) {
    const __m256i loaded = _mm256_stream_load_si256(pSrc);
    _mm256_stream_si256(pDest, loaded);
  }
  _mm_sfence();
}
Тестирование копирования:
C++
1
2
3
4
5
6
7
8
9
    wchar_t fm1 alignas(32)[1024]{L"01234"};
    wchar_t fm2 alignas(32)[] = L"Тест быстрого копирования строки с помощью функции avx_memcpy, с использованием avx инструкций!";
    
    std::wcout << fm2 << L" L: " << (sizeof(fm2) /sizeof(wchar_t)) << L" %32: " << ((sizeof(fm2) /sizeof(wchar_t))   % 32) << std::endl;
    
    avx_memcpy(fm1, fm2, (sizeof(fm2)) );
        std::wcout << fm1  << std::endl;
        _wsystem(L"pause");
        exit(0);
вывод на консоль:
Тест быстрого копирования строки с помощью функции avx_memcpy, с использованием avx инструкций! L: 96 %32: 0
Тест быстрого копирования строки с помощью функции avx_memcpy, с использованием avx инструкций!
Для продолжения нажмите любую клавишу . . .


Вернуться к обсуждению:
Быстрая функция копирования блоков памяти memcpy с использованием AVX инструкций C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.02.2024, 22:42
Готовые ответы и решения:

Отключение инструкций avx 512 на intel 11 поколения
Здравствуйте! Кто разбирался с отключением инструкций avx 512 в процессорах intel 11 поколения?...

Расширение ядра Windows XP mod 2021 c добавлением AVX инструкций
Недавно появилась модификация ядра Windows XP со включением AVX/AVX2 инструкций процессора. Теперь...

Как избавиться от побайтового копирования? memcpy
Здравствуйте, недавно использовал код , который побайтово копирует в кольцевой буфер данные...

Нужна функция быстрого копирования блока памяти
Что то типа такого: void Mcopy(POINTER adr1,POINTER adr2,INT_L len){ asm{ mov esi, adr1;//...

14
01.02.2024, 22:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.02.2024, 22:42
Помогаю со студенческими работами здесь

Сравнение SSE и AVX. Почему AVX медленнее?
Написал такой код для теста: void SSETest(float* v1, float* v2, float* r) { for (int i = 0; i...

Проверка числа на простоту с использованием AVX C++
Добрый вечер. Я новичок в программировании, поэтому обыденные для программиста вещи даются мне с...

AVX инструкции с использованием хидера imminitrin.h
Добрый день! Есть простенький код, который проверят 28 бит регистра RCX (ECX не использую, т.к....

Многократное использование блоков одних и тех же инструкций в одном обработчике
Как правильнее организовать выполнение периодически повторяющихся инструкций в коде? Функции?...

Копирование массива из структуры с использованием memcpy()
Здравствуйте. Помогите с задачкой. Есть структура. Произвольная. И массив. Например: typedef...

Функция копирования строки в заданную область памяти с конца (реверс строки)
Объясните, пожалуйста, как это сделать? Задание: Функция копирует строку в заданную область памяти...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru