小编use*_*236的帖子

CL_MEM_USE_HOST_PTR与CL_MEM_COPY_HOST_PTR对比CL_MEM_ALLOC_HOST_PTR

在OpenCl By Action一书中我读到了这个:

CL_MEM_USE_HOST_PTR:内存对象将访问主机指针指定的内存区域.

CL_MEM_COPY_HOST_PTR:内存对象将设置主机指针指定的内存区域.

CL_MEM_ALLOC_HOST_PTR:将分配主机可访问内存中的区域以用于数据传输.

这三面旗帜让我完全糊涂了.

我想知道至少前两个有什么不同.

1-In CL_MEM_USE_HOST_PTR内存对象将访问内存区域,而在CL_MEM_COPY_HOST_PTR内存对象将设置内存区域(在两种情况下由主机指定).这个设置和访问有何不同?然后第三个又让我很困惑.

2-是否所有这些固定内存分配?

opencl

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

opencl内核中的动态全局内存分配

是否可以从内核动态分配全局内存?在CUDA中,它是可能的,但我想知道在英特尔GPU上的OpenCL中是否也可以这样做.

例如:

__kernel void foo()

{

,
,
,

call malloc or clCreateBuffer here


} 
Run Code Online (Sandbox Code Playgroud)

可能吗?如果是的话究竟如何?

opencl

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

C:错误C2105:'++'需要左值

Windows,MSVS 2010.

我无法理解为什么会产生编译错误:

#define INC(X) X++

int main() {

    int X; 
    printf("%d", INC(X++)); 

    return 0; 

}
Run Code Online (Sandbox Code Playgroud)

错误:

错误1错误C2105:'++'需要l值test.cpp 19 1测试

c macros compiler-errors

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

C:错误在将字符串传递给函数时期望')'

我正在Windows 7上使用Microsoft Visual Studio 2010编译一个小型C程序.这是一个小片段:

void test(char[] s)
{
  //some code here
}
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

期待')'

我该如何解决这个问题?

实际上完整的代码在这里,在C中实现基数排序MSD(本书第10章):

#define N // integers to be sorted with values from 0 -256 

void MSD (char[] s) {
    msd_sort(s, 0, len(s), 0)
}

msd_sort(char [][] s, int lhs, int rhs, int d )
{
    if (rhs<=lhs+1) return; 

    int * count =(int * )malloc(257*sizeof(int));
    for(int i = 0; i < N; ++i)
        count[s[i][d]+1]++;
    for(int k = 1; k < 256; ++k)
        count[k] += …
Run Code Online (Sandbox Code Playgroud)

c

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

标签 统计

c ×2

opencl ×2

compiler-errors ×1

macros ×1