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

CUDA C++ не возвращает значение переменных - C++

Восстановить пароль Регистрация
 
Roland Discane
 Аватар для Roland Discane
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 45
22.05.2014, 01:17     CUDA C++ не возвращает значение переменных #1
Реализую пример из книжки Сандерс "Технология Cuda в примерах". Этот код
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
#include "windows.h"
 
 
#include <stdlib.h>
#include <math.h>
 
#include <cuda.h>
#include "../common/book.h"
#include "../common/cpu_anim.h"
#include "../common/cpu_bitmap.h"
#include "../common/gl_helper.h"
#include "../common/gpu_anim.h"
#include "../common/GL/glext.h"
#include "../common/GL/glut.h"
#include <stdio.h>
#include <iostream>
 
 
 
 
__global__ void add( int a, int b, int *c ) { 
    *c = a + b;
}
 
int main( void ) {
    int c;
    int *dev_c;
    cudaMalloc( (void**)&dev_c, sizeof(int) );
    add<<<1,1>>>( 2, 7, dev_c );
    cudaMemcpy( &c, dev_c, sizeof(int), cudaMemcpyDeviceToHost ); 
    printf( "2 + 7 = %d\n", c );
    cudaFree( dev_c );
    system("PAUSE");
}
при компиляции выводит на экран мусор, хранящийся в переменной c. Если я её обнулю, то будет выводить 0. Т.е. программа в неё ничего не записывает. Может кто-нибудь подскажет в чём проблема?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.05.2014, 01:35     CUDA C++ не возвращает значение переменных #2
И что возвращает cudaMemcpy()?
Roland Discane
 Аватар для Roland Discane
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 45
22.05.2014, 01:38  [ТС]     CUDA C++ не возвращает значение переменных #3
-858993460. Просто фигня какая-то
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.05.2014, 01:44     CUDA C++ не возвращает значение переменных #4
Цитата Сообщение от Roland Discane Посмотреть сообщение
-858993460. Просто фигня какая-то
???
Returns:
cudaSuccess, cudaErrorInvalidValue, cudaErrorInvalidDevicePointer, cudaErrorInvalidMemcpyDirection
Добавлено через 2 минуты
Что возвращает cudaMalloc()? Какое значение по указателю dev_c, перед вызовом cudaMemcpy()?
Roland Discane
 Аватар для Roland Discane
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 45
22.05.2014, 01:48  [ТС]     CUDA C++ не возвращает значение переменных #5
Ну это в переменной с. Я полагаю, что в с из переменной dev_c должен результат записываться.

Добавлено через 3 минуты
alsav22, Ну в __global__ передаётся 2, 7, и dev_c и должно вернуться 9. Потом из dev_c в с переписываем 9 и выводим.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.05.2014, 01:53     CUDA C++ не возвращает значение переменных #6
Цитата Сообщение от Roland Discane Посмотреть сообщение
Ну это в переменной с.
Цитата Сообщение от Roland Discane Посмотреть сообщение
Я полагаю,
Цитата Сообщение от Roland Discane Посмотреть сообщение
должно вернуться 9.
Я разве вас об этом спросил?
Roland Discane
 Аватар для Roland Discane
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 45
22.05.2014, 02:09  [ТС]     CUDA C++ не возвращает значение переменных #7
Ну cudaMalloc возвращает cudaSuccess и cudaErrorMemoryAllocation.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.05.2014, 02:12     CUDA C++ не возвращает значение переменных #8
Цитата Сообщение от Roland Discane Посмотреть сообщение
возвращает cudaSuccess и cudaErrorMemoryAllocation
Покажите, как проверяете.
Roland Discane
 Аватар для Roland Discane
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 45
22.05.2014, 02:14  [ТС]     CUDA C++ не возвращает значение переменных #9
Что проверяю? Видимо я вас немного не понимаю... Я имею в виду, что в описании функции написано, что при удачном выполнении возвращает cudaSuccess, а при ошибке - cudaErrorMemoryAllocation
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.05.2014, 02:20     CUDA C++ не возвращает значение переменных #10
Цитата Сообщение от Roland Discane Посмотреть сообщение
при удачном выполнении возвращает cudaSuccess, а при ошибке - cudaErrorMemoryAllocation
Вот это и проверяйте. О чём я вас и спрашиваю.
Roland Discane
 Аватар для Roland Discane
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 45
22.05.2014, 02:31  [ТС]     CUDA C++ не возвращает значение переменных #11
А как проверить?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2014, 02:34     CUDA C++ не возвращает значение переменных
Еще ссылки по теме:

C++ Функция не возвращает значение
Функция не возвращает значение C++
Функция не возвращает значение C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.05.2014, 02:34     CUDA C++ не возвращает значение переменных #12
Цитата Сообщение от Roland Discane Посмотреть сообщение
А как проверить?
CUDA кто занимается? Я или вы? Читайте документацию. Тут форму по С++, а не по CUDA.
Yandex
Объявления
22.05.2014, 02:34     CUDA C++ не возвращает значение переменных
Ответ Создать тему
Опции темы

Текущее время: 20:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru