Serving the Quantitative Finance Community

 
User avatar
Cuchulainn
Topic Author
Posts: 22933
Joined: July 16th, 2004, 7:38 am

Parallel Processing in C++

September 27th, 2006, 1:52 pm

QuoteOriginally posted by: SierpinskyJanitorTry ACE Cuch. Encapsulates all mem models and synch/assynch calls, it´s pattern-based, open-source and object-oriented, needless to say, cross-platform and std-c++ compatible.Hi Serp,We did some application work in ACE (BTW the documentation is a LOT better now) for event-driven process control problems. I like Active Objects. I make no claim to being an expert in ACE (or MPI for that matter).However, I do not see directly how it can be applied (never say never of course) for F*M applications where there is a lot of processing going on. As far as I can remember, ACE use bytes for data transfer.Inter-processor coordination in ACE would entail many listeners?MPI has been developed for HPC, ACE for others kinds of applications.
Last edited by Cuchulainn on September 26th, 2006, 10:00 pm, edited 1 time in total.
 
User avatar
Cuchulainn
Topic Author
Posts: 22933
Joined: July 16th, 2004, 7:38 am

Parallel Processing in C++

September 29th, 2006, 3:08 pm

QuoteOriginally posted by: CuchulainnThis book?QuoteAlgorithms: Sequential, Parallel, and Distributed (Hardcover) by Kenneth A. Berman, Jerome L. Paul This 962-page tome is not for he faint-hearted! It demands knowledge of graph theory, an area that has been abondoned by many IT/CS curricula because it is considered be too exacting for the students ...Does MPI just provides the plumbing and the clever stuff like load balancing is left to the programmer?
Last edited by Cuchulainn on September 28th, 2006, 10:00 pm, edited 1 time in total.
 
User avatar
Cuchulainn
Topic Author
Posts: 22933
Joined: July 16th, 2004, 7:38 am

Parallel Processing in C++

November 9th, 2006, 11:47 am

Microsoft and Paralell Computing
 
User avatar
Cuchulainn
Topic Author
Posts: 22933
Joined: July 16th, 2004, 7:38 am

Parallel Processing in C++

January 18th, 2007, 3:37 pm

QuotedcfcPart of my gripe with quiche languages like Java and C# is that they are so old fashioned. Although 20 years younger than C/C++ they contain nothing really different from the state of the art in the mid 80s.Like C++, they aren't that well designed for multi CPU architectures, having a model of the underlying computer hardware exactly the same as C.Fortress is not as bad as Java, OK that's not a very high bar, but it does seem to support parallel processing as a default, rather than a scary thing stuck on the side like a monstrous carbuncle.OK, by the time it gets out C++ will have closures, but Fortress does seem able to cope not only with multiple cores but also SIMD architectures. I respond here, the other thread has evolved/denenerated into something else ...I am with Dominic on this. You cannot develop a parallel language that waps difficult performance decisions in nice user-friendly wrappers. If you think so then one misses the point of HPC: performance, performance, performance, periodI had a meeting with a HPC guy today (PhD in CS etc.) He works on 12000-node IBM Blue Gene machine (number 12 in the top 500 supers on the planet) , 300mb streaming data per second, that kind of stuff. He said:All new HPC development is done in C++ with some old Fortran programs having to be maintained. The HPC world is very very small and very few people are going to learn a non-mainstream language for any reason because it reduces job chances and no one else understands itTrad, exner and othersI hope this is helpful. I am just the messenger. BTW I happen to agree with him. Choice; HPC programmer or desktop programmer? P.S. who said computing was easy anyway
Last edited by Cuchulainn on January 17th, 2007, 11:00 pm, edited 1 time in total.
 
User avatar
Cuchulainn
Topic Author
Posts: 22933
Joined: July 16th, 2004, 7:38 am

Parallel Processing in C++

January 18th, 2007, 4:13 pm

Another issue is that Moore's Law will stop in about 2 years according to some researcher. So instead of a big KW energy-guzzzling chip, vendors will providing clusters with lower clock speeds.
 
