2015-09-03 79 views
0

剛剛在Ubuntu 15.04安裝cuda 7.5。出於某種原因,我的索引器沒有選擇任何cuda函數。我不知道爲什麼。代碼編譯得很好,但我發現它不能按Ctrl + Space並查看我的選項。我試圖包含一些cuda頭文件,但這似乎沒有幫助。索引器適用於所有stl函數,但沒有任何以cuda開頭的函數在自動完成中顯示。CUDA 7.5問題與nsight蝕食版索引器

#include <iostream> 
#include <fstream> 
#include <cmath> 
#include <vector> 
#include <cuda.h> 
#include <cuda_runtime.h> 
#include <cuda_device_runtime_api.h> 

inline void cuda_error(cudaError_t code, const char* lbl) 
{ 
    if(code != cudaSuccess) 
    { 
     std::cerr << lbl << " : " << cudaGetErrorString(code) << std::endl; 
     exit(1); 
    } 
} 

struct City 
{ 
    int n; 
    float x, y; 

    City(int n_ = 0, float x_ = 0, float y_ = 0) : n(n_), x(x_), y(y_) { } 

    __host__ __device__ float fast_distance(const City& other) 
    { 
     float dx = other.x - x; 
     float dy = other.y - y; 
     return dx * dx + dy * dy; 
    } 
    __host__ __device__ float distance(const City& other) 
    { 
     float dx = other.x - x; 
     float dy = other.y - y; 
     return sqrtf(dx * dx + dy * dy); 
    } 
}; 

int main() 
{ 
    using namespace std; 

    ifstream fin("input.txt"); 
    vector<City> citites; 
    City c; 
    while(fin >> c.n >> c.x >> c.y) 
     citites.push_back(c); 

    City* cities_d; 
    //if I start typing cuda and hit ctrl + space there are no option displayed 
    cudaMalloc(&cities_d, sizeof(City) * citites.size()); 
    cudaMemcpy(cities_d, citites.data(), citites.size() * sizeof(City), cudaMemcpyHostToDevice); 

    return 0; 
} 

回答

1

我只是把它放在我的程序的頂部。不是很好的解決方案,但它的工作原理。我猜這個新版本的nsight沒有eclipse,默認情況下會自動包含已經包含的頭文件和cuda。

#ifdef __CDT_PARSER__ 
#undef __CUDA_RUNTIME_H__ 
#include <cuda_runtime.h> 
#endif 

現在有什麼奇怪的是,當我這樣做時,它禁用黃色突出顯示設備代碼。