Forum: PC Hard- und Software Gibt es ein Spice (Schaltungssimulation) auf Linux für verteiltes rechnen?


von Hans (Gast)


Lesenswert?

Auf einem einzelnen PC wird die Simulation mit Spice recht langsam, je 
grösser die Schaltung wird.

Man kann die Schaltung zwar möglicherweise in mehrere Teilschaltungen 
aufteilen, die man dann für sich simuliert, aber mich würde doch 
interessieren, ob es nicht eine Spice-Variante für Linux (evtl. auch für 
Linux und Windows gleichermaßen) gibt, dass die Berechnung im 
(Heim-)Netzwerk auf mehrere Rechner verteilt.

Ich habe mal mit "Spice distributed" und Varianten wie "Spice multiple 
Computers", "Spice networked" etc. gesucht, erhalte aber nur Antworten 
die mit der Verteilung der SW selbst oder mit der Lizensierung zu tun 
haben.

Kann mir jemand bitte einen Hinweis geben? Das wäre nett.

von Martin (Gast)


Lesenswert?

>Gibt es ein Spice (Schaltungssimulation) auf Linux für verteiltes rechnen?

ja

von Hans (Gast)


Lesenswert?

Martin schrieb:
>>Gibt es ein Spice (Schaltungssimulation) auf Linux für verteiltes rechnen?
>
> ja

Dankeschön.

Ich habe das zwar nicht ausdrücklich geschrieben, aber mich interessiert 
der Name dieser Software; für einen Link darauf, wäre ich noch 
dankbarer.
Ich möchte sie gerne herunterladen, installieren und benutzen.

von Hans (Gast)


Lesenswert?

Übrigens, Ich vergaß zu schreiben:
Ich suche eine freie, OpenSource SW der beschriebenen Art. Kommerzielle 
SW kann ich mir nicht leisten.

von Klaus P. (Gast)


Lesenswert?

Hans schrieb:
> Ich habe mal mit "Spice distributed" und Varianten wie "Spice multiple
> Computers", "Spice networked" etc. gesucht, erhalte aber nur Antworten
> die mit der Verteilung der SW selbst oder mit der Lizensierung zu tun
> haben.

Ich kann zwar keine Quelle angeben, aber suche einmal nach "Spice 
parallel", "multi core", "cluster" oder "multiple machines".

von Martin (Gast)


Lesenswert?

Hallo Hans-Hugo!

Hugo schrieb im Beitrag #4543318:
> Du hattest schon gelesen, was er sucht, oder?

Ja. Die Suchbegriffe sind halt ungeeignet. Aber Klaus P. hat ja die 
richtigen genannt.

> Ist Spice wirklich für
> verteiltes Rechnen geeignet?

ja

> Wenn du diese Frage noch beantwortest, kann
> man mit der Antwort eventuell auch was anfangen.

Die beste Antwort hilft nichts, wenn dem Fragesteller die 
Voraussetzungen fehlen, sie zu nutzen.

von Hugo (Gast)


Lesenswert?

Martin schrieb:
> Die beste Antwort hilft nichts, wenn dem Fragesteller die
> Voraussetzungen fehlen, sie zu nutzen.

Woher weißt du das? ;-)

von Hans (Gast)


Lesenswert?

Ich und Hugo sind nicht die selbe Person.

Martin: Ich kann Deine Haltung schon ein wenig verstehen.

Nachdem was ich mit den Suchbegriffen (auch denen von Klaus P.) gefunden 
habe, gibt es zwei grosse Bereiche. Kommerzielle Lösungen und solche aus 
dem akademischen Umfeld (was ich gefunden habe waren Arbeiten zu denen 
der Quellcode nicht veröffentlicht wurde).
Was ich gefunden habe (bzw. hatte) habe ich nicht weiter beschrieben. 
Man mag das einen Fehler nennen. Das gebe ich zu, denn man kann nicht 
ohne weiteres erkennen, inwiefern ich überhaupt einen Überblick habe und 
das macht es schwierig auf meine Frage zu antworten.

