![]() |
|
Speedup NEC-Engine, using multiple CPU-Cores
Has anybody a solution to speedup the NEC-Engine, using multiple CPU-
Cores? In standard use, only one NEC-Engine is running. The NEC-Engine does not use multi-threading technique and therefore only one CPU-Core is running. Todays computers have multiple cores. Even I am using one with two cores (Intel Dual-Core). And there are more cores available in the future (3,4 and more). My question is, is threre a solution for speeding up the antenna calculation using NEC2/4-Engine? If not, I plan to code a wrapper NEC- Engine, that is able to busy all CPU-Cores and merging the results to one output file. Especially antenna calculation can be easly divided into multiple parts (eg. radiation pattern division). If there is a solution, I do not want to reinvent the tire again. Regards, Aziz |
Speedup NEC-Engine, using multiple CPU-Cores
On 23 Sep, 12:34, wrote:
Has anybody a solution to speedup the NEC-Engine, using multiple CPU- Cores? In standard use, only one NEC-Engine is running. The NEC-Engine does not use multi-threading technique and therefore only one CPU-Core is running. Todays computers have multiple cores. Even I am using one with two cores (Intel Dual-Core). And there are more cores available in the future (3,4 and more). My question is, is threre a solution for speeding up the antenna calculation using NEC2/4-Engine? If not, I plan to code a wrapper NEC- Engine, that is able to busy all CPU-Cores and merging the results to one output file. Especially antenna calculation can be easly divided into multiple parts (eg. radiation pattern division). If there is a solution, I do not want to reinvent the tire again. Regards, Aziz Way to go Aziz, programmers are not keeping up with machines available. You could make a lot of money with that Art KB9MZ.....XG |
Speedup NEC-Engine, using multiple CPU-Cores
On Sep 23, 12:34 pm, wrote:
Has anybody a solution to speedup the NEC-Engine, using multiple CPU- Cores? In standard use, only one NEC-Engine is running. The NEC-Engine does not use multi-threading technique and therefore only one CPU-Core is running. The NEC engine calls standard matrix math routines, so one can replace the libraries with a multicore library (or, even, with a MPI based cluster library). This can help a lot on huge models (thousands of segments) Todays computers have multiple cores. Even I am using one with two cores (Intel Dual-Core). And there are more cores available in the future (3,4 and more). My question is, is threre a solution for speeding up the antenna calculation using NEC2/4-Engine? If not, I plan to code a wrapper NEC- Engine, that is able to busy all CPU-Cores and merging the results to one output file. Especially antenna calculation can be easly divided into multiple parts (eg. radiation pattern division). If there is a solution, I do not want to reinvent the tire again. Or when you're doing multiple frequencies. The NEC engine does things in several chunks: a) building the matrix from all the geometry, including the coupling between segments -this is frequency dependent b) solving the matrix for the segment currents - this is a straightforward (but time consuming) linear equation solving process c) calculating the field by integrating all the segment currents - this is independent among the az/el's or near field points in the output. So there's opportunities for parallelism in each of the three chunks, some of which are almost embarassingly parallel (EP). a) if you're doing an analysis at multiple frequencies, running each frequency on a separate machine/core is a great idea, since they're essentially independent. b) as you suggested, breaking up the output computation (c, above) is a natural c) using a multicore or cluster matrix math package can help with b, above. Whatever you do, you should seriously contemplate basing your work on the NEC4 engine, rather than the older NEC 2 engine. Sure, you'll have to pay for it, but it's structured better for what you want to do, and more accurate to boot. |
Speedup NEC-Engine, using multiple CPU-Cores
|
Speedup NEC-Engine, using multiple CPU-Cores
"Roy Lewallen" wrote in message ... wrote: . . . Whatever you do, you should seriously contemplate basing your work on the NEC4 engine, rather than the older NEC 2 engine. Sure, you'll have to pay for it, but it's structured better for what you want to do, and more accurate to boot. I was recently told that the non-commercial NEC-4 license doesn't include source code. I haven't confirmed this, but it's something you should investigate before purchasing an NEC-4 license if you intend to modify the source code. You'll also, of course, need a Fortran compiler capable of compiling a multi-threaded application. Roy Lewallen, W7EL I have a non-commercial license, and it came with NEC 4.1 FORTRAN source code. Frank |
Speedup NEC-Engine, using multiple CPU-Cores
On Sep 23, 7:47 pm, Roy Lewallen wrote:
wrote: I was recently told that the non-commercial NEC-4 license doesn't include source code. I haven't confirmed this, but it's something you should investigate before purchasing an NEC-4 license if you intend to modify the source code. My non-commercial copy included Source. I can't imagine that getting only precompiled versions would be particularly useful, unless they're willing to make a whole raft of versions (more than you get with the release I got) with various values for the maximum segments, etc. OTOH, LLL did just change management, so they assigned all the licenses from UC to the new LLL management consortium, and maybe they changed how it works for new licenses. The website still says to make your check payable to Regents of UC http://www.llnl.gov/ipac/technology/...titles/nec.php And someday, Gerry Burke is going to retire, and whoever picks it up from him may not be as willing and helpful to, for instance, recompile peculiar versions for you. You'll also, of course, need a Fortran compiler capable of compiling a multi-threaded application. That would be if you're doing finegrained parallelism (e.g. using a multiprocessor BLAS library. Several of the strategies (dividing it up by frequency) could actually be done by a reasonably simple shell script/batch file that fires off the executable on different processors with different input files. For my own NEC on a Cluster runs, I've done the separate runs on separate machines and merge the output files in post processing strategy. Roy Lewallen, W7EL |
Speedup NEC-Engine, using multiple CPU-Cores
|
Speedup NEC-Engine, using multiple CPU-Cores
It seems to be difficult to realize my wish! Nevertheless I will start
with an simple antenna optimizer using multiple cpu cores without modifiying the nec-engines (e.g. NEC2 executables). Antenna optimization can be easily parallelized. Every sort of antenna parameters (experiment) could run on different processes and therefore can take advantage of multiple cpu cores. I will see, how far I can go. Aziz |
Speedup NEC-Engine, using multiple CPU-Cores
On Sep 23, 9:27 pm, "Frank" wrote:
"Roy Lewallen" wrote in message ... wrote: . . . Whatever you do, you should seriously contemplate basing your work on the NEC4 engine, rather than the older NEC 2 engine. Sure, you'll have to pay for it, but it's structured better for what you want to do, and more accurate to boot. I was recently told that the non-commercial NEC-4 license doesn't include source code. I haven't confirmed this, but it's something you should investigate before purchasing an NEC-4 license if you intend to modify the source code. You'll also, of course, need a Fortran compiler capable of compiling a multi-threaded application. Roy Lewallen, W7EL I have a non-commercial license, and it came with NEC 4.1 FORTRAN source code. Frank I'll jump in here without knowing much about the program, but in general having the Fortran source code doesn't do much to solve your problem. The function calls to the run-time system is where the problems will occur. Unless there are versions that support multi- processors, you are still screwed. Paul, KD7HB |
Speedup NEC-Engine, using multiple CPU-Cores
Hello Roy,
That would be if you're doing finegrained parallelism (e.g. using a multiprocessor BLAS library. Several of the strategies (dividing it up by frequency) could actually be done by a reasonably simple shell script/batch file that fires off the executable on different processors with different input files. For my own NEC on a Cluster runs, I've done the separate runs on separate machines and merge the output files in post processing strategy. Using Clusters, remembers me to my past university days. Indeed, I used up to 20-60 personal computers on the computer centre, to compute a ray-tracing movie. That was in the 90īth. How do you handle the process communication? And how do you handle the results? There are more reasonably possibilities to speed up antenna calculation and in special case of course optimizing too. The reason, why I am want to speed up is, that antenna optimizing takes a lot of time. I am often using the optimizing tool of 4nec2. It is a very nice feature of 4nec2, to parameterize the antanne elements using mathematical formulas. Anyone here, using this feature extensiv? Aziz |
All times are GMT +1. The time now is 10:31 PM. |
|
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
RadioBanter.com