1 Giúp em bài tập Multimedia Wed Apr 18, 2012 11:43 pm
thanhnamboy
Thành viên bắt đầu chia sẻ
Nhờ các anh chị giúp em bài tập này với.
Em chạy ví dụ của thầy giáo về tính tích vô hướng của 2 vector
Khi em nhập đầu vào cho bài toán thì đầu ra không như ý.
Kết quả sau khi chạy chương trình la:
-1.#INDOO
Mong các anh chị giúp em giải quyêt bai toán này!
Dưới đây là code chương trình:
// baitap.cpp : Tích vô hương của 2 vector.
#include "stdafx.h"
#include < conio.h >
#include < stdio.h >
#include "emmintrin.h"
#include "mmintrin.h"
#define N 1024
int main()
{
float *x =(float *)_mm_malloc(N,16);//cap phat bo nho
float *y =(float *)_mm_malloc(N,16);
x[1]=2;x[2]=4;x[3]=6;x[4]=8;
y[1]=1;y[2]=3;y[3]=5;y[4]=7;
__m128 X,Y;// kieu dl 128nbit dang so thuc
__m128 acc = _mm_setzero_ps();//kieu dl 128 bit dang so thuc...
//float k = x[1]*y[1] + x[2]*y[2] + x[3]*y[3] + x[4]*y[4];
//printf("\n%f",k);
float sum;
float*temp=(float*)_mm_malloc(4,16);
FOR ( int i=0;i < N-4;i+=4 )
{
X = _mm_load_ps(&x[i]);// lay dia chi cua pt thu i
Y = _mm_load_ps(y+i);//lay pt thu i + voi y phan tu
acc = _mm_add_ps(acc,_mm_mul_ps(X,Y));//nhan 2 so X,Y voi nhau sau do cong don ket qua lai
}
_mm_store_ps(&temp[0],acc);//dia chi tmp=0;sau khi ket qua acc tinh xong gan ket qua vao pt temp =0;
sum = temp[0]+ temp[1]+ temp[2]+temp[3];
printf("\n%f",sum);
//printf("\nsuccessful");
getch();
}
Em chạy ví dụ của thầy giáo về tính tích vô hướng của 2 vector
Khi em nhập đầu vào cho bài toán thì đầu ra không như ý.
Kết quả sau khi chạy chương trình la:
-1.#INDOO
Mong các anh chị giúp em giải quyêt bai toán này!
Dưới đây là code chương trình:
// baitap.cpp : Tích vô hương của 2 vector.
#include "stdafx.h"
#include < conio.h >
#include < stdio.h >
#include "emmintrin.h"
#include "mmintrin.h"
#define N 1024
int main()
{
float *x =(float *)_mm_malloc(N,16);//cap phat bo nho
float *y =(float *)_mm_malloc(N,16);
x[1]=2;x[2]=4;x[3]=6;x[4]=8;
y[1]=1;y[2]=3;y[3]=5;y[4]=7;
__m128 X,Y;// kieu dl 128nbit dang so thuc
__m128 acc = _mm_setzero_ps();//kieu dl 128 bit dang so thuc...
//float k = x[1]*y[1] + x[2]*y[2] + x[3]*y[3] + x[4]*y[4];
//printf("\n%f",k);
float sum;
float*temp=(float*)_mm_malloc(4,16);
FOR ( int i=0;i < N-4;i+=4 )
{
X = _mm_load_ps(&x[i]);// lay dia chi cua pt thu i
Y = _mm_load_ps(y+i);//lay pt thu i + voi y phan tu
acc = _mm_add_ps(acc,_mm_mul_ps(X,Y));//nhan 2 so X,Y voi nhau sau do cong don ket qua lai
}
_mm_store_ps(&temp[0],acc);//dia chi tmp=0;sau khi ket qua acc tinh xong gan ket qua vao pt temp =0;
sum = temp[0]+ temp[1]+ temp[2]+temp[3];
printf("\n%f",sum);
//printf("\nsuccessful");
getch();
}
Được sửa bởi thanhnamboy ngày Thu Apr 19, 2012 8:17 am; sửa lần 2.