Die Treffer in beiden Bereichen, zielen entweder auf Multi-Core oder 
Cluster oder virtuelle Maschinen die sich auf mehrere physische 
Maschinen (und auch Kerne) verteilen.

Das kommt für mich nur in Bezug auf Multi-Core überhaupt in Frage. 
Allerdings haben nur zwei meiner Rechner mehrere Kerne. Alle Rechner 
sind relativ alt und haben AMD64 und Pentiums, einer einen Intel Core 
Duo und sind über ein Ethernet-Netzwerk verbunden. Auf Ihnen laufen 
Debians verschiedener Versionen von 8.0 oder älter. Updates wären 
allerdings kein Problem.

Meine Vorstellung ging dahin - auch das habe ich leider nicht 
geschrieben - das ich als regelmäßiger LTSpice-Benutzer eine Lösung 
finde, die sich lediglich durch den Start eines oder mehrerer Server 
bzw. eines "Aufgaben-Verteilprogrammes" (um es mal abstrakt zu benennen) 
von der mir bekannten
Vorgehensweise unterscheidet. Auch habe ich schon die 
Kommandozeilenversionen bzw. ngspice (unter gEDA) verwendet. Allerdings 
tendiere ich aus schlichter Gewohnheit dazu LTSpice zu verwenden. Darauf 
bin ich aber nicht festgelegt.

Du siehst auch, dass mir durchaus bewusst ist, das "Spice" heutzutage 
eher eine Klasse von Programmen die viele Vertreter hat, bezeichnet als 
ein einziges Programm.

Wenn Du wirklich Ahnung von dem Thema hast, dann wäre es nett, wenn Du 
mir die passenden Fragen stellst oder in meinem Überblick die Fakten 
ergänzt, die Du für unbedingt nötig hälst oder, falls das nun möglich 
geworden ist, konkrete Programme benennst.

Das wäre wirklich nett.

Ergänzend kann ich sagen, dass ich seit Jahrzehnten mit der Software und 
Hardwäre-Entwicklung zu tun habe und man mir daher, so meine ich, einige 
Intelligenz und einiges Urteilsvermögen zutrauen kann. Dass ich trotzdem 
relevante Lücken in meiner Bildung habe, möge man mir bitte verzeihen.

von Wesarion (Gast)


Lesenswert?

Hans schrieb:
> aber mich würde doch
> interessieren, ob es nicht eine Spice-Variante für Linux (evtl. auch für
> Linux und Windows gleichermaßen) gibt, dass die Berechnung im
> (Heim-)Netzwerk auf mehrere Rechner verteilt.

Du musst erst mal klären ob der Lösunsgalgoritmus von Spice überhaupt 
für verteiltes rechnen geeignet ist. Und wenn ja ob die zeit/Aufwand zum 
Datenaustausch zwichen den Computing knoten nicht den Vorteil auffrisst.

Meiner Meinung nach lohnt sich eine Schaltungzerlegung und Verteilung 
der I-U Relation an den Knoten nicht.

Was dagegen m.E. praktikabel  wäre ist die Bereiche des Paramter-sweeps 
in einem Cluster zu verteilen. Das kann man aber auch handisch tun, in 
dem man auf mehrenen Linux-PCs mehrer Spice-Instancen mit angepassten 
Paramteren aufruft und dann die Daten zusammenführt. Da muss man a 
bisserl scripten da brauchts kein extra Programmpaket dazu.

von Hans (Gast)


Lesenswert?

Wesarion schrieb:
> Hans schrieb:
[...]
>
> Du musst erst mal klären ob der Lösunsgalgoritmus von Spice überhaupt
> für verteiltes rechnen geeignet ist. Und wenn ja ob die zeit/Aufwand zum
> Datenaustausch zwichen den Computing knoten nicht den Vorteil auffrisst.

> Meiner Meinung nach lohnt sich eine Schaltungzerlegung und Verteilung
> der I-U Relation an den Knoten nicht.

Ich stimme Dir prinzipiell zu, dass eine analytische Herangehensweise 
möglich wäre, bevor man nach so einem Programm sucht. Allerdings wäre 
die sehr zeitaufwendig, denke ich.

Stattdessen gehe ich wie folgt vor:

1. Suche nach einem solchen Programm. Wenn es existiert, dann lässt sich 
plausibel annehmen dass es einen Effekt hat, wenn das auch nicht 
zwingend so sein muss. Nach den Treffern die ich gefunden habe, wurde 
das auch mehrfach untersucht und versucht und mit positivem Ergebnis. 
Allerdings oft (das habe ich nicht erschöpfend untersucht) unter 
Beschränkung auf bestimmte Arten von Bauteilen oder Topologien.

2. Ich versuche das Programm auf einige meiner Schaltungen anzuwenden 
und vergleiche die Laufzeiten. Und entweder hat das Programm einen 
Effekt oder nicht.

Leider sind meine umfangreichen Simulationen selten solche 
parametrischen Suchen, wie Du sie erwähnst, sondern ich will 
Arbeitspunkte, Pegel etc. im stationären Zustand wissen. Sog. Transiente 
Analysen die auf Newton-Raphson führen.

von Martin (Gast)


Lesenswert?

Hans schrieb:
> Leider sind meine umfangreichen Simulationen selten solche
> parametrischen Suchen, wie Du sie erwähnst, sondern ich will
> Arbeitspunkte, Pegel etc. im stationären Zustand wissen. Sog. Transiente
> Analysen die auf Newton-Raphson führen.

Das hört sich nicht nach Problemen an, die du mit einzelnen, alten 
Rechnern beschleunigen kannst, die vermutlich über lahmes Ethernet 
vernetzt sind. In komplexen diskreten Schaltungen hat jeder Knoten einen 
wesentlichen Einfluss auf jeden anderen Knoten. Das heißt, ein 
paralleler Löser kann die Schaltung im Allgemeinen nicht in schwach 
wechselwirkende Blöcke partitionieren, sondern in jedem Zeitschritt 
einer transienten Simulation muss vielfach Information von jedem Block 
mit jedem anderen ausgetauscht werden. Dies wird erst bei riesigen 
Schaltungen (10000 Elemente sind da noch ein Witz) und Latenzen zwischen 
den Rechnern im Mikrosekundenbereich effizient.

Der einzige Ansatz, der bei deiner Konfiguration, aber möglicherweise 
nicht bei deinem Typ Simulationen, erfolgversprechend sein könnte, ist 
dieser:
http://ngspice.sourceforge.net/parallel.html

von Hans (Gast)


Lesenswert?

Martin schrieb:
> Hans schrieb:
>> [...]
>
> Das hört sich nicht nach Problemen an, ...

Aha. Dankeschön.

> Der einzige Ansatz, der bei deiner Konfiguration, aber möglicherweise
> nicht bei deinem Typ Simulationen, erfolgversprechend sein könnte, ist
> dieser:
> http://ngspice.sourceforge.net/parallel.html

Dankeschön für den Link.

Nur so mal eine mehr hypothetische Frage dazu. Ich habe sicher nicht die 
Zeit das tatsächlich zu versuchen.

Müsste sich nicht eine günstige Partitionierung aus der Matrix ablesen 
lassen? Es ist zwar wohl nicht-trivial die Wechselwirkung quantitativ zu 
bestimmen, ohne vorher zu simulieren, aber Fälle in denen Teile "fast 
völlig" voneinander isoliert sind lassen sich vielleicht recht gut 
bestimmen, oder? Was hälst Du davon?

von Hans (Gast)


Lesenswert?

@ Martin

Zwischenzeitlich bin ich noch auf Xyce (https://xyce.sandia.gov/) 
gestossen. Was hälst Du davon?

von Wesarion (Gast)


Lesenswert?

Hans schrieb:
> Ich stimme Dir prinzipiell zu, dass eine analytische Herangehensweise
> möglich wäre, bevor man nach so einem Programm sucht.

???  nein es ist IMMER möglich zu schauen ob es überhaupt eine Lösung in 
der gewünschten Weise gibt.

> Allerdings wäre
> die sehr zeitaufwendig, denke ich.

Eigentlich auch nicht. Es gibt recht gute Abschätzung welche Problem 
sich gut parallelisieren lassen und welche nicht. Da gibt es einen 
Ganzen Zweig in der Mathematik der sich damit befasst - die Numerik.

Parallelisieren lohnt sich wenn der Datenaustausch gering und die Anzahl 
der Operation pro Iteration hoch ist. Hoch meint in Zeiten von Mehr-Core 
PC's vielleicht mehrere Millionen Operation die zwischen Datenaustausch 
abgearbeitet werden können. Das sehe ich bei diskreten Schaltungen nicht 
gegeben.

Bei Integrierten Schaltungen eigentlich auch nicht. Da lohnt es sich 
nach wiederkehrenden Strukturen zu suchen (Speicherfeld) - nur 
eine/wenige Repräsentanten daraus zu simulieren  und abschließend die 
Ergebnisse auf die Gesamtstruktur zu replizieren.

von Martin (Gast)


Lesenswert?

Hans schrieb:
> Müsste sich nicht eine günstige Partitionierung aus der Matrix ablesen
> lassen?

Ja. Wenn es eine gibt.

> Es ist zwar wohl nicht-trivial die Wechselwirkung quantitativ zu
> bestimmen, ohne vorher zu simulieren, aber Fälle in denen Teile "fast
> völlig" voneinander isoliert sind lassen sich vielleicht recht gut
> bestimmen, oder?

Wenn es nahezu isolierte Teile gibt, dann funktioniert auch die "shared" 
ngspice Methode. Z.B. zur Anschauung, wenn du einen Vorverstärker und 
einen Leistungsverstärker hast, wobei es keine rückkoppelnden Effekte 
vom Leistungsteil auf den Vorverstärker gibt, kannst du auf einem 
Rechner den Vorversärker rechnen. Jeweils wenn ein Zeitschritt fertig 
ist, schickst du das Ergebnis zum anderen Rechner, der damit den 
Leistungsteil simuliert. So verdoppelst du bis auf Promillebruchteile 
die Simulationsgeschwindigkeit. Sowie dich aber der Effekt der variablen 
Last auf die gemeinsame Versorgungsspannung interessiert, kannst du 
diese Methode vergessen.

Hans schrieb:
> Zwischenzeitlich bin ich noch auf Xyce (https://xyce.sandia.gov/)
> gestossen. Was hälst Du davon?

Das wäre der richtige Ansatz, wenn du 1. deine Rechner mit Infiniband 
vernetzt und 2. Probleme hast, die auf einem PC Wochen rechnen oder aber 
mehr RAM benötigen als auf einem PC verfügbar ist.

von Martin (Gast)


Lesenswert?

Hans schrieb:
> Leider sind meine umfangreichen Simulationen selten solche
> parametrischen Suchen, wie Du sie erwähnst, sondern ich will
> Arbeitspunkte, Pegel etc. im stationären Zustand wissen. Sog. Transiente
> Analysen die auf Newton-Raphson führen.

Vielleicht zeigst du einfach mal ein Beispiel, damit wir wissen, um 
welche Größenordnung es geht. Meiner Erfahrung nach sehen viele 
Ingenieure auch totalen Kinderkram als "umfangreiche Simulation" an.

von Hans (Gast)


Lesenswert?

@ Martin

OK. Dankeschön.

von Wesarion (Gast)


Lesenswert?

Hans schrieb:
> Zwischenzeitlich bin ich noch auf Xyce (https://xyce.sandia.gov/)
> gestossen. Was hälst Du davon?

Skeptisch , aus deren FAQ:
Careful attention has been paid to the specific nature of 
circuit-simulation problems to address optimal parallel efficiency, even 
as the number of processors increases. Though parallel scaling is 
problem-specific, Xyce has shown scalability out to hundreds of 
processors.


•Does Xyce come with a parts library?  ◦No. Xyce is only the simulation 
engine.


Und dann scheint es eine "parallele" Simu zu fahren, keine (übers 
Netzwerk) verteilte wie hier angefragt.

von Hans (Gast)


Lesenswert?

Martin schrieb:

Ich möchte an dieser Stelle keine Diskussion darüber führen ob mein 
Urteil, das eine Simulation umfangreich ist oder nicht nun geteilt wird 
oder nicht und das auch nicht mit einer Schaltung belegen.

Dennoch halte ich Deine Frage für berechtigt, denn mit dem Wort 
"umfangreich" habe ich suggeriert, dass ich quantitative Maßstäbe wie 
Anzahl Bauteile, Anzahl Knoten oder dazu Analoges benutzt habe.

Das ist nicht der Fall und ich muss mich leider schon wieder erklären. 
Tut mir leid. Ich meinte die Simulationszeit, die mir zu lange dauert. 
Das hat mit "umfangreich" natürlich nur mittelbar und nicht im strengen 
Sinne zu tun.
Es ist einfach so, dass alles was mehr als ein paar Stunden dauert, die 
Frage nach der Beschleunigung aufwirft (oder nach einer anderen 
Arbeitsorganisation).

Vielen Dank noch einmal und dennoch an Dich, Martin.


Weitere Hinweise auf Programme sind mir willkommen.

von Martin (Gast)


Lesenswert?

Wesarion schrieb:
> Und dann scheint es eine "parallele" Simu zu fahren, keine (übers
> Netzwerk) verteilte wie hier angefragt.

Doch, haargenau das ist der Zweck der Parallelisierung von Xyce. 
Allerdings geht es um schnelle Netzwerke.

von Martin (Gast)


Lesenswert?

Hans schrieb:
> Martin schrieb:
>
> Ich möchte an dieser Stelle keine Diskussion darüber führen ob mein
> Urteil, das eine Simulation umfangreich ist oder nicht nun geteilt wird
> oder nicht und das auch nicht mit einer Schaltung belegen.

Nein, das schrieb ich nicht. Das schriebst DU.
Da du keine konkrete Schaltung zeigen möchtest, erübrigt sich jede 
weitere Diskussion und Hilfestellung.

> Ich meinte die Simulationszeit, die mir zu lange dauert.

Das ist rein subjektiv und völlig überflüssig auch nur zu erwähnen.

> Es ist einfach so, dass alles was mehr als ein paar Stunden dauert, die
> Frage nach der Beschleunigung aufwirft (oder nach einer anderen
> Arbeitsorganisation).

Erstmal wirft es nicht die Frage nach Beschleunigung auf, sondern nach 
einem Bedienerfehler. Und ja, die Arbeitsorganisation sollte hier darin 
bestehen, es jemandem zu überlassen, der davon etwas versteht.

> Vielen Dank noch einmal und dennoch an Dich, Martin.

Keine Ursache. Es ist immer wieder interessant zu lesen, wie sehr sich 
Anfänger auch oder gerade bei völliger Ahnungslosigkeit überschätzen 
können.

> Weitere Hinweise auf Programme sind mir willkommen.

Kannst du vergessen, da wir immer noch nicht wissen, worüber wir 
eigentlich reden.

von Wesarion (Gast)


Lesenswert?

Martin schrieb:
> Wesarion schrieb:
>> Und dann scheint es eine "parallele" Simu zu fahren, keine (übers
>> Netzwerk) verteilte wie hier angefragt.
>
> Doch, haargenau das ist der Zweck der Parallelisierung von Xyce.


Auf der Website steht:

"by supporting large-scale parallel computing platforms. "

->klingt nicht nach TCP/IP Netzwerk. Allerdings steht da auch


"... and small-scale parallel runs on Unix-like Systems"  das könnte man 
vielleicht in Richtung "Zwei PC über Punkt zu Punkt" Verbindungen deuten 
- spricht jetzt für mich auch nicht unbedingt für TCP/IP Ethernet.

> Allerdings geht es um schnelle Netzwerke.

Infiniband wurde bereits erwähnt. IMHO hier nicht schnell im Sinne von 
auf hohe (Dauer-) Datenrate optimiert gemeint sondern auf geringe Latenz 
getrimmt. IMHO enstehen bei verteilen SPICE nicht grosse Datenpakete 
sondern nur ein paar Byte - die aber recht häufig - da ist Latenz der 
Knackpunkt. Und Netzwerke mit viel Adressierungs- und Routingaufwand 
ungeeignet.

Shared Memory zu benachbarten Knoten passt - das zähle ich zu Parallelen 
rechnen nicht zu distributed computing.


 Ich bezieh mich bei Netzwerk auf TCP/IP über (GiG) Ethernet. Also nicht 
nur Austausch mit direkten Nachbarn (ohne grosse addresierung/routing) 
wie beim Parallelen Rechnen.

von Martin (Gast)


Lesenswert?

Wesarion schrieb:
> Shared Memory zu benachbarten Knoten passt - das zähle ich zu Parallelen
> rechnen nicht zu distributed computing.
>
>  Ich bezieh mich bei Netzwerk auf TCP/IP über (GiG) Ethernet. Also nicht
> nur Austausch mit direkten Nachbarn (ohne grosse addresierung/routing)
> wie beim Parallelen Rechnen.

Na ist doch super, dann hast du ja vollkommen Recht. Wenn man alles auf 
eine Weise bezieht und zählt, die nicht unbedingt mit dem allgemeinen 
Verständnis übereinstimmt, kann man natürlich jede noch so abstruse 
Behauptung "belegen".

von Hans (Gast)


Lesenswert?

@ Martin

Du magst fachlich beschlagen sein. Aber Deine Diktion ist mir immer 
wieder unangenehm. Auch zeugen Deine Repliken davon, dass Du 
Schwierigkeiten hast Texte zu verstehen. Ebenso wie sie davon zeugen, 
dass Dir völlig unklar ist, das andere Menschen eine Situation zwar 
möglicherweise nicht zutreffend, aber doch aufrichtig nach bestem Wissen 
beurteilen. Dieser Tatsache begegnest Du meiner Ansicht nach 
herablassend, arrogant und herabsetzend.

Wenn ich also schreibe, dass mir weitere Hinweise auf Programme 
willkommen sind, dann bezieht sich das nicht auf Dich.

von Martin (Gast)


Lesenswert?

Hans schrieb:
> @ Martin
>
> Du magst fachlich beschlagen sein. Aber Deine Diktion ist mir immer
> wieder unangenehm. Auch zeugen Deine Repliken davon, dass Du
> Schwierigkeiten hast Texte zu verstehen. Ebenso wie sie davon zeugen,
> dass Dir völlig unklar ist, das andere Menschen eine Situation zwar
> möglicherweise nicht zutreffend, aber doch aufrichtig nach bestem Wissen
> beurteilen. Dieser Tatsache begegnest Du meiner Ansicht nach
> herablassend, arrogant und herabsetzend.

häääääääääääääääääääääh?

> Wenn ich also schreibe, dass mir weitere Hinweise auf Programme
> willkommen sind, dann bezieht sich das nicht auf Dich.

Meine Antwort bezog sich auch nicht darauf, dass nur ich dir keine Hilfe 
geben kann, wenn du keine Fakten nennst, sondern dass du es vergessen 
kannst, dass dir irgendjemand auf Basis der von dir gelieferten Infos 
ein besser geeignetes Programm nennen könnte.

von Wesarion (Gast)


Lesenswert?

Martin schrieb:
> Na ist doch super, dann hast du ja vollkommen Recht. Wenn man alles auf
> eine Weise bezieht und zählt, die nicht unbedingt mit dem allgemeinen
> Verständnis übereinstimmt, kann man natürlich jede noch so abstruse
> Behauptung "belegen".

Jetzt mal Butter bei die Fische:

Beschleunigt Xyce eine Schaltungssimulation mit einer Verteilung auf 
mehrere PC's über Intranet oder nicht?

IMHO ist das genau das Szenario was der TO agefragt hat und nicht einen 
Infiniband - Hochleistungsserver.

Wenn ja, dann lohnt sich vielleicht auch ein Blick auf Beowulf 
(https://de.wikipedia.org/wiki/Beowulf_(Cluster)) - das zum Verteilen 
beliebiger Anwendung auf PC's im Netzwerk entwickelt wurde.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.