Я использую свою удаленную базу данных MySQL в течение длительного времени.
Но сегодня я внезапно обнаружил, что не могу подключиться к базе данных. У меня ошибка.
«Не могу получить имя хоста с вашего IP-адреса».
Я не Этот класс содержит указатель float * на необработанный массив с плавающей запятой. Этот массив выделяется динамически с помощью стандартной функции malloc (). Теперь мне нужно ...
В моем проекте я реализовал базовый класс CVector. Этот класс содержит указатель float * на необработанный массив с плавающей запятой. Этот массив выделяется динамически с помощью стандартной функции malloc ().
Теперь мне нужно ускорить некоторые вычисления с использованием таких векторов. К сожалению, поскольку память не выделяется с помощью _mm_malloc (), она не выравнивается.
Насколько я понимаю, у меня есть два варианта:
1) Переписать код, который выделяет память для использования _mm_malloc () и, например, использовать такой код, как это:
void sub(float* v1, float* v2, float* v3, int size)
{
__m128* p_v1 = (__m128*)v1;
__m128* p_v2 = (__m128*)v2;
__m128 res;
for(int i = 0; i < size/4; ++i)
{
res = _mm_sub_ps(*p_v1,*p_v2);
_mm_store_ps(v3,res);
++p_v1;
++p_v2;
v3 += 4;
}
}
2) Второй вариант - использовать инструкцию _mm_loadu_ps () для загрузки __m128 из невыровненной памяти, а затем использовать ее для вычислений.
void sub(float* v1, float* v2, float* v3, int size)
{
__m128 p_v1;
__m128 p_v2;
__m128 res;
for(int i = 0; i < size/4; ++i)
{
p_v1 = _mm_loadu_ps(v1);
p_v2 = _mm_loadu_ps(v2);
res = _mm_sub_ps(p_v1,p_v2);
_mm_store_ps(v3,res);
v1 += 4;
v2 += 4;
v3 += 4;
}
}
Итак, мой вопрос: какой вариант будет лучше или быстрее?