Студия не может найти библиотеку book.h - C (СИ)
Формулировка задачи:
В общем начал осваивать куда создал первые программы.
Теперь решил переписать прграмму из книжки Сандерс Дж. Технология куда в примерах,
Вот код
выдает ошибку,vs2008 не может найти библиотеку book.h,помогите как ее подключить),заранее спс
#include <stdio.h> #include "../common/book.h" #include <cuda_runtime.h> __global__ void add( int a, int b, int *c) { *c=a+b; } int main(void) { int c; int *dev_c; HANDLE_ERROR(cudaMalloc((void**)&dev_c, sizeof(int))); add<<<1, 1>>>(2, 7, dev_c); HANDLE_ERROR(cudaMemcpy(&c, dev_c, sizeof(int), cudaMemcpyDeviceToHost)); printf("2+7=%d\n",c); cudaFree(dev_c); system("pause"); return 0; }
Решение задачи: «Студия не может найти библиотеку book.h»
textual
Листинг программы
#include <iostream> #include <stdlib.h> #include <stdio.h> #include <math.h> __global__ void add( int *a, int *b, int *c ) { *c = *a + *b; } int main( void ) { int a, b, c; // host копии a, b, c int *dev_a, *dev_b, *dev_c; // device копии of a, b, c int size = sizeof( int ); //выделяем память для device копий для a, b, c cudaMalloc( (void**)&dev_a, size ); cudaMalloc( (void**)&dev_b, size ); cudaMalloc( (void**)&dev_c, size ); a = 2; b = 7; // копируем ввод на device cudaMemcpy( dev_a, &a, size, cudaMemcpyHostToDevice ); cudaMemcpy( dev_b, &b, size, cudaMemcpyHostToDevice ); // запускаем add() kernel на GPU, передавая параметры add<<< 1, 1 >>>( dev_a, dev_b, dev_c ); // copy device result back to host copy of c cudaMemcpy( &c, dev_c, size, cudaMemcpyDeviceToHost ); printf("2+7=%d\n",c); cudaFree( dev_a ); cudaFree( dev_b ); cudaFree( dev_c ); system("pause"); return 0; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы: iostream, stdlib.h, printf.h, math.h
- Определяется функция add, которая выполняет сложение трех переданных ей указателей на int.
- В функции main создаются три переменные типа int: a, b, c.
- Создаются три указателя dev_a, dev_b, dev_c дляdevice-копий переменных a, b, c.
- Выделяется память под device-копии переменных a, b, c с помощью функции cudaMalloc.
- Значения a и b устанавливаются равными 2 и 7 соответственно.
- С помощью функции cudaMemcpy значения a и b копируются в device-копии переменных dev_a и dev_b.
- Запускается функция add на GPU с помощью команды add<<< 1, 1 >>>( dev_a, dev_b, dev_c );. Эта команда выполняет параллельную обработку данных на одном блоке GPU с размером 1x1.
- С помощью функции cudaMemcpy значение результата из device-копии переменной dev_c копируется в host-копию переменной c.
- Выводится значение c с помощью функции printf.
- С помощью функции cudaFree освобождается выделенная память под device-копии переменных dev_a, dev_b, dev_c.
- В конце программы вызывается функция system(
pause
), чтобы программа не закрылась сразу после вывода результата. - Функция main возвращает 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д