请问现在企业大多用什么语言(编程模型)开发并行程序啊?我知道的就下面这些了。请问企业大多用什么语言?谢谢各位啦! OpenMP MPI Pthreads Wi

Daneill 2011-12-07 09:30:53
请问现在企业大多用什么语言(编程模型)开发并行程序啊?我知道的就下面这些了。请问企业大多用什么语言?谢谢各位啦!

OpenMP
MPI
Pthreads
Windows threads
Java
C#
MapReduce/Hadoop
OpenCL/CUDA
TBB
UPC
X10
Erlang
...全文
335 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
AlburtHoffman 2012-07-02
  • 打赏
  • 举报
回复
Scala 和 Hashkel现在在平行领域应用的十分广泛。企业里面有很多广泛的应用,但达到大规模还说不上。
Intel_Shenghong 2011-12-08
  • 打赏
  • 举报
回复
其实不需要都学会吧,它们适用于不同的情况下,我觉得你根据你的方向选择性的钻研其中某一个方向就可以了,然后在此基础上去学习其它的其实也不难,毕竟并行开发的思想才是关键,至于语言或编程模型,更多的是一个工具,有些是随着不断的发展而来的,有些是适用环境不一样,有些适用并行情况不一样(数据并行和任务并行?)等。
首先语言就不说了,各种语言都提供了并行(更多的说是线程模型吧,但是java、c#这些一般用在真正的大规模并行开发很少吧,而且这些模型不一定都提供了java和c#的版本),一般讨论高性能并行开发可能更多的还是c和c++和Fortran了(下面只考虑c和c++)。
(1) win threads/lin pthread:属于操作系统的本地线程模型,最基本的东西了,其实也不算是并行开发,提供了基本的线程模型。
(2) OpenMP和MPI:都是标准,所谓的标准,就是说定义好了,不同的编译器去实现了。所以不同的编译器生成的OpenMP和MPI的代码是不同的,当然,标准也在更新,所以不同的编译器也不一定都支持最新的标准。其中OpenMP只能用于共享内存的环境,而MPI适用于分布式系统,所以两者使用环境是不一样的。另外,它们的底层实现应该也是需要调用操作系统线程模型去实现的。
(3) TBB和Cilk Plus:都是线程库/并行开发库,TBB是以模板的形式提供,只能用于C/C++,不能用于纯C的情况。Cilk Plus是Intel编译器提供的语言扩展,能简化多线程的开发,具体你可以看看。这些线程库主要是提供了一些模型简化并行开发,相信底层的实现仍然需要操作系统线程模型。
(4) OpenCL/CUDA:它们的特点是适用于异构系统的并行计算,所谓的异构,就是不同的CPU和不同的GPU甚至其它的计算设备一起计算。OpenCL是一个标准,不同的产商实现自己的驱动和实现,就可以共存了。CUDA具体的不太清楚,不知道它是否和OpenCL在功能上属于同一级别还是只是一个子集(只是用于GPU?)
(5) 其他几个还真不了解,嘿嘿。但是我相信应该就是不同的编程模型而已吧,上面这些库已经涉及到了同构和异构并行、共享内存和分布式并行等,应该也没有更特别的模型了吧。
好像并没有正面回答你的问题,我是觉得你收集所有的并行开发模型、语言没有必要,并行开发的主要思想还是类似的,只是它们的底层实现模型和适用环境不一样。所以你的问题:企业一般用什么模型或语言开发并行程序?这个问题就更没法正面回答了,因为不同的企业的不同业务的环境不一样,比如有些是必须考虑异构就不能用OpenMP这些了吧,然后有些还要考虑公司的开发人员擅长的是什么模型。关于语言,如果是大规模的并行计算(比如科学计算),相信更多的还是Fotran、c和c++了。至于java和c#,可能就用在一些简单的多线程开发,比如弄几个线程这样的。
大概是我的一点看法,有些地方我也不太清楚。嘿嘿。

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