我正在使用CUDAfy和C#。对于我的内核,我需要双精度。在CUDA中,这没有问题,它会自动得到支持。但是,为了支持非NVIDIA硬件,用户也应该能够使用OpenCL。据我了解,这里必须手动激活双精度。当前,编译器引发异常


  编译错误:: 8:32:错误:使用“ double”类型需要
  cl_khr_fp64启用扩展


为此,在内核代码中,通常会添加一行

#pragma OPENCL EXTENSION cl_khr_fp64 : enable


现在有办法

a)告诉CUDAfy在OpenCL硬件上启用双精度
b)加载现有的CUDA C代码而不是翻译C#代码?

我的硬件支持CUDA 3.0和OpenCL 1.2。

最佳答案

针对(a)部分

我一直在将CUDAfy与带有OpenCL 1.2的AMD Radeon 7970一起使用。使用此硬件,CUDAfy会自动实现双精度。为了在我的C#[Cudafy]内核方法中使用Doubles,我不需要启用它。

关于c# - 通过CUDAfy在OpenCL中启用 double ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34761245/

10-13 02:23