User avatar
Traden4Alpha
Posts: 3300
Joined: September 20th, 2002, 8:30 pm

Parallel Processing in C++

January 18th, 2007, 4:19 pm

QuoteOriginally posted by: CuchulainnAll new HPC development is done in C++ with some old Fortran programs having to be maintained. The HPC world is very very small and very few people are going to learn a non-mainstream language for any reason because it reduces job chances and no one else understands itTrad, exner and othersI hope this is helpful. I am just the messenger. BTW I happen to agree with him. Choice; HPC programmer or desktop programmer? P.S. who said computing was easy anywayI do agree with him and you. Eventually, though, HPC sensibilities will become mainstream. Otherwise Intel's shiny new 80-core CPU won't be very useful. Perhaps now is the time to start laying the groundwork for specialized HPC languages that everyone will use when the core-count grows in next 5 years and HPC == Desktop.
Last edited by Traden4Alpha on January 17th, 2007, 11:00 pm, edited 1 time in total.
 
User avatar
Cuchulainn
Topic Author
Posts: 22933
Joined: July 16th, 2004, 7:38 am

Parallel Processing in C++

January 18th, 2007, 4:33 pm

QuoteOriginally posted by: Traden4AlphaQuoteOriginally posted by: CuchulainnAll new HPC development is done in C++ with some old Fortran programs having to be maintained. The HPC world is very very small and very few people are going to learn a non-mainstream language for any reason because it reduces job chances and no one else understands itTrad, exner and othersI hope this is helpful. I am just the messenger. BTW I happen to agree with him. Choice; HPC programmer or desktop programmer? P.S. who said computing was easy anywayI do agree with him and you. Eventually, though, HPC sensibilities will become mainstream. Otherwise Intel's shiny new 80-core CPU won't be very useful. Perhaps now is the time to start laying the groundwork for specialized HPC languages that everyone will use when the core-count grows in next 5 years and HPC == Desktop.Trad,I am afraid that I cannot agree with you. Not everyone will be a HPC programmer. Leave it to specialists - like the chap I mentioned - who know it. I drive a car and has a nice engine, but I have no idea how it works. Su..ru knows its job.
Last edited by Cuchulainn on January 17th, 2007, 11:00 pm, edited 1 time in total.
 
User avatar
zeta
Posts: 26
Joined: September 27th, 2005, 3:25 pm
Location: Houston, TX
Contact:

Parallel Processing in C++

January 19th, 2007, 12:53 pm

I took Galerkin's advice and tried LAM/MPI (never done it before). Using the tutorial of Ian Foster (for MPI), I parallelized some C++ code for a 3d NMR simulation (like an MRI scan). It was trivial to say the least.... I think there is a level of HPC which is within everyone's grasp right now. Attached is a pic of the three Rb chemical sites in RbNO_3. Took about 2/3 the time as serial code, using a single node of our cluster (opterons), launched right from my laptap (turion) over the Gbit LAN.
Attachments
fig.zip
(18.87 KiB) Downloaded 44 times
 
User avatar
Cuchulainn
Topic Author
Posts: 22933
Joined: July 16th, 2004, 7:38 am

Parallel Processing in C++

January 19th, 2007, 1:02 pm

QuoteOriginally posted by: zetaI took Galerkin's advice and tried LAM/MPI (never done it before). Using the tutorial of Ian Foster (for MPI), I parallelized some C++ code for a 3d NMR simulation (like an MRI scan). It was trivial to say the least.... I think there is a level of HPC which is within everyone's grasp right now. Attached is a pic of the three Rb chemical sites in RbNO_3. Took about 2/3 the time as serial code, using a single node of our cluster (opterons), launched right from my laptap (turion) over the Gbit LAN.What's the speedup then? P.S. and you can set up a cluster usiing pcs', download MPI free, install and go. Coarse grained parallelism is OK.multi-threading s/w is something else, then CS concepts are needed. It is also possible to combine MPI and OpenMP.
Last edited by Cuchulainn on January 18th, 2007, 11:00 pm, edited 1 time in total.
 
