▶ 总体印象:适合 OpenCL 入门的书,有丰富的代码和说明,例子较为简单.先把 OpenCL 代码的基本结构(平台 → 设备 → 上下文 → 命令队列 → 创建缓冲区 → 读写缓冲区 → 编译代码 → 创建程序 → 创建内核 → 设定内核参数 → 执行内核 → 缓冲区读写 → 回收检查结果)定死了,在围绕这个结构展开算法和应用. ▶ 第一章,并行编程入门 ● 开放计算语言(Open Computuing Language,OpenCL) ● 设备语言可以高效映射到众多的内存系统构架上:主机端…
▶ 第五章,OpenCL 的并发与执行模型 ● 内存对象与上下文相关而不是与设备相关.设备在不同设备之间的移动如下,如果 kernel 在第二个设备上运行,那么在第一个设备上产生的任何数据结果在第二个设备上都是随需可用的. ● OpenCL 中任务图通过事件对象来构建,事件对象不仅注册任务的完成,而且保证被此任务访问的所有内存数据的一致性. ● 一个设备可以有多个命令队列,每个设备都必须有自己的命令队列. ● OpenCL 事件可以实现同一个上下文中的同步,而不能保证同一设备上的同步. ● su…
▶ 第十二章,在其他语言中使用 OpenCL ● JOCL(Java Building for OpenCL),PyOpenCL ● 一个 PyOpenCL 的例子代码,需要 pyopencl 包 import pyopencl as cl import numpy as np import numpy.linalg as la a = np.random.rand(50000).astype(np.float32) b = np.random.rand(50000).astype(np.flo…
今年运气比较好,学了cuda之后,了解到了gpu的另两种使用语言opencl和openacc,  opencl(Open Computing Language ,开放计算语言)是面向异构系统的并行编程语言的免费标准,支持多种设备,包含CPU(多核多线程CPU),GPU(NVIDIA,AMD),数字信号处理器(居然还支持DSP),但缺点是对源代码进行并行改进的代码量较大:  OpenACC与cudac和opencl不同,不需要学习相对更底层的东西,不需要对代码进行很大的改进,在代码中间加上相应的指…
ROS机器人程序设计(原书第2版)补充资料 (肆) 第四章 在ROS使用传感器和执行器 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 第四章主要介绍外设,之前博客内容中介绍过一些,比如手机,手柄,Arduino,rplidar,xtion,kinetic2等. 补充参考: ROS外设:http://wiki.ros.org/Sensors 1 http://blog.csdn.net/zhangrelay/article/detail…
说来凑巧,当开始着手这本书的翻译时,我刚刚入手了自己第一台四核计算机,而翻译工作临近完成之时,我又为自己添置了一台iPad 2(这是一台双核计算机).由此可见,多核计算机已经完全进入了我的日常生活.鉴于自己是一个远远落后于时尚的家伙(例如我对双核手机就不太感冒),我毫不怀疑多核计算机已经走入了千家万户.这似乎也意味着多核应用的时代真正到来了! 先别高兴得太早.如果你仔细观察,就会发现自己并没有真正进入多核世界.因为我们计算机上的大部分应用都依然是单核的.也就是说,很多时候我们只是在一台多核计算机…
多线程的基础概念本人在学习多线程的时候发现一本书——java多线程编程实战指南.整理了一下书中的概念制作成了思维导图的形式.按照书中的章节整理,并添加一些个人的理解.…
<java并发编程实战>这本书配合并发编程网中的并发系列文章一起看,效果会好很多. 并发系列的文章链接为:  Java并发性和多线程介绍目录 建议: <java并发编程实战>第3章和第4章可以暂时先跳过..这部分内容的文字和概念很多,代码块偏少.不容易看进去. 一.线程1.线程的使用可以提升程序的性能.2.线程如果没有同步,操作的执行顺序是不可预测的.3.线程之间共享数据时,必须使用同步机制.不然数据会发生无法预料的变化.二.线程的安全性 0.线程安全性:当多个线程访问某个对象时,…
最近在看多线程经典书籍Java并发变成实战,很多概念有疑惑,虽然工作中很少用到多线程,但觉得还是自己太弱了.加油.记一些随笔.下面简单介绍一下线程. 一  线程与进程   进程与线程的解释   个人觉得这个解释很形象. 二  线程的状态 线程状态图 说明:线程共包括以下5种状态.1. 新建状态(New)         : 线程对象被创建后,就进入了新建状态.例如,Thread thread = new Thread().2. 就绪状态(Runnable): 也被称为“可执行状态”.线程对象被创…
关于发布和逸出 并发编程实践中,this引用逃逸("this"escape)是指对象还没有构造完成,它的this引用就被发布出去了.这是危及到线程安全的,因为其他线程有可能通过这个逸出的引用访问到“初始化了一半”的对象(partially-constructed object).这样就会出现某些线程中看到该对象的状态是没初始化完的状态,而在另外一些线程看到的却是已经初始化完的状态,这种不一致性是不确定的,程序也会因此而产生一些无法预知的并发错误.在说明并发编程中如何避免this引用逸出…