Zmieniony typ tablic a i b

This commit is contained in:
2016-11-17 15:12:22 +01:00
parent e47932ce65
commit 9c0f17a3fa

View File

@@ -4,11 +4,11 @@
__global__ void set(int *a,int *b, int N){ __global__ void set(char *a,char *b, int N){
int i =blockIdx.x * blockDim.x + threadIdx.x; //patrz w niej w 'multiply' int i =blockIdx.x * blockDim.x + threadIdx.x; //patrz w niej w 'multiply'
while(i<N){ while(i<N){
a[i] = 1 + (int)(sinf(i) * i * threadIdx.x) % 20; a[i] = 1 + (int)(sinf(i) * i * threadIdx.x) % 10;
b[i] = 1 + (int)(cosf(i) * i * threadIdx.x) % 20; b[i] = 1 + (int)(cosf(i) * i * threadIdx.x) % 10;
i+=blockDim.x * gridDim.x; i+=blockDim.x * gridDim.x;
} }
@@ -16,9 +16,9 @@ __global__ void set(int *a,int *b, int N){
} }
__global__ void multiply(int *a,int *b,long *c, int N){ __global__ void multiply(char *a,char *b,int *c, int N){
int i =blockIdx.x * blockDim.x + threadIdx.x; //obliczam którą komurkę tablicy mam liczyć, fajne wytłumaczenie o co chodzi jest w "cuda w przykładach" na stronie 47 int i =blockIdx.x * blockDim.x + threadIdx.x; //obliczam którą komurkę tablicy mam liczyć, fajne wytłumaczenie o co chodzi jest w "cuda w przykładach" na stronie 47
long sum = 0; int sum = 0;
int temp,temp2; int temp,temp2;
while(i<N*N){ while(i<N*N){
temp = (int)floor((float)(i/N*N)); temp = (int)floor((float)(i/N*N));
@@ -37,12 +37,13 @@ __global__ void multiply(int *a,int *b,long *c, int N){
int main(int argc, char *argv[]){ int main(int argc, char *argv[]){
int size; int size =0;
int N; int N;
char *endptr; char *endptr;
int *dev_a,*dev_b; char *dev_a,*dev_b;
long *dev_c; int *dev_c;
long *c; int *c;
//do pomiaru czasu //do pomiaru czasu
@@ -51,24 +52,22 @@ int main(int argc, char *argv[]){
size = strtol(argv[1], &endptr, 10); size = strtol(argv[1], &endptr, 10);
if (*endptr) if (*endptr){
{
perror(" Invalid array size format\n"); perror(" Invalid array size format\n");
exit(1); exit(1);
} }
if (size <= 0) if (size <= 0){
{
perror("The number of matrix dimension must be positive\n"); perror("The number of matrix dimension must be positive\n");
exit(1); exit(1);
} }
N = size*size; N = size*size;
c = (long*)malloc(N * sizeof(long)); c = (int*)malloc(N * sizeof(int));
cudaMalloc((void**)&dev_a,N*sizeof(int)); cudaMalloc((void**)&dev_a,N*sizeof(char));
cudaMalloc((void**)&dev_b,N*sizeof(int)); cudaMalloc((void**)&dev_b,N*sizeof(char));
cudaMalloc((void**)&dev_c,N*sizeof(long)); cudaMalloc((void**)&dev_c,N*sizeof(int));
set<<<20,192>>>(dev_a,dev_b,N); //wypełaianie tablic a i b 'losowymi' wartościami set<<<20,192>>>(dev_a,dev_b,N); //wypełaianie tablic a i b 'losowymi' wartościami
@@ -85,11 +84,11 @@ int main(int argc, char *argv[]){
time = tt.End(); time = tt.End();
if(false){ if(fasle){
//kopiowanie tablicy 'c' z pamieci urządzenia do hosta co by można było to odczytać, wyswietlić itp. //kopiowanie tablicy 'c' z pamieci urządzenia do hosta co by można było to odczytać, wyswietlić itp.
cudaMemcpy(c,dev_c,N*sizeof(long),cudaMemcpyDeviceToHost); cudaMemcpy(c,dev_c,N*sizeof(int),cudaMemcpyDeviceToHost);
for(int i=0;i<N;i++){ for(int i=0;i<size;i++){
printf("%ld; ",c[i]); printf("%d; ",c[i*size +i]); //wyswietlam tylko po przekatnej
} }
} }