User avatar
zeta
Posts: 26
Joined: September 27th, 2005, 3:25 pm
Location: Houston, TX
Contact:

Parallel Processing in C++

January 19th, 2007, 1:46 pm

I can't give the exact figure, but an order of magnitude is likely if I can get more nodes I agree, this is coarse grained, but as I say 'a level of HPC...'. As for OpenMP + MPI this still isn't done terribly well AFAIK. I work for two departments, one of which is CS and I'm keen to find out more about OpenMP b/c all our nodes are SMP so I would like to take advantage. I posted some papers in another thread somewhere, doesn't look like you get massive improvement(s) yet by doing both MPI + OpenMP
 
User avatar
Cuchulainn
Topic Author
Posts: 22933
Joined: July 16th, 2004, 7:38 am

Parallel Processing in C++

January 19th, 2007, 1:55 pm

QuoteOriginally posted by: zetaI can't give the exact figure, but an order of magnitude is likely if I can get more nodes I agree, this is coarse grained, but as I say 'a level of HPC...'. As for OpenMP + MPI this still isn't done terribly well AFAIK. I work for two departments, one of which is CS and I'm keen to find out more about OpenMP b/c all our nodes are SMP so I would like to take advantage. I posted some papers in another thread somewhere, doesn't look like you get massive improvement(s) yet by doing both MPI + OpenMPIn general speedup = Compute time on 1 machine/compute time on N machinesSo, let's say I want a speed up 10, how many machines do I need?
Last edited by Cuchulainn on January 18th, 2007, 11:00 pm, edited 1 time in total.
 
User avatar
zeta
Posts: 26
Joined: September 27th, 2005, 3:25 pm
Location: Houston, TX
Contact:

Parallel Processing in C++

January 19th, 2007, 2:06 pm

Based on my limited experience with a beowulf cluster it is rarely as good as 1/N (for data decomposition) because of the network latency, which grows worse with increasing message size and frequency. If you are interested in testing a system personally, there is HPCbench and I'm kinda curious to try this out myself
 
User avatar
exneratunrisk
Posts: 0
Joined: April 20th, 2004, 12:25 pm

Parallel Processing in C++

January 25th, 2007, 6:53 am

QuoteOriginally posted by: CuchulainnIn general speedup = Compute time on 1 machine/compute time on N machinesSo, let's say I want a speed up 10, how many machines do I need?This cannot be answered in advance. With coarse grain parallelisation you should have a theoretical linear speed up, butyou need to analyse processing speed and communication capacity of the concrete architecture.If you parallelize short runners (less than 0,01 sec/run?), say, in a LA Cluster (pcs in a LAN) with a 1 Gbit band it might take longer on N than on 1 processor.This might change in an 8 core environment.To analyse and test your conncrete situation (network cards, drivers,... every feature counts) a symbolic parallelisation tool might be helpful.An Austrian numerics professor has broken the worl-drecord on computation speed on the Blue Gene computer recently. How? Applying job scheduling and dispatching techniquesknown in factory automation. (the selfish processes?)
Last edited by exneratunrisk on January 24th, 2007, 11:00 pm, edited 1 time in total.
 
User avatar
Cuchulainn
Topic Author
Posts: 22933
Joined: July 16th, 2004, 7:38 am

Parallel Processing in C++

January 25th, 2007, 10:01 am

QuoteOriginally posted by: exneratunriskQuoteOriginally posted by: CuchulainnIn general speedup = Compute time on 1 machine/compute time on N machinesSo, let's say I want a speed up 10, how many machines do I need?This cannot be answered in advance. With coarse grain parallelisation you should have a theoretical linear speed up, butAn Austrian numerics processor has broken the worl-drecord on computation speed on the Blue Gene computer recently. How? Applying job scheduling and dispatching techniques known in factory automation. (the selfish processes?)Having a background in factory automation is a good preparation for HPC because of the similarities in scheduling and resource allocation. Another skill/precondition is knowledge of Complexity Analysis and computationals costs of task in a parallel application.
Last edited by Cuchulainn on January 24th, 2007, 11:00 pm, edited 1 time in total.