0
我是CUDA和CUB的新手。我發現下面的代碼,並試圖編譯它,但我有這個錯誤: 致命錯誤:cub/cub.cuh:沒有這樣的文件或目錄。致命錯誤:cub/cub.cuh:沒有這樣的文件或目錄
CUDA的版本是7.0.27 我該如何解決這個錯誤?
謝謝!
所有的#include <cuda.h>
#include <cub/cub.cuh>
#include <stdio.h>
int main(){
// Declare, allocate, and initialize device pointers for input and output
int num_items = 7;
int *d_in;
int h_in[] = {8, 6, 7, 5, 3, 0, 9};
int sz = sizeof(h_in)/sizeof(h_in[0]);
int *d_out; // e.g., [ , , , , , , ]
cudaMalloc(&d_in, sz*sizeof(h_in[0]));
cudaMalloc(&d_out, sz*sizeof(h_in[0]));
cudaMemcpy(d_in, h_in, sz*sizeof(h_in[0]), cudaMemcpyHostToDevice);
printf("\nInput:\n");
for (int i = 0; i < sz; i++) printf("%d ", h_in[i]);
// Determine temporary device storage requirements
void *d_temp_storage = NULL;
size_t temp_storage_bytes = 0;
cub::DeviceScan::InclusiveSum(d_temp_storage, temp_storage_bytes, d_in, d_out, num_items);
// Allocate temporary storage
cudaMalloc(&d_temp_storage, temp_storage_bytes);
// Run inclusive prefix sum
cub::DeviceScan::InclusiveSum(d_temp_storage, temp_storage_bytes, d_in, d_out, num_items);
// d_out s<-- [8, 14, 21, 26, 29, 29, 38]
cudaMemcpy(h_in, d_out, sz*sizeof(h_in[0]), cudaMemcpyDeviceToHost);
printf("\nOutput:\n");
for (int i = 0; i < sz; i++) printf("%d ", h_in[i]);
printf("\n");
return 0;
}
您必須單獨安裝CUB。它不包含在cuda工具包中。你可以得到CUB [這裏](https://github.com/NVlabs/cub)。請注意,CUDA 7現在已經很老了。您可能需要爲此選擇較舊版本的CUB。 –