opencl编程中的一个问题

这几天在看opencl编程指南,发现了一个头疼的问题,编程中有时候用cl_int 有时候用int,等等这些,开始理解是int是c的语法结构,cl_int是opencl的语法结构,编写内核用cl_int,编写c用int。但是发现c用有时候也有cl_int,内核中基本上都是int。乱了,咋能这样呢?

困难禁不住仔细研究,原来呀,cl_int只是opencl api的数据类型,int依然是opencl的数据类型,怎么理解呢?就是如果要往opencl api里面传参数或返回值的话就需要使用cl_int,其他地方都用int,opencl的语法和c的语法很大程度上是相同的。当然cl_int和int也是对应的,相当于cl_int 是int的别名。

哈哈哈,解决了,就这样理解吧。

时间: 2024-10-09 10:39:12

opencl编程中的一个问题的相关文章

在计算机编程中,一个基本的概念就是同时对多个任务加以控制

在计算机编程中,一个基本的概念就是同时对多个任务加以控制.许多程序设计问题都要求程序能够停下手 头的工作,改为处理其他一些问题,再返回主进程.可以通过多种途径达到这个目的.最开始的时候,那些 拥有机器低级知识的程序员编写一些"中断服务例程",主进程的暂停是通过硬件级的中断实现的.尽管这 是一种有用的方法,但编出的程序很难移植,由此造成了另一类的代价高昂问题. 有些时候,中断对那些实时性很强的任务来说是很有必要的.但还存在其他许多问题,它们只要求将问题划 分进入独立运行的程序片断中,使整

Erlang网络编程中的一个特别的函数prim_inet:async_accept/2(转)

为了研究怎么用Erlang写一个游戏服务器,我很幸运的下到了一份英雄远征的服务器Erlang源码,这两天花了点时间看代码,其中看到做TCP的accept动作时,它是用的一个函数prim_inet:async_accept/2,这个可跟书上说的不一样(一般来说书上教的是用gen_tcp:accept/1),于是我google了一下,发现找不到文档,再翻一下发现已经有不少人问为什么这是一个undocumented的函数,也就是说Erlang就没想让你去用这个函数,所以文档自然没提供.一般来说undo

通信服务器编程中的一个大坑

关于DAServer的延迟队列,这些年没少坑过大家!一直都是这样或那样的“小毛病”,说是小毛病,实际上都不小,引起的问题都属于那种“顽固性老毛病”,每次引起问题都觉得想不通哪里会有问题. 比如说: 曾经用GetSystemTime来获取系统事件,导致时间戳存在问题,应该使用GetLocalTime: 本应该SUpdateValue* p = m_pHead;笔误成了SUpdateValue* p = m_pNew; 多线程操作延迟数据队列而没有加锁,导致线程直接操作非法地址: C++工程中没有C

编程中的一个易错点:判断某个点是否超出棋盘边界

给定一个r行c列的棋盘,给定一个点x,y,要求判断点(x,y)处是否可以放置棋子. 判断越界时不能转化成一维判断越界,判断越界必须在二维空间中进行. r, c = 3, 3 a = [0] * (r * c) def right_legal(x, y): return r > x >= 0 and c > y >= 0 and a[x * c + y] == 0 def wrong_legal(x, y): p = x * c + y return r * c > p >

网络编程中常见错误码总结

在网络编程中,总有各种需要注意的环节,几乎每个API都要进行异常处理,判断返回值以及错误码来定位是否需要退出. 本文根据自身使用经验,总结以下错误码及其出现场景和一般处理流程. 网络编程的一般性流程如下 : 客户端 : socket -> connect -> write / read 服务端 : socket -> bind -> listen -> accept 还有因为设置属性带来的其它改变,比如非阻塞和套接字选项. EADDRINUSE : 如果你在同一个端口运行了无

C++ 关于MFC多线程编程中的一些注意事项 及自定义消息的处理

在多线程编程中,最简单的方法,无非就是利用 AfxBeginThread  来创建一个工作线程,看一下这个函数的说明: CWinThread* AFXAPI AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lp

[C] 在 C 语言编程中实现动态数组对象

对于习惯使用高级语言编程的人来说,使用 C 语言编程最头痛的问题之一就是在使用数组需要事先确定数组长度. C 语言本身不提供动态数组这种数据结构,本文将演示如何在 C 语言编程中实现一种对象来作为动态数组. /* Author: [email protected] */ 基本的 C 数组 C 语言编程中声明一个基本数组如下: int main() { // 声明一个容纳 3000 个整数的数组 int my_array[3000]; } 以上代码做了两件事: ● 在栈区开辟内存空间.准确说来是在

unix高级编程中的一个头文件 apue.h 与一个差错文件error.c 的内容

在查看unix高级编程中的代码时,如果我们编写书中的代码,发现一般都会报错,这是因为作者在写这本书时,他自己编写了一个头文件,跟一个差错处理文件,出来处理他自己的代码错误信息: 下面我们来看下代码的内容: 我实现第一个代码,关于文件的打开,实现 ls 命令的代码: #include "apue.h"#include <stdio.h>#include <dirent.h> int main(int argc, char *argv[]){ DIR *dp; st

C++模板编程中只特化模板类的一个成员函数

模板编程中如果要特化或偏特化(局部特化)一个类模板,需要特化该类模板的所有成员函数.类模板中大多数成员函数的功能可能是一模一样的,特化时我们可能只需要重新实现1.2个成员函数即可.在这种情况下,如果全部重写该模板类的所有成员函数,不但会增加工作量,也不利于代码的维护. 例如下面的类模板A,只有在模板参数是char*时才需要特化成员函数func(),但其他的成员函数都不需要特化: 1 template <typename _Ty> 2 struct A 3 { 4 // 其他成员函数a 5 //