[PureBasic] Wie die CPU am besten voll auslasten?
- Mok
- BotHunter
- Beiträge: 1484
- Registriert: 26.12.2005 14:14
- Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit - Wohnort:
[PureBasic] Wie die CPU am besten voll auslasten?
Servus.
Ich will mit meinem FPS-Programm testen, wie stark sich die FPS verschlechtern können, wenn man die ach so liebe CPU mal richtig unter Druck setzt. Schön wär ein PureBasic-Code. Ich hab's bereits mit AllocateMemory(1073741824) probiert (das macht genau 1 GB aus). Allerdings war die CPU nicht bis garnicht ausgelastet, außerdem sollte das Programm auf alten Rechnern mit 512 MB RAM auch lauffähig sein...
Vorschläge?
MfG, Mok
Ich will mit meinem FPS-Programm testen, wie stark sich die FPS verschlechtern können, wenn man die ach so liebe CPU mal richtig unter Druck setzt. Schön wär ein PureBasic-Code. Ich hab's bereits mit AllocateMemory(1073741824) probiert (das macht genau 1 GB aus). Allerdings war die CPU nicht bis garnicht ausgelastet, außerdem sollte das Programm auf alten Rechnern mit 512 MB RAM auch lauffähig sein...
Vorschläge?
MfG, Mok
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Der Arbeitsspeicher hat ja nichts mit der CPU zu tun.
Und wenn du 1 GB Speicher anforderst, ist er noch lange nicht belegt. Und wenn Windows
merkt, dass mit dem Speicher nichts gemacht wird, dann wird er sowieso ausgelagert,
sodass du für dein anderes Programm wieder mehr Arbeitsspeicher zur Verfügung hast.
Einfacher wäre eine Schleife zu machen, die nur im Kreis läuft.
Und wenn du 1 GB Speicher anforderst, ist er noch lange nicht belegt. Und wenn Windows
merkt, dass mit dem Speicher nichts gemacht wird, dann wird er sowieso ausgelagert,
sodass du für dein anderes Programm wieder mehr Arbeitsspeicher zur Verfügung hast.
Einfacher wäre eine Schleife zu machen, die nur im Kreis läuft.
Code: Alles auswählen
Define i.i
While #True
i + 1
Wend
- Mok
- BotHunter
- Beiträge: 1484
- Registriert: 26.12.2005 14:14
- Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit - Wohnort:
Whoa, 5 fps wegen (beinahe) EndlosschleifeNicTheQuick hat geschrieben: Einfacher wäre eine Schleife zu machen, die nur im Kreis läuft.Code: Alles auswählen
Define i.i While #True i + 1 Wend

Hab nicht gedacht, dass die CPU soviel zur Grafikdarstellung beiträgt.
Danke

Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Die CPU ist alles...Mok hat geschrieben: Hab nicht gedacht, dass die CPU soviel zur Grafikdarstellung beiträgt.
http://www.golem.de/showhigh2.php?file=/0908/69099.html
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster
PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Nunja, es kommt auch die Technik an. Rendest du deine Spielwelt sperat in einem Threat, kannst du recht ungetrost die CPU belasten, ohne das die Framerate einbricht. Berechnest du jetzt allerdings mitten in deiner Renderschleife Sachen, wartet dein Programm bis der CPU fertig ist.
@cxAlex
Für manche Sachen ist die CPU sicher besser. Aber für Physikberechnungen und Realtimerendering (in etwa Anzeigen bewegter Animiation) ist die GPU (Prozessor der Grafikkarte) deutlich besser, einfach weil sie entsprechend dafür konstruiert ist. Außerdem kommen heutzutage immer mehr Prozessoren gleichzeitg zum Einsatz. Selbst vier Graphikkarten + Quad Prozessoren (4 Stück), welche alle zusammenarbeiten sind heute realistisch. Mit DirectX 10 ist es außerdem möglich Berechnungen auf die GPU zu verlegen. Meiner Meinung nach sind die GPU's noch nicht am Ende.
@cxAlex
Für manche Sachen ist die CPU sicher besser. Aber für Physikberechnungen und Realtimerendering (in etwa Anzeigen bewegter Animiation) ist die GPU (Prozessor der Grafikkarte) deutlich besser, einfach weil sie entsprechend dafür konstruiert ist. Außerdem kommen heutzutage immer mehr Prozessoren gleichzeitg zum Einsatz. Selbst vier Graphikkarten + Quad Prozessoren (4 Stück), welche alle zusammenarbeiten sind heute realistisch. Mit DirectX 10 ist es außerdem möglich Berechnungen auf die GPU zu verlegen. Meiner Meinung nach sind die GPU's noch nicht am Ende.
Windows XP: PB 4.31, PB 4.4, PB 4.51
Open Suse 11.2: PB 4.4
Open Suse 11.2: PB 4.4
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Dazu braucht man noch nicht mal DirectX, sondern einfach nur CUDA von nVidia oder das
ATI-Äquivalent. Außerdem kommt jetzt durch OpenCL eine offene Schnittstelle zu Karten
beider Hersteller hinzu, die auch nVidias PhysX unterstützt.
Ohne paralleles Rechnen geht bei uns in der Bioinformatik gar nichts mehr. Die rechnen da
auch mit Verbünden von 4 Grafikkarten mit jeweils 128 Cores oder mehr. Dazu ein oder
mehrere Quadcores, die die Arbeit verteilen. Raus kommt dann sowas: BALLView
ATI-Äquivalent. Außerdem kommt jetzt durch OpenCL eine offene Schnittstelle zu Karten
beider Hersteller hinzu, die auch nVidias PhysX unterstützt.
Ohne paralleles Rechnen geht bei uns in der Bioinformatik gar nichts mehr. Die rechnen da
auch mit Verbünden von 4 Grafikkarten mit jeweils 128 Cores oder mehr. Dazu ein oder
mehrere Quadcores, die die Arbeit verteilen. Raus kommt dann sowas: BALLView
Re: [PureBasic] Wie die CPU am besten voll auslasten?
Einfach geht's nicht:Mok hat geschrieben:wenn man die ach so liebe CPU mal richtig unter Druck setzt. Schön wär ein PureBasic-Code.
Code: Alles auswählen
Repeat : ForEver
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
Das lastet die CPU VOLL aus:
(Benutzung auf eigene Gefahr!)
(Benutzung auf eigene Gefahr!)
Code: Alles auswählen
Procedure KillCPU_Thread(Core)
Protected Thread = GetCurrentThread_() ; Aktuellen Thread ermitteln
SetThreadPriority_(Thread, #THREAD_PRIORITY_TIME_CRITICAL) ; Zeitkritisch oOOO
SetThreadAffinityMask_(Thread, Core) ; Auf einen Kern festlegen
; Und ab gehts endlos
!@@:
!JMP @b
EndProcedure
Procedure KillCPU()
Protected Thread, Core, SI.SYSTEM_INFO
GetSystemInfo_(@SI)
For Core = 0 To SI\dwNumberOfProcessors-1
Thread = CreateThread(@KillCPU_Thread(), Core)
Next
WaitThread(Thread)
EndProcedure
KillCPU()
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster
PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Hallo Alex,
ich kenn mich damit nicht aus, aber könntest du mir sagen, was die zwei Zeilen genau machen?
ich kenn mich damit nicht aus, aber könntest du mir sagen, was die zwei Zeilen genau machen?
Code: Alles auswählen
!@@:
!JMP @b
Eine Endlosschleife. JMP @b springt zu @@: zurück.
Wollts halt in ASM machen.
Wollts halt in ASM machen.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster
PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86