| T O P I C R E V I E W |
| OhNoOhWeh |
Posted - Aug 27 2007 : 09:12:03 Dear forum members,
Do anybody have experience with very large models ? I have a automatically generated model containing 370.000 wires. Running this model on Windows causes memory exception due to 2GB limitation of a 32bit machine. Does the limitation also exist on a 64bit Linux system ?
Thanks in advance |
| 2 L A T E S T R E P L I E S (Newest First) |
| Sensbachtal |
Posted - Mar 17 2008 : 19:07:53 Just wanted to say Hello to everyone. Much to read and learn here, I'm sure I will enjoy ! |
| OhNoOhWeh |
Posted - Aug 30 2007 : 14:14:48 Dear forum members,
I found a solution. I've installed Fedora Core 7.9 on a Pentium 4 machine, so it automatically installs a 64bit linux system. It is downloadable from fedoraproject.org
I took the source code of FastHenry from MIT ht p://w w.rle.mit.edu/cpg/codes/fasthenry-3.0-12Nov96.tar.z
and did some changes so it compiles [:D]. You can save the following text to your disk and use "patch" to update the sources if you have the same demand.
I've tested it and 2GB doesn't seem to be a issue anymore. It still works fine due I've checked it by running th 30pin.inp on windows as well on my patched version. The result is the same as expected [8D].
If you have a AMD x64, you will have to change the Makefiles. [;)]
Have fun using it !
fasthenry-3.0-12Nov96-x64patch.patch: diff -u --recursive --new-file fasthenry-3.0-orig/src/fasthenry/Makefile fasthenry-3.0/src/fasthenry/Makefile --- fasthenry-3.0-orig/src/fasthenry/Makefile 1996-11-12 20:18:57.000000000 +0100 +++ fasthenry-3.0/src/fasthenry/Makefile 2007-08-30 13:13:18.000000000 +0200 @@ -1,4 +1,4 @@ -CFLAGS = -O -DFOUR +CFLAGS = -O -DFOUR -mtune=nocona -m64 SHELL = /bin/sh RM = /bin/rm diff -u --recursive --new-file fasthenry-3.0-orig/src/fasthenry/Makefile.default fasthenry-3.0/src/fasthenry/Makefile.default --- fasthenry-3.0-orig/src/fasthenry/Makefile.default 1996-11-12 20:18:58.000000000 +0100 +++ fasthenry-3.0/src/fasthenry/Makefile.default 2007-08-30 13:13:16.000000000 +0200 @@ -1,4 +1,4 @@ -CFLAGS = -O -DFOUR +CFLAGS = -O -DFOUR -mtune=nocona -m64 SHELL = /bin/sh RM = /bin/rm diff -u --recursive --new-file fasthenry-3.0-orig/src/fasthenry/sparse/spAllocate.c fasthenry-3.0/src/fasthenry/sparse/spAllocate.c --- fasthenry-3.0-orig/src/fasthenry/sparse/spAllocate.c 2004-08-04 00:17:17.000000000 +0200 +++ fasthenry-3.0/src/fasthenry/sparse/spAllocate.c 2007-08-30 13:13:18.000000000 +0200 @@ -105,6 +105,7 @@ #include "spConfig.h" #include "spMatrix.h" #include "spDefs.h" +#include "spAllocate.h" diff -u --recursive --new-file fasthenry-3.0-orig/src/fasthenry/sparse/spAllocate.h fasthenry-3.0/src/fasthenry/sparse/spAllocate.h --- fasthenry-3.0-orig/src/fasthenry/sparse/spAllocate.h 1970-01-01 01:00:00.000000000 +0100 +++ fasthenry-3.0/src/fasthenry/sparse/spAllocate.h 2007-08-30 13:13:18.000000000 +0200 @@ -0,0 +1,14 @@ +#ifndef _spAllocate_h__included_ +#define _spAllocate_h__included_ + +static InitializeElementBlocks( MatrixPtr Matrix, + int InitialNumberOfElements, + int NumberOfFillinsExpected ); + +static RecordAllocation( MatrixPtr Matrix, + char *AllocatedPtr ); + + +static AllocateBlockOfAllocationList( MatrixPtr Matrix ); + +#endif diff -u --recursive --new-file fasthenry-3.0-orig/src/fasthenry/sparse/spBuild.c fasthenry-3.0/src/fasthenry/sparse/spBuild.c --- fasthenry-3.0-orig/src/fasthenry/sparse/spBuild.c 2004-08-04 00:17:18.000000000 +0200 +++ fasthenry-3.0/src/fasthenry/sparse/spBuild.c 2007-08-30 13:13:18.000000000 +0200 @@ -104,6 +104,7 @@ #include "spConfig.h" #include "spMatrix.h" #include "spDefs.h" +#include "spBuild.h" diff -u --recursive --new-file fasthenry-3.0-orig/src/fasthenry/sparse/spBuild.h fasthenry-3.0/src/fasthenry/sparse/spBuild.h --- fasthenry-3.0-orig/src/fasthenry/sparse/spBuild.h 1970-01-01 01:00:00.000000000 +0100 +++ fasthenry-3.0/src/fasthenry/sparse/spBuild.h 2007-08-30 13:13:18.000000000 +0200 @@ -0,0 +1,10 @@ +#ifndef _spBuild_h__included +#define _spBuild_h__included + +static void Translate( MatrixPtr Matrix, + int* Row, int* Col ); + +static ExpandTranslationArrays( MatrixPtr Matrix, + register int NewSize ); + +#endif diff -u --recursive --new-file fasthenry-3.0-orig/src/fasthenry/sparse/spDefs.h fasthenry-3.0/src/fasthenry/sparse/spDefs.h --- fasthenry-3.0-orig/src/fasthenry/sparse/spDefs.h 2004-08-04 00:17:18.000000000 +0200 +++ fasthenry-3.0/src/fasthenry/sparse/spDefs.h 2007-08-30 13:13:18.000000000 +0200 @@ -71,6 +71,7 @@ */ #include <stdio.h> +#include <stdlib.h> /* @@ -462,7 +463,7 @@ * MEMORY ALLOCATION */ -extern char *malloc(), *calloc(), *realloc(); +/*extern char *malloc(), *calloc(), *realloc(); #ifdef ultrix extern void free(); extern void abort(); @@ -470,6 +471,7 @@ extern free(); extern abort(); #endif +*/ #define ALLOC(type,number) ((type *)malloc((unsigned)(sizeof(type)*(number)))) #define REALLOC(ptr,type,number) \ diff -u --recursive --new-file fasthenry-3.0-orig/src/fasthenry/sparse/spFactor.c fasthenry-3.0/src/fasthenry/sparse/spFactor.c --- fasthenry-3.0-orig/src/fasthenry/sparse/spFactor.c 2004-08-04 00:17:18.000000000 +0200 +++ fasthenry-3.0/src/fasthenry/sparse/spFactor.c 2007-08-30 13:13:18.000000000 +0200 @@ -103,6 +103,7 @@ #include "spConfig.h" #include "spMatrix.h" #include "spDefs.h" +#include "spFactor.h" diff -u --recursive --new-file fasthenry-3.0-orig/src/fasthenry/sparse/spFactor.h fasthenry-3.0/src/fasthenry/sparse/spFactor.h --- fasthenry-3.0-orig/src/fasthenry/sparse/spFactor.h 1970-01-01 01:00:00.000000000 +0100 +++ fasthenry-3.0/src/fasthenry/sparse/spFactor.h 2007-08-30 13:13:18.000000000 +0200 @@ -0,0 +1,32 @@ +#ifndef _spFactor_h__included_ +#define _spFactor_h__included_ + +static int FactorComplexMatrix( MatrixPtr Matrix ); +static CreateInternalVectors( MatrixPtr Matrix ); +static CountMarkowitz( MatrixPtr Matrix, register RealVector RHS, int Step ); +static MarkowitzProducts( MatrixPtr Matrix, int Step ); +static ElementPtr SearchForPivot( MatrixPtr Matrix, int Step, int DiagPivoting ); +static ElementPtr SearchForSingleton( MatrixPtr Matrix, int Step ); +static ElementPtr QuicklySearchDiagonal( MatrixPtr Matrix, int Step ); +static ElementPtr SearchDiagonal( MatrixPtr Matrix, register int Step ); +static ElementPtr SearchEntireMatrix( MatrixPtr Matrix, int Step ); +static RealNumber FindLargestInCol( register ElementPtr pElement1 ); +static RealNumber FindBiggestInColExclude( MatrixPtr Matrix, register ElementPtr pElement, register int Step ); +static ExchangeRowsAndCols( MatrixPtr Matrix, ElementPtr pPivot, register int Step ); +static ExchangeColElements( MatrixPtr Matrix, + int Row1, register ElementPtr Element1, + int Row2, register ElementPtr Element2, + int Column ); +static ExchangeRowElements( MatrixPtr Matrix, + int Col1, register ElementPtr Element1, + int Col2, register ElementPtr Element2, + int Row ); +static ComplexRowColElimination( MatrixPtr Matrix, register ElementPtr pPivot ); +static UpdateMarkowitzNumbers( MatrixPtr Matrix, ElementPtr pPivot ); +static ElementPtr CreateFillin(MatrixPtr Matrix, register int Row, int Col ); +static int MatrixIsSingular(MatrixPtr Matrix, int Step ); +static int ZeroPivot( MatrixPtr Matrix, int Step ); +static RealRowColElimination(MatrixPtr Matrix, register ElementPtr pPivot ); + + +#endif diff -u --recursive --new-file fasthenry-3.0-orig/src/fasthenry/sparse/spSolve.c fasthenry-3.0/src/fasthenry/sparse/spSolve.c --- fasthenry-3.0-orig/src/fasthenry/sparse/spSolve.c 2004-08-04 00:17:19.000000000 +0200 +++ fasthenry-3.0/src/fasthenry/sparse/spSolve.c 2007-08-30 13:13:18.000000000 +0200 @@ -93,7 +93,7 @@ #include "spConfig.h" #include "spMatrix.h" #include "spDefs.h" - +#include "spSolve.h" diff -u --recursive --new-file fasthenry-3.0-orig/src/fasthenry/sparse/spSolve.h fasthenry-3.0/src/fasthenry/sparse/spSolve.h --- fasthenry-3.0-orig/src/fasthenry/sparse/spSolve.h 1970-01-01 01:00:00.000000000 +0100 +++ fasthenry-3.0/src/fasthenry/sparse/spSolve.h 2007-08-30 13:13:18.000000000 +0200 @@ -0,0 +1,7 @@ +#ifndef _spSolve_h__included +#define _spSolve_h__included + +static void SolveComplexMatrix( MatrixPtr Matrix, RealVector RHS, RealVector Solution IMAG_VECTORS ); + + +#endif diff -u --recursive --new-file fasthenry-3.0-orig/src/fasthenry/sparse/spUtils.c fasthenry-3.0/src/fasthenry/sparse/spUtils.c --- fasthenry-3.0-orig/src/fasthenry/sparse/spUtils.c 2004-08-04 00:17:20.000000000 +0200 +++ fasthenry-3.0/src/fasthenry/sparse/spUtils.c 2007-08-30 13:13:18.000000000 +0200 @@ -105,7 +105,7 @@ #include "spConfig.h" #include "spMatrix.h" #include "spDefs.h" - +#include "spUtils.h" diff -u --recursive --new-file fasthenry-3.0-orig/src/fasthenry/sparse/spUtils.h fasthenry-3.0/src/fasthenry/sparse/spUtils.h --- fasthenry-3.0-orig/src/fasthenry/sparse/spUtils.h 1970-01-01 01:00:00.000000000 +0100 +++ fasthenry-3.0/src/fasthenry/sparse/spUtils.h 2007-08-30 13:13:18.000000000 +0200 @@ -0,0 +1,8 @@ +#ifndef _spUtils_h__included_ +#define _spUtils_h__included_ + +static RealNumber ComplexCondition( MatrixPtr Matrix, RealNumber NormOfMatrix, int* pError ); + + + +#endif Files fasthenry-3.0-orig/src/fasthenry/sparse/sparse.a and fasthenry-3.0/src/fasthenry/sparse/sparse.a differ diff -u --recursive --new-file fasthenry-3.0-orig/src/zbuf/Makefile fasthenry-3.0/src/zbuf/Makefile --- fasthenry-3.0-orig/src/zbuf/Makefile 1996-11-12 20:18:57.000000000 +0100 +++ fasthenry-3.0/src/zbuf/Makefile 2007-08-30 13:13:20.000000000 +0200 @@ -43,7 +43,7 @@ # - also used to select the correct CC macro definition for AIX machines # # for generic machine use (timers not supported) -CFLAGS = -O -DOTHER +CFLAGS = -O -DOTHER -mtune=nocona -m64 # for most machines running 4.2/3 use (only necessary if timers are needed) #CFLAGS = -O -DFOUR # for most machines running System V use (only necessary if timers are needed) diff -u --recursive --new-file fasthenry-3.0-orig/src/zbuf/Makefile.default fasthenry-3.0/src/zbuf/Makefile.default --- fasthenry-3.0-orig/src/zbuf/Makefile.default 1996-11-12 20:18:57.000000000 +0100 +++ fasthenry-3.0/src/zbuf/Makefile.default 2007-08-30 13:13:18.000000000 +0200 @@ -43,7 +43,7 @@ # - also used to select the correct CC macro definition for AIX machines # # for generic machine use (timers not supported) -CFLAGS = -O -DOTHER +CFLAGS = -O -DOTHER -mtune=nocona -m64 # for most machines running 4.2/3 use (only necessary if timers are needed) #CFLAGS = -O -DFOUR # for most machines running System V use (only necessary if timers are needed)
|
|
|