Ошибки я получаю являются:вызов от гр CUDA приводит к ошибкам
‘blockIdx’ was not declared in this scope expected primary-expression before ‘<’ token
expected primary-expression before ‘>’ token
expected primary-expression before ‘<’ token
expected primary-expression before ‘>’ token
("<,>" относится к вызову ядра < < < >>>)
Кроме того, в Основная функция я получаю:
error: cannot convert ‘float*’ to ‘float’ for argument ‘1’ to ‘void kernel_wrapper(float*, float*, int, int)
куб файла:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <math.h>
#include <curand_kernel.h>
#include <cuda_runtime.h>
#include <cuda.h>
.....
__global__ void kernel(float* A,float *B, curandState* globalState, int Asize,int Bsize)
{
...
void kernel_wrapper(float* A_host,float* B_host, int Asize ,int Bsize)
{
...
//allocate host memory
A_host=(float*)malloc(Asize*sizeof(float));
B_host=(float*)malloc(Bsize*sizeof(float));
//allocate device memory
float* A_dev,*B_dev;
cudaMalloc((void**) &A_dev,Asize* sizeof(float));
cudaMalloc((void**) &B_dev,Bsize* sizeof(float));
....
kernel<<<1,1>>>(A_host,B_host, devStates,Asize,Bsize);
...
с файлом:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/time.h>
#include <string.h>
#include <assert.h>
#include <stdarg.h>
#include <cuda.h>
#include <cuda_runtime.h>
#include "solve.cu"
extern void kernel_wrapper(float* A,float* B, int Asize ,int Bsize);
...
int main()
{...
A = (float*)malloc(N*N*sizeof(float));
B = (float*)malloc(N*HS*sizeof(float));
...
kernel_wrapper(A,B,Asize ,Bsize);
...
Я компиляция, как:
g++ -o mycode myfile.c -I/usr/local/cuda-5.5/include -L/usr/local/cuda-5.5/lib64 -lcurand -lcutil -lcudpp -lcuda -lstdc+
Как заявляются А и В? А где код blockIdx? –
Также: g ++ предназначен для компиляции C++-источников, является ли это C или C++? –
@David Kernin: Я объявляю float * A = NULL; и тот же для B, а затем я выделяю выше (A = (float *) malloc (N * N * sizeof (float));). Файл имеет c, но я использую g ++, чтобы быть в порядке с файлом cu, который содержит iostream и т. д. .. – George