Форум программистов, компьютерный форум CyberForum.ru

CUDA C/C++ сложение векторов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Квадрат натурального числа n http://www.cyberforum.ru/cpp-beginners/thread718682.html
Проверить, содержит ли квадрат натурального числа n цифру 3 в своей записи. Большое спасибо заранее!
C++ Найти количество слов, у которых первый и последний символы совпадают между собой Помогите пожалуйста написать программу, никак разобраться не могу( http://www.cyberforum.ru/cpp-beginners/thread718673.html
C++ Разработать функцию, которая находит НОК двух целых чисел.
Разработать функцию, которая находит НОК двух целых чисел.
Определить значение второго по величине элемента в последовательности чисел C++
Дана последовательность натуральных чисел (одно число в строке), завершающаяся числом 0. Определите значение второго по величине элемента в этой последовательности, то есть элемента, который будет наибольшим, если из последовательности удалить наибольший элемент. В этой задаче нельзя использовать глобальные переменные. Функция получает данные, считывая их с клавиатуры, а не получая их в виде...
C++ Подсчитать количество положительных элементов на главной диагонали матрицы http://www.cyberforum.ru/cpp-beginners/thread718629.html
В квадратной матрице А ( н х н ) элементы матрицы целые, задаются датчиком случайных чисел из интервала от-35 до 40. Подсчитать количество положительных элементов на главной диагонали. вывести результаты расчета и матрицу.
C++ Найти количество элементов кратных 4, принадлежащих главной диагонали и выше ее (задача на матрицы) в квадратной матрице К(нхн) элементы матрицы задаются произвольно. найти количество элементов кратных 4, принадлежащих главной диагонали и выше ее. заменить положительные элементы, стоящие на четных местах на удвоенное значение соответствующих индексов. вывести результаты расчета и полученную и начальную матрицу. подробнее

Показать сообщение отдельно
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402

CUDA C/C++ сложение векторов - C++

04.12.2012, 12:50. Просмотров 1977. Ответов 1
Метки (Все метки)

вроде все так делаю, но не запускается не могу понять ошибку
делаю с шаблона там просто надо заполнить недастоющие строчки
вот шаблон
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// MP 1
#include    <wb.h>
 
__global__ void vecAdd(float * in1, float * in2, float * out, int len) {
    //@@ Insert code to implement vector addition here  
 
}
 
int main(int argc, char ** argv) {
    wbArg_t args;
    int inputLength;
    float * hostInput1;
    float * hostInput2;
    float * hostOutput;
    float * deviceInput1;
    float * deviceInput2;
    float * deviceOutput;
 
    args = wbArg_read(argc, argv);
 
    wbTime_start(Generic, "Importing data and creating memory on host");
    hostInput1 = (float *) wbImport(wbArg_getInputFile(args, 0), &inputLength);
    hostInput2 = (float *) wbImport(wbArg_getInputFile(args, 1), &inputLength);
    hostOutput = (float *) malloc(inputLength * sizeof(float));
    wbTime_stop(Generic, "Importing data and creating memory on host");
 
    wbLog(TRACE, "The input length is ", inputLength);
 
    wbTime_start(GPU, "Allocating GPU memory.");
    //@@ Allocate GPU memory here
 
 
 
    wbTime_stop(GPU, "Allocating GPU memory.");
 
    wbTime_start(GPU, "Copying input memory to the GPU.");
    //@@ Copy memory to the GPU here
    
 
    wbTime_stop(GPU, "Copying input memory to the GPU.");
    
    //@@ Initialize the grid and block dimensions here
    
 
 
    
    wbTime_start(Compute, "Performing CUDA computation");
    //@@ Launch the GPU Kernel here
   
  
    cudaThreadSynchronize();
    wbTime_stop(Compute, "Performing CUDA computation");
    
    wbTime_start(Copy, "Copying output memory to the CPU");
    //@@ Copy the GPU memory back to the CPU here
  
 
    wbTime_stop(Copy, "Copying output memory to the CPU");
 
    wbTime_start(GPU, "Freeing GPU Memory");
    //@@ Free the GPU memory here
 
 
    wbTime_stop(GPU, "Freeing GPU Memory");
    
 
    wbSolution(args, hostOutput, inputLength);
 
    free(hostInput1);
    free(hostInput2);
    free(hostOutput);
 
    return 0;
}
а вот что у меня получается, но почему то не запускается подскажите где косячу
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
// MP 1
#include    <wb.h>
 
__global__ void vecAdd(float * in1, float * in2, float * out, int len) {
    //@@ Вставте код для реализации векторного сложения здесь 
    int i = threadIdx.x + blockDim.x * blockIdx.x; 
    if(i<len) out[i] = in1[i] + in2[i]; 
}
 
int main(int argc, char ** argv) {
    wbArg_t args;
    int inputLength;
    float * hostInput1;
    float * hostInput2;
    float * hostOutput;
    float * deviceInput1;
    float * deviceInput2;
    float * deviceOutput;
 
    args = wbArg_read(argc, argv);
 
    wbTime_start(Generic, "Importing data and creating memory on host");
    hostInput1 = (float *) wbImport(wbArg_getInputFile(args, 0), &inputLength);
    hostInput2 = (float *) wbImport(wbArg_getInputFile(args, 1), &inputLength);
    hostOutput = (float *) malloc(inputLength * sizeof(float));
    wbTime_stop(Generic, "Importing data and creating memory on host");
 
    wbLog(TRACE, "The input length is ", inputLength);
 
    wbTime_start(GPU, "Allocating GPU memory.");
    //@@Выделите память GPU здесь
    cudaMalloc((void **)&deviceInput1, inputLength);
    cudaMalloc((void **)&deviceInput2, inputLength);
    cudaMalloc((void **)&deviceOutput, inputLength);
 
 
    wbTime_stop(GPU, "Allocating GPU memory.");
 
    wbTime_start(GPU, "Copying input memory to the GPU.");
    //@@ Копировать память на GPU здесь
    cudaMemcpy(deviceInput1, hostInput1, inputLength, cudaMemcpyHostToDevice);
    cudaMemcpy(deviceInput2, hostInput2, inputLength, cudaMemcpyHostToDevice);
    cudaMemcpy(deviceOutput, hostOutput, inputLength, cudaMemcpyDeviceToHost);
 
 
    wbTime_stop(GPU, "Copying input memory to the GPU.");
    
    //@@ Инициализация сетки и размеры блока здесь
    dim3 DimGrid((inputLength-1)/256 +1, 1, 1);
    dim3 DimBlock(256, 1, 1);
    vecAdd<<<DimGrid, DimBlock>>>(deviceInput1, deviceInput2, deviceOutput,inputLength);
 
 
    
    wbTime_start(Compute, "Performing CUDA computation");
    //@@ Запуск ядра GPU Kernel здесь
    vecAdd<<<ceil(inputLength/256.0),256>>>(deviceInput1, deviceInput2, deviceOutput,inputLength);
  
    cudaThreadSynchronize();
    wbTime_stop(Compute, "Performing CUDA computation");
    
    wbTime_start(Copy, "Copying output memory to the CPU");
    //@@ Скопируйте  GPU память обратно на CPU здесь
    cudaMemcpy(deviceInput1, hostInput1, inputLength, cudaMemcpyDeviceToHost);
    cudaMemcpy(deviceInput2, hostInput2, inputLength, cudaMemcpyDeviceToHost);
    cudaMemcpy(deviceOutput, hostOutput, inputLength, cudaMemcpyDeviceToHost);
 
    wbTime_stop(Copy, "Copying output memory to the CPU");
 
    wbTime_start(GPU, "Freeing GPU Memory");
    //@@ Освободите память GPU здесь
 
 
    wbTime_stop(GPU, "Freeing GPU Memory");
    free(deviceInput1);
    free(deviceInput2);
    free(deviceOutput);
 
    wbSolution(args, hostOutput, inputLength);
 
    free(hostInput1);
    free(hostInput2);
    free(hostOutput);
 
    return 0;
}
работаю с эти в облаке
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru