Ошибка при использовании CUDPPHandle
Я работаю над CUDA как новичок и пытаюсь выполнить предварительно написанный код, компиляция выдает ошибку при каждом использовании CUDPPHandle... например
void HPGMST()
{
//Reinitialize the ranking arrays, must be orig but this also works
CUDA_SAFE_CALL( cudaMemcpy( d_vertex_split_rank, h_vertex_split_rank_test, sizeof(unsigned long long int)*no_of_vertices, cudaMemcpyHostToDevice));
CUDA_SAFE_CALL( cudaMemcpy( d_edge_rank, h_edge_rank_test, sizeof(unsigned long long int)*no_of_edges, cudaMemcpyHostToDevice));
//Make both grids needed for execution, no_of_vertices and no_of_edges length sizes
int num_of_blocks, num_of_threads_per_block;
SetGridThreadLen(no_of_edges, &num_of_blocks, &num_of_threads_per_block);
dim3 grid_edgelen(num_of_blocks, 1, 1);
dim3 threads_edgelen(num_of_threads_per_block, 1, 1);
SetGridThreadLen(no_of_vertices, &num_of_blocks, &num_of_threads_per_block);
dim3 grid_vertexlen(num_of_blocks, 1, 1);
dim3 threads_vertexlen(num_of_threads_per_block, 1, 1);
//Append the Weight and Outgoing vertex into a single array, 8-10 bits for weight and 20-22 bits for vertex ID
//Append in Parallel on the Device itself, call the append kernel
AppendKernel_1<<< grid_edgelen, threads_edgelen, 0>>>(d_segmented_min_scan_input, d_weight, d_edge, no_of_edges);
//Create the Flag needed for segmented min scan operation, similar operation will also be used at other places
ClearArray<<< grid_edgelen, threads_edgelen, 0>>>( d_edge_flag, no_of_edges );
//Mark the segments for the segmented min scan using scan
MakeFlag_3<<< grid_vertexlen, threads_vertexlen, 0>>>( d_edge_flag, d_vertex, no_of_vertices);
//Perfom the Segmented Min Scan on resulting array using d_edge_flag as segments
cudppPlan(&segmentedScanPlan_min, config_segmented_min, no_of_edges, 1, 0 ); //Make the segmented min scan plan
Выдает следующие ошибки в последней строке:
- Аргумент типа "CUDPPHandle *" несовместим с параметром типа "CUDPPHandle"
- не существует подходящей функции преобразования из "CUDPPConfiguration" в "CUDPPHandle *"
- не существует подходящего конструктора для преобразования из "int" в "CUDPPConfiguration"
- слишком мало аргументов в вызове функции
я использую 'nvcc -arch sm_20' для компиляции на tesla C2075 любезно помочь....
1 ответ
Проблема прямо в тексте ошибки, который вы разместили:
слишком мало аргументов в вызове функции
В вашем коде всего 5 аргументов. Как можно видеть здесь, функция cudppPlan требует 6 аргументов. Похоже, вы пропустили первый аргумент в вызове.