Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <vector>
- #include <omp.h>
- #include <complex>
- #include <chrono>
- #define N 10000;
- using namespace std;
- __global__ void check(int *array, int *result){
- int tid = threadIdx.x + blockIdx.x *blockDim.x;
- if(tid < N){
- for(int i = 2; i < sqrt((double)array[tid]); i++){
- if(array[tid] % i == 0){
- result[tid] = 0;
- }
- }
- }
- }
- int main(){
- srand(time(nullptr));
- int tab[N];
- // int sum = 0;
- for(int i = 0; i < N; i++){
- tab[i] = rand()%N;
- }
- cudaEvent_t start, end;
- float time;
- cudaEventCreate(&start);
- cudaEventCreate(&end);
- int *array= nullptr;
- int *check = nullptr;
- cudaMalloc(&array, N * sizeof(int));
- cudaMalloc(&check, N * sizeof(int));
- cudaMemcpy(array, tab, sizeof(int)*N, cudaMemcpyHostToDevice);
- cudaEventRecord(start);
- check<<<N, 1>>>(array, check);
- cudaEventRecord(end);
- int result[N];
- cudaMemcpy(result, check, N * sizeof(int), cudaMemcpyDeviceToHost);
- cudaEventSynchronize(end);
- cudaEventElapsedTime(&time, start, end);
- // for(int i = 0; i < N; i++){
- // sum = sum + tab[i];
- // }
- cudaFree(array);
- cudaFree(check);
- cout << sum << endl;
- cout << time << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement