Single- to Multicore

Hallo Leute,
habe hier folgendes Problem:

Ich habe eine Anwendung auf einem Multicoresystem geschrieben (Core2 Duo). Sämtliche
Tests, Debuggen etc. laufen einwandfrei auf diesem System. Sobald ich das Programm
aber auf dem Zielsystem laufen lasse - Singlecore Win2k3 Server - läuft es nicht mehr
richtig.
Weiß jemand woran das liegen kann?

Danke schonmal =)
 
also die erste frage die sich mir da stellt ist: um welche sprache handelt es sich?
danach würde ich mal überprüfen, mit welchen einstellungen dein compiler arbeitet.
hat win2003 server vielleicht irgendwelche besonderheiten, die du in deinem programm nutzt, nicht (es muss ja nicht an der cpu liegen)? könnte es sein, dass du in deinem programm direkt befehlssatzerweiterungen benutzt (z.b. sse3 oder ssse3), die der single-core vielleicht noch nicht kennt.

...

wie du siehst, ohne mehr infos wird die hilfe schwierig werden
 
sprache: vc++, keine sonstigen speziellen erweiterungen

unter anderem kommt sleep( ) vor, was wohl soweit ich gelesen hab mit anderen zeiten abgearbeitet wird (1-15 = 15 bzw. 10 ms)
hab es auch auf anderen multicore systemen getestet und auf denen isses ohne weiteres gelaufen, aber sobalds auf nem single läuft, gehts nimmer richtig.

was wären denn erweiterungen die dem ganzen im weg stehen könnten ?
 
welche das speziell sein könnten hängt unter anderem von den verwendeten cpus ab. daher hatte ich z.b. ssse3 erwähnt, da laut wikipedia dies nur bei intel vorkommt (nicht verwechseln mit sse3)
das ganze war jetzt auch nur eine spontane idee, da man ja aufgrund der beschreibung nur raten kann.
viel eher würde ich hier auf eine compiler-option tippen, die möglicherweise code erstellt, den der single-core nicht benutzen kann. dazu hast du aber leider noch nichts geschrieben.

ach ja, was heißt eigentlich "läuft nicht mehr richtig"? startet es gar nicht? was erwartest du unter welchen umständen und was passiert statt dessen?
 
sry, da hab ich wohl noch n bischen was ausgelassen

in den compileroptionen habe ich nichts geändert, also die standardeinstellungen genommen - denke nicht dass die ausschließlich auf multi oder single ausgelegt sind. habe auch gerade nochmal geschaut, aber nichts gefunden was mir aufschluss darüber geben könnte. was genau wären denn abhängige optionen?

mit "läuft nicht mehr richtig" meine ich, dass es schon noch startet etc. allerdings dass es
nach dem 3ten von 4 Zuständen abstürtzt (auf der single). als "zustand" passiert eigentlich nix anderes als - netzlaufwerk verbinden, kb/s errechnen, netzlaufwerk trennen (danach s3, s4 oder s5). das ganze eben solange bis alle abgearbeitet sind.
 
Ist der code für beide Prozessoren nicht der selbe??
Der code wird doch später vom System auf die kerne verteilt, oder??

Zumindest habe ich noch nie eine multicore-version von irgendeiner software gesehen (wie es z.B. bei 64-Bit üblich ist)

Wie sieht es den mit dem System aus?
Kann es sein, dass z.B. auf deinen multicode-rechnern winxp läuft, und auf den singlecode-rechnern win2k3?
Verwendest du irgendwelche bibliotheken, von der du auf den win2k3-rechner eine veraltete version haben könntest?
 
nope nicht dass ich wüsste.
wie gesagt, es handelt sich um einfachste befehle zur verbindungsherstellung (net use) und zum kopieren der dateien (SHFILEOPSTRUCT s1 = { 0 }; s1.wFunc = FO_MOVE; ...) und halt bissl standard code-geplänkel
ich glaube dass es in irgendeiner form am sleep hängt, da ich in anderen foren auch schon darüber gelesen habe, dass es damit probleme auf unterschiedlichen cpu´s gibt.
danke schonmal für eure antworten....
 
Kenn mich nicht mit Dual-Core aus, aber sind die nicht abwärtskompatibel?
Mit anderen worten: Kompilier das Programm mal auf einem single-core PC und probier's dann aus.
 
ich kann mich Extinction nur anschließen:

compilier das Programm auf nem single-core Prozessor (am besten auf dem Zielrechner) und poste, ob es da geklappt hat.

Und die nächste Frage: welchen Compiler nutzt du? Welche IDE?

Möglicherweise wurden bei der Installation der IDE (+Compiler) irgendwelche System-spezifischen Compiler-Flags gesetzt...

Oder eben das schon weiter oben angesprochene Problem, dass du möglicherweise DLLs benutzt, welche auf dem Ziel-System in einer anderen Version verfügbar sind und nicht das liefern, was dein Programm gerne hätte.
 
Zurück
Oben