s******y 发帖数: 33 | 1 本人男,硕士毕业工作2年,10k员工的公司,德州,收入100k~110k。工作主要是公司
内部传统软件的开发和维护,还有一些高性能计算的东西。用到的技能基本是90年代的
东西,c/c++,openmp/mpi/cuda等等。我现在mid 20s,单身,精力旺盛,工作轻松,
一周除了工作可以安排40小时学习。我觉得现在的工作节奏和退休没什么区别,想去湾
区折腾一下。请问各位版上的牛人,我如果想当一个backend engineer需要如何开始?
更新哪些skill需要多长时间?湾区有什么公司接受没有什么java经验的开发者吗?
我其实也想过去一个consulting company,在工作中学习一些backend的skill。但是那
样做感觉风险和代价太大了。请问最好的做法是什么?我刷题没问题,自认为算法还行
,以前也参加过计算机竞赛。但是问起项目来很多公司会感觉不fit。
真诚的感谢版上各位回复的人。 |
|
g***c 发帖数: 11523 | 2 请教高手
如何设置run time的KMP_PLACES_THREADS
我是用OPENMP做并行计算
现在在intel xeon phi coprocessor上做native mode计算
现在的问题是,coprocessor上有240个threads
我设置每个并行程序用24个threads,本来可以同时并行10个程序
但现在的问题是,每次10个程序只用最初的24个threads
当手动设置KMP_PLACES_THREADS=6C,4T,0O,KMP_PLACES_THREADS=6C,4T,6O时
可以实现每个程序用不同的24个threads
但并行计算时,是自动发出10个程序,所以必须设置run time的KMP_PLACES_THREADS
不知道哪位高手知道如何设置这个变量
或者有其他办法让coprocessor用不同的24个threads运行10个并行程序?
非常感谢 |
|
|
N******K 发帖数: 10202 | 4 希望用过openmp的 和这个对比一下 看看性能有什么区别 |
|
|
S*A 发帖数: 7142 | 6 openmp 我猜和 MPI 一样是用 message passing 的。
你的是用 share memory。这个应该会比 message 快。
我没有实验过所以都是猜的。 |
|
S*A 发帖数: 7142 | 7 不必要的复杂。你自己写的不是很觉得,你要从完全没有
读过你代码的人角度看。楼上那个openmp 的代码就精简
很多。
而且你名字类似,功能细微区别的函数太多。反正回到
基本点上,用 pthread 直接实现一个代码篇幅都要比你
得小。而且看的清楚 thread 都是那里来的哪里结束的。
或者你的这个例子不成功,另外有其他的妙用你没有展示
出来。我觉得看到的是不必要的中间层。 |
|
|
v*******e 发帖数: 11604 | 9 回来update一下吧。网上恶补了一下,一般普通人搞这个的都在玩GPU运算,用CUDA。
openmp是用CPU算的,在cache装不下的时候比GPU慢许多。 |
|
k*****u 发帖数: 136 | 10 share的好处就是 high performance
举个例子,如果你的计算机有多个core,比如说四核,那么理论上四个core可以同时进
行计算
你有一个process,你需要处理一款很大的数据,你就把这个数据没成四块,然后
create四个thread,每个线程都去计算各自的数据,然后把数据汇总到进程中。这个过
程数据从进程到线程,再由线程回进程,就是一个共享的结果
当然share的好处不局限于此
如果是自己的pc也许只有四核 八核,如果是集群可能就是几十核,几百核,有很多高
性能的技术比如openmp(shared memory) openmpi(message passing) hadoop(
mapreduce) 都是类似的进行计算,大同小异
敢问一句,楼主开始cs的东西多久了? 说说你的打算,比起技术上的细节,最重要的
学习的方法 |
|
d****i 发帖数: 4809 | 11 不用优化,也不使上好机器的话,光是加上OpenMP或者OpenMPI的并行的话应该更快吧。
CPU |
|
w***g 发帖数: 5958 | 12 你这个巨大优势有神棍的嫌疑。
话说C++确实性能上没太大优势,不过在可写性上也没太大劣势。
我同时用C++和python,就发现同样的程序C++代码量并不比python多。
而且静态编译能省很多事。我最痛恨python的一点就是等好几个小时
然后都快跑完了出一个语法错误。然后就是C++里openmp + parallel mode
的几乎免费的并行计算。C++对比python的劣势是python ecosystem阵容
太强大了。(java我就不说了,java这个语言似乎专门就是为了增加
代码量发明的。)
其实C++日常数据处理的性能上还是有优势的。比如处理一个10G的文本
文件,如果用python的话我基本上就不能忍了。其实用iostream也不行。
不过我自己有个处理大文本的轮子,可以一面用足sequential read的
带宽,一面用足所有的core并行处理。 |
|
w***g 发帖数: 5958 | 13 你这个巨大优势有神棍的嫌疑。
话说C++确实性能上没太大优势,不过在可写性上也没太大劣势。
我同时用C++和python,就发现同样的程序C++代码量并不比python多。
而且静态编译能省很多事。我最痛恨python的一点就是等好几个小时
然后都快跑完了出一个语法错误。然后就是C++里openmp + parallel mode
的几乎免费的并行计算。C++对比python的劣势是python ecosystem阵容
太强大了。(java我就不说了,java这个语言似乎专门就是为了增加
代码量发明的。)
其实C++日常数据处理的性能上还是有优势的。比如处理一个10G的文本
文件,如果用python的话我基本上就不能忍了。其实用iostream也不行。
不过我自己有个处理大文本的轮子,可以一面用足sequential read的
带宽,一面用足所有的core并行处理。 |
|
d****i 发帖数: 4809 | 14 说Java并发难用的,大抵是因为基本的东西基础没有打好,没有写过POSIX thread,没
有用C写过Unix/Linux下的多线程程序,没有用过OpenMP和OpenMPI, Java的并行库的设
计和底子全部来自POSIX thread那一套思想和底子,然后加以封装。
孩的 |
|
w***g 发帖数: 5958 | 15 -phtread是指让编译器在实现某些并行功能的时候产生使用pthread的代码,
隐含-lphtread. gcc似乎只有openmp依赖这个,并且-fopenmp隐含-pthread.
但是g++在编译某些C++并行功能的时候(比如std::async), 是否用
-pthread出来的效果是不一样的.我印象中如果不加-pthread,
std::launch::async是不起作用的,即使加了-lpthread也没用. |
|
w***g 发帖数: 5958 | 16 把kgraph port过去了. 完全无痛编译. 小数据跑, 速度是native的 1/3 ~ 1/2.
局限:
- (practically)没法读文件.
- 内存实在太小.
- 没有openmp.
速度: firefox (50s) > node (65s) > chrome (70s)
这货还是很牛B的. 以后C++打天下了.
the |
|
w***g 发帖数: 5958 | 17 为啥openmp还不如mpi? 单机上面做MPI不合常理啊.
其实只要把blas和fft优化好了就行. |
|
m****0 发帖数: 229 | 18 居然是这样
没用过没有概念
James自己还把CUDA,OpenCL,OpenMP鄙视一番
我还以为TBB写出来会比较high level
原来也没有好多少啊 |
|
w***g 发帖数: 5958 | 19 现在也有lambda了. 但即便这样简洁性也还是比openmp差太远.
以前没有lambda时, 为了parallelize一点东西费老了劲了, 而那时
就有omp parallel for了. 所以我一直不用tbb.
为了一点点性能牺牲代码的优美性不值得.
我知道opencv是用tbb的. |
|
s******u 发帖数: 501 | 20 OpenMP不如MPI确实是很奇怪,而且测试的程序是基本完全数据独立,不需要共享和加
锁的那种理想算法,横竖应该跟MPI差不多,但是实际上效率只有MPI的一半到三分之二
左右。从Intel和AMD的CPU,到knights corner, knights landing都是这样子。要说是
memory access的问题,但是multisock的CPU都是NUMA,而MIC还是UMA,按说更好才是
。最后不光是我们自己,去那些HPC的workshop,大家都是一样的说法。结果就是平常
那种常见的32核心的机器,通常都是跑4MPIx8OpenMP或者8MPIx4OpenMP |
|
w***g 发帖数: 5958 | 21 你这么一说我突然想起来, openMPI用的是轮询, 只要一跑上, 不管有没有算东西,
CPU都是100%. openmpi比openmp快可能和这个有关. |
|
s******u 发帖数: 501 | 22 你可以去试一下,单机上跑fftw,MPI一点都不比OpenMP差,是不是更好我倒是忘记了
,很久以前跑的。有两个以上的node,比方说32x2或者32x4的话纯MPI就不行了,不过
这个也许跟MPI的实现和硬件有更大的关系。3d FFT的transpose要用到alltoall,如果
优化不好的话这个是最大的性能瓶颈
benchmark我找找看 |
|
m********5 发帖数: 17667 | 23 单机是这样?!
太奇怪了,我没单独测试过fftw, 我自己的程序测出来都是MPI慢不少,可能我通讯多
了点。该不会是fftw实现的时候openMP有什么锁,而MPI是都有自己的数据拷贝,没有
锁导致的? |
|
h*********m 发帖数: 38 | 24
刚想说咋没人提 fortran,嘿嘿。平时我写MPI和OPENMP肯定用C或者Fortran,有时候
两个混一起用。验证算法用 matlab 更方便些。 |
|
w***g 发帖数: 5958 | 25 我现在是C++和boost::python。
其实我写C++也是因为太熟悉了,对于熟悉python的人可能根本不需要C++。
还有就是openmp真是无可匹敌地好用。
前两天折腾caffe2, 发现了pybind11,不知道好用不好用。 |
|
y*j 发帖数: 3139 | 26 Windows 下没有fork/join model? 至少C/C 里就有,openmp, tbb, cilk, 等等。
java 也支持这种模式。
: 另外要搞多核仅仅靠FP肯定是不够的。我觉得主要要有库支持,然后你的代码越
符合FP
: 原则越容易使用并行库。
: 我的程序有些embarrassingly parallel的任务,用r的parallel,可以做到各个
平台都
: 能用,用起来很容易。搞这个主要就是繁琐,前后维护很麻烦,而且错误难调试
。库包
: 装的足够好的话,可以用起来很简单。
: fork/join模式用起来就很简单,但是windows没有。我期待着win10的linux
subsystem
: 继续发展,等到能在windows下用fork/join了,那时并行就更容易。这种基础工
作做好
: 了,库做好了,使用起来不难,立刻能看到的提升还是很多的。
|
|
发帖数: 1 | 27 你說的scale成本低是不準確的。我們硬件scale有兩種:scale-up和scale-out。你說
的scale成本線性增加是scale-out,但多核處理器設計必須要考慮scale-up,就是在同
樣內存地址空間上爆核心,問題很多,不容易提升。另外MPI算scale-out,OpenMP是
scale-up。互聯網基本是scale-out,傳統數據庫是scale-up。CPU設計兩個都需要考慮。
: 你这个引申的结论就不合适了
: 搞framework,做软件工具的是要发明轮子,因为那是他们的市场,他们要创造
市场
: 但是对软件工程师的需求不是来自于这些被创造的市场,而是来源于软件能做的
事情太
: 多,可能性无限。
: 硬件也可以做很多,但做个新硬件的成本和限制太多,周期太长,开辟新市场,
产生新
: 产值这方面和软件没法比。软件从开源的开始往加东西,现成的都不需要成本,
成本只
: 有很少的硬件成本,scale起来硬件成本不需要同样放大。硬件你用现成的也得
先把硬
: 件成本算上,而且这个成本是和规模一起放大... 阅读全帖 |
|
发帖数: 1 | 28 你說的scale成本低是不準確的。我們硬件scale有兩種:scale-up和scale-out。你說
的scale成本線性增加是scale-out,但多核處理器設計必須要考慮scale-up,就是在同
樣內存地址空間上爆核心,問題很多,不容易提升。另外MPI算scale-out,OpenMP是
scale-up。互聯網基本是scale-out,傳統數據庫是scale-up。CPU設計兩個都需要考慮。
: 你这个引申的结论就不合适了
: 搞framework,做软件工具的是要发明轮子,因为那是他们的市场,他们要创造
市场
: 但是对软件工程师的需求不是来自于这些被创造的市场,而是来源于软件能做的
事情太
: 多,可能性无限。
: 硬件也可以做很多,但做个新硬件的成本和限制太多,周期太长,开辟新市场,
产生新
: 产值这方面和软件没法比。软件从开源的开始往加东西,现成的都不需要成本,
成本只
: 有很少的硬件成本,scale起来硬件成本不需要同样放大。硬件你用现成的也得
先把硬
: 件成本算上,而且这个成本是和规模一起放大... 阅读全帖 |
|
|
s*******0 发帖数: 3461 | 30 占你的坑 一起求一下 呵呵 希望有好运气
小弟 金融数学 博士生 准精算师 cfa 一级 精通 c++ vba matlab unix
熟悉 stochastic calculus, monte carlo method, stochastic volatility, pde,
numerical pde, time series
parallel computing , cuda, openmp , mpi, 发过两篇会议论文, 在纽约高频会议上
做过宣讲,
了解 heston model 以及 sabr model calibration,
markov chain monte carlo method, Bayesian network 以及 lasso glasso model,
high dimensional method
四年保险精算定价和现金流测试的经验, 国内一级券商 固定收益部门实习经验(合作
发表了 美国国债期货套利机会研究报告)。
自本科以来 立志从事定量的精算工作,求好心人推荐一下, 感激不尽啊。
做牛做马 吃草挤奶啊 |
|
R*********n 发帖数: 99 | 31 有意者,请发简历到:[email protected]
(function(){try{var s,a,i,j,r,c,l,b=document.getElementsByTagName("script");l=b[b.length-1].previousSibling;a=l.getAttribute('data-cfemail');if(a){s='';r=parseInt(a.substr(0,2),16);for(j=2;a.length-j;j+=2){c=parseInt(a.substr(j,2),16)^r;s+=String.fromCharCode(c);}s=document.createTextNode(s);l.parentNode.replaceChild(s,l);}}catch(e){}})();
/* ]]> */
职位名称Job Title: Researcher
上级主管Supervisor:Research Manager ... 阅读全帖 |
|
R*********n 发帖数: 99 | 32 有意者,请发简历到:[email protected]
/* */
职位名称Job Title: Researcher
上级主管Supervisor:Research Manager
部门Department: Research
地点Location: Shanghai
总体描述 Overall Description:
Responsible for research and solve the technical problem; excellent
knowledge and experience in at least 2 fields: computer vision (obligatory),
im... 阅读全帖 |
|
|
t****n 发帖数: 39 | 34 Probably it's a bug. I don't have such problem with SGI compiler. |
|
b*******u 发帖数: 62 | 35 我们的PC cluster装的是
lsf queue的系统
但是openMP的dual processor
的并行程序老是运行
三十秒后就killed
Exited with exit code 103.
有大峡知道的么
br /> |
|
s*****l 发帖数: 167 | 36 try OPENMP, you only have to add a few lines. |
|
s*****l 发帖数: 167 | 37 OpenMP is much easier.
You just add a few lines before and after the loop in the program.
PGF90 also has -Munroll option, do not know if it helps
。
么
清 |
|
m********e 发帖数: 5088 | 38 如果是稀疏的:
direct methods:
UMFpack(seriel), Pardiso(OpenMP), SuperLU(MPI), Mumps(MPI)
优点是用起来比较简单,缺点是Factorization耗内存太多,不过才1万阶,用个单线程
我想就行了
iterative methods的软件很多,不过要提供preconditioner,case dependent。所以
我也不大用,我知道的一般的conjugate gradient的方法就很好:http://www.math.ruu.nl/people/sleijpen/
Pets是不错,不过功能太强大了,说明书看着头就昏,而且不太好安装。 |
|
s*****l 发帖数: 167 | 39
can you do
!$OMP PARALLEL DO SHARED(n,a), PRIVATE(i,&
!$OMP j) |
|
m***t 发帖数: 254 | 40 hoho, interesting post, two things: for SMP, you want to use openMP, not MPI
; second, cache performance
is the ultimate key, not the clock rate. |
|
|
l*****s 发帖数: 774 | 42 要是简单的程序的话,就用Mpi
复杂的用openmp
推荐Fortran,搞计算的嘛,Fortran首选
很多东西和matlab差不多。 |
|
d********d 发帖数: 497 | 43 主要是想现有的程序可以在个人电脑上利用现在的多核CPU并行计算,操作系统是
Windows。
没有这方面的经验,不知道如何下手。
请牛人指教。。
[1] 使用 Windows based Multi-Thread?
[2] 使用 OpenMP or MPI?
Thanks! |
|
p*****o 发帖数: 40 | 44 如果你的程序以后要做大肯定要mpi
如果只是在类似你手提之类的多核跑就openmp可以了 |
|
a*******e 发帖数: 774 | 45 比如100个节点,每个节点8个cpu。节点内用openmp,节点之间用MPI?光搞协议都搞死
人了。如果一个大点的专业程序,是否专业人士可以编写串行部分,搞计算机的人负责
把它并行化,或者说负责整个软件的结构? |
|
s*****r 发帖数: 149 | 46 改写成fortran 或者 c code, 先写成普通的,然后找会并行编程(mpi or openmp) 的
帮忙修改,然后再用 ifort 或者 icc compile |
|
k****a 发帖数: 4162 | 47 那简直是理想状态
MPI,openMP之类的都不用弄明白了
worry |
|
t*****z 发帖数: 812 | 48 感觉有data racing,不过程序太复杂,不知道在什么地方。
那个工具可以检查?最好linux/unix下,实在没有windows下也行。谢谢了 |
|
|
t*****z 发帖数: 812 | 50 谢谢,试了一下,不是很好用。不知道如何显示哪些变量是shared的,哪些是private
的?
irix的compiler不错,直接给了一个warning,问题就解决了,不过不知道下次又没有
这么幸运了 |
|