Any suggestion to Intel Xeon Phi Coprocessor High Performance Computing?It supports C,C++ and Fortran.Is Open MP 4.0 free for High Performance Computing ?
OpenMP is an open API specification which works through proprocessr directives. It is implemented in many compilers (see first link) and can be enabled using some flags.
For example to compile OpenMP code with GCC (which is open source) it is needed to use -fopenmp flag. More information on how to compile with GCC in the second link.
Thank you for your message.I am really appreciate it.Is it also available for OpenCL, CUDA, GPGPU computing? Do you think it is easy to process 3D code in High Performance Computing?
OpenMP is useful for shared memory architectures and runs on CPU. CUDA is an architecture created by NVidia and it is supported only by some NVidia video cards: it allows to parallelize using GPGPU cores. OpenCL, instead, is an open standard which allows to write parallel code that can run on heterogeneous platforms such as CPU, GPGPU and others.
What do you mean for "process 3D code"? Do you mean writing parallel code?
Thank you again.Yes, writing a parallel code that will include computational fluid dynamic(CFD) code which includes a lot of numerical analysis.So,I think i need to convert C language first.I think OpenMP, CUDA or OpenCL only supports C,C++,Fortran. Do you have any suggestion? I really appreciate you.
It seems interesting. We've done something similar and we have submitted a recent publication on the same topic (see link below) but using CUDA. We worked with open source software OpenFOAM for CFD case study. Have you used an existing CFD software to define the numerical analysis? Or have you developed another software to do those calculations?
Conference Paper A Virtual Prototyping Platform to Improve CAE Analysis Workflow
Thanks a lot for the conference paper.We already have an inhouse development CFD code.We tries to convert this CFD code for High Performance Computing as a research.But,the calculations are a little bit difficult.Most of them are written in Fortran language.We convert this into High Performance Computing code.We have already written Serial, MPI and (OpenMP needs to be verified) .We wants to develop this in GPU computing version(OpenCL or CUDA) and also for Hybrid Parallel computing.Do you have any suggestions for this.I appreciate you.
OpenCL should allow you to write a single code-base for GPGPU (NVidia or ATI video cards) and Hybrid architectures (Xeon Phi, x64 architectures etc..) while CUDA allows you to write a version only for NVidia video cards (such as Tesla one). I have no experience with OpenCL but I think it must be considered as a choice. Probably you should consider also OpenACC (see link 1).
Regarding performance among OpenCL and CUDA there are many papers with different results based on the tested code and the benchmarks used: some researchers found better performance wich CUDA on NVidia video cards (see link 2), others states that OpenCL’s portability does not fundamentally affect its performance, and
OpenCL can be a good alternative to CUDA (see link 3).
If you want to deploy on Intel Xeon Phi, CUDA cannot be used but you should try MPI version already developed (I have read there are MPI implementation for Xeon Phi) or develop an OpenMP, OpenCL or OpenACC version of the code.
Wow!I am so glad to see your nice suggestion. To use OpenACC API for GPU computing tasks,is there any unique strength?Is it Opensource?I think OpenACC differs from OpenCL or CUDA. I am confused for this. OpenACC is also for GPU Computing?Do you have any suggestion?Thanks a lot for the research paper.I think we are the same research trend.
OpenACC is pretty new but there are some open source compilers (see link 1). I've never used it so you have to check if they support GPGPU programming; PGI compiler supports it but it's not open source.
I am happy to hear from your response again.Do you have any suggestion to the recent technology method and trends for High Performance Computing (including both hardware and software)?In your own opinion, which High Performance Computiing tool (either hardware or software or both) was the most useful? I really appreciate your answer.
It's not a simple choice. It depends by many aspects related to:
- types of programs and problems you want to make parallel and related algorithms (and the type of parallelism they expose) if you are interested only to a specific field;
- available budget both for buying the hardware and for maintenance (high-end cluster have very high costs to remain on);
Then I suggest you to read many papers, reports and benchmarks resulting from other related works on performance obtained by other researchers in the same field or on the algorithms that you want to use; then you will be ready to decide which is the best solution for you. On the software side I suggest to read books related to different technologies to understand the differences and the advantages of each approach in various contexts.
I've worked with MPI, OpenMP and CUDA on different topics but I have worked mainly on high-end clusters and on GPGPU. From my limited experience I have found that with GPGPU it is possible to obtain good results only in specific conditions (great data-parallelism of the problem you want to parallelize) while with high-end distributed clusters you can handle also other types of parallelism (using MPI). I don't have experience with Intel Phi architecture so I cannot give you an opinion about that architecture.
Ok. I will study the links that you given to me later .Thanks for your kindness.I need to concentrate more on this and less use on other social media for my fun.Now,I am studying the book name "Fundamentals of Engineering Numerical Analysis" by PARVIZ MOIN about Numerical Differentiation,Numerical Integration and Numerical Solution of Ordinary Differential equations and Numerical Solution of Partial Differential Equations.Is there any books similar to this?Are there any recommendation to join forum or group or discussion associated with High Performance Computing for research. Warmly welcome to your nice suggestion.I will treat you for your help if you have a chance to go to korea. Please contact me if you will come to korea.
1) HPC introductory arguments and architectures (including MPI and OpenMP):
- Parallel Computer Architecture: A Hardware/Software Approach http://www.dte.eis.uva.es/Docencia/ETSII/SMP/archivos/archibak/culler.pdf (a free draft of a good book)
- Introduction to High-Performance Scientific Computing: http://pages.tacc.utexas.edu/~eijkhout/istc/istc.html (it's free online under Creative COmmons license)
I am happy again for your answer. I read your conference paper in general.I saw your great effort in this paper.In your paper,you are described very well with virtual reality environment using CUDA for GPU computing with Open source software OpenFoam package and GCC compiler.
As for us,we are confused to choose OpenCL or CUDA for GPU computing.If you can suggest, I would like to know "why you guys choose CUDA and GCC compiler pair for High Performance Computing?" .Is it reliable?As for me," Virtual Reality,you are so wicked". "Grazie."
1) Our approach was forced by the need to parallelize existing code done with OpenFOAM and CalculiX FEM software (some authors of the papers are CAE engineers that worked on this software). At the time of doing that activity, parallelization of these libraries was better supported with CUDA while adding support for other parallelization tehnologies to these software requires much more effort;
2) Our goal was to investigate performance on GPGPU video cards (such as NVidia Tesla S2050), so CUDA was the best solution considering the suppported existing libraries.
In you case, having all the source code you can choose on other parameters. The choice of OpenCL could be preferred if you need or have plans in the future to port the same code also on other platforms that are not NVIdia GPGPU (e.g. ATI GPGPU, coprocessor Intel Xeon Phi or other many-core architectures) if you don't already have other implementations that you can port on them (probably you could already port your MPI or OpenMP implementation on some many-core architectures).
I got an amazing suggestion from you.For C programming language in High Performance Computing (GPGPU computing), is it nearly the same as in Turbo C compiler or completely difference?Do you have any suggestion for C language in High Performance Computing Environment?Is there any book that you recommend to read?
C programming is the same but for GPGPU programming you need to study also something new related to the technology that you choose:
- For CUDA you need to study CUDA C that includes extensions of C for CUDA programming; I've studied CUDA with book "Programming Massively Parallel Processors, Second Edition: A Hands-on Approach" and I find it good but there are also free tutorials in internet.
- For OpenCL you need to study OpenCL that is a C library. OpenCL Programming Guide is a book describing it but there are many other tutorials and books available freely on the web.
안녕하세요.//annyeonghaseyo.// (Hi.) Thank you.I got a nice reference from you.I attached the file named CFD/CAE Software 'Tecplot' English brochure.This is one kind of software using to plot graph.I already installed tecplot.360 ex for Complete CFD/CAE Visualization.Did you used this software before or any similar CFD/CAE Visualization tools?Are there any opinion about CFD/CAE tools?Do you have any comments or suggestons?Thanks a million.
I'm sorry, I don't know that tool. I'm not a CAE engineer and I know only a tool we have used for some tests for the project related to the paper that is ParaView. It is open source and can be used to visualize CFD/CAE results from OpenFOAM and CalculiX but also of other CAE software (see link below).
It is possible to develop software to read results from simulations using external libraries. In the paper we have used VTK (open source C++ library) that includes support for LS-DYNA, OpenFOAM and vtk format (many software allows exporting to vtk).
Thank you.Instead of converting GPU computing for Computational Fluid Dynamic Code that was wriiten in Fortran and matlab language,we choose to use hybrid approach(openMP+MPI).So,I need to study about OpenMP using C,C++ or Fortran and MPI(research paper).Is there any suggestion about hybrid (OpenMP+MPI) for further reading? I appreciate your answer.
I can suggest you the books "Parallel Programming in C with MPI and OpenMP" or "Introduction to High Performance Computing for Scientists and Engineers", which include an overview on MPI and OpenMP and have a chapter on the use of the hybrid approach.