小编joe*_*ans的帖子

在CUDA分配模板函数中,不推荐使用字符串常量转换为"char*"

我已经使用CUDA __constant__指针(allocation,copyToSymbol,copyFromSymbol等)进行了一些辅助函数.我也在这里按照talonmies的建议进行错误检查.这是一个基本的工作示例:

#include <cstdio>
#include <cuda_runtime.h>

__constant__ float* d_A;

__host__ void cudaAssert(cudaError_t code,
                         char* file,
                         int line,
                         bool abort=true) {
  if (code != cudaSuccess) {
    fprintf(stderr, "CUDA Error: %s in %s at line %d\n",
           cudaGetErrorString(code), file, line);
    if (abort) {
      exit(code);
    }   
  }
}

#define cudaTry(ans) { cudaAssert((ans), __FILE__, __LINE__); }

template<typename T>
void allocateCudaConstant(T* &d_ptr,
                          size_t size) {
  size_t memsize = size * sizeof(T);
  void* ptr;
  cudaTry(cudaMalloc((void**) &ptr, memsize));
  cudaTry(cudaMemset(ptr, 0, memsize));
  cudaTry(cudaMemcpyToSymbol(d_ptr, &ptr, sizeof(ptr),
                             0, …
Run Code Online (Sandbox Code Playgroud)

c c++ cuda

1
推荐指数
1
解决办法
879
查看次数

标签 统计

c ×1

c++ ×1

cuda ×1