多线程

openMP本身是sequential program只有程序员指定的地方才并行运算。在指定地方,程序可以forks一堆 线程。这些线程一般都执行一样的Instructions, on different portions of data. 等所有线程执行完毕,leave regions.

OpenMP使用共享的Memory, 所有线程access same address space. 也可以有分布式memory。共享内存比较容易实现,但是不是scalable。。


加速Vector Addition。

i = thread_id. 不同Id的负责不同regions。

所以并行运算一个最简单的例子就是可以做Vector Addition.

也可以让每个Thread负责一个regions。

dot product = 元素1 in A * 元素2 in B + 元素2 in A *元素2 in B。。。

challenge: result 变量也许会被race condition read/write!


In Java:





synchronized

http://www.geeksforgeeks.org/synchronized-in-java/

Critical section 在java里面叫做Synchronized blocks. java 需要标记一个synchronized keyword.

Monitor!就是得到了Lock。所有想access 被loced moniter的地方,都会被suspended.

http://www.geeksforgeeks.org/inter-thread-communication-java/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容