• Welcome to Overclockers Forums! Join us to reply in threads, receive reduced ads, and to customize your site experience!

can someone PLS find a way to loop this program>!

Overclockers is supported by our readers. When you click a link to make a purchase, we may earn a commission. Learn More.
Ok, I give up.
It looks like Blitz Basic hasn't got high enough floating point precision to be useful for this sort of application. I haven't been able to get even 1 single error detection. At the same time prime/superpi would error in less than 10secs.
 
From your description it sounds like you are doing a lot of branching. I'm just guessing but it sounds like your loop is 2 floating point operations an error checking branch and a loop checking branch. This means you have a branch for every floating point operation. This is significant because modern processors don't work well with branches. Pipelines and branches simply don't mix and part of the pipeline must go idle while it waits for the result of the branch calculations. This will greatly reduce the stress on the processor. A better approach would be to preform 10 floating point operations, repeat, compare the results and finally loop. That way your ratio would be 20:2 instead of 2:2.

Another issue is independent operations. The processor will try to do two things at once, but if the second thing depends on the result of the first thing it will have to wait. You can make this easier on the processor by alternating the first set of operations with the second.

Well, theres the complicated solution. Hyper-threading technology is designed to help with these problems. You just run two threads and the processor will fill the idle times from one thread with operations from the other.
 
Hmmm, you know what. You might be onto something. Maybe I'll give it a last shot. I'll be heading back to the thinking box.
 
I don't want to do too many releases until I have some sort of release tracking system, such as sourceforge. I'm currently waiting for approval from sourceforge. It is supposed to take 1 to 2 business days and I submitted it Sunday. When I get sourceforge approval I will put the code and binaries on it and make a post here.
 
I'm down on the floor again and this time I'm knocked out.
I probably should get of my *** and learn a better language like c/c++ or find me another basic version.

I did a rewrite from scratch with the tips from mccoyn. I did manage to hit the cpu even harder, but the floating point precision is not good enough.
Heres and example(Blitz Basic 3D):
If I set a variable to "0.123456789", Blitz basic rounds that off to "0.123457".
That is not good enough for error detections...

But I'm inn for some beta testing if needed.

I have a nice Athlon 1200 ready with winXP that's undervolted to the point where prime/superpi fails almost instantly.
 
I like DaWiper's approach better than trying to find the most stressful mathmatical program as possible. We should be able to stress even harder with deviously designed programs (look at my previous comments about how hard it is to max out a processor.) I doubt we will have a chance with an interpretive language. I'm not sure if Blitz Basic is an interpretive language or not, but many basic languages are. High level languages like C/C++ hide a lot of details that would be good to know. A for loop requires a number of different instructions, but is only one statement in many languages. This makes it tricky to get accurate instruction counts when looking at a high level language. The best approach IMHO is to write at least the core loops in assembly. C/C++ provide a mechanism for embedding assembly in source code. That seems the best thing to me. The user interface and general operation of the code can be done in C++ and the actual stress loops can be done directly in assembly. Then we focus on writing the loops that will bring a processor to its knees.

I might, after a short while switch from adapting super_pi_mod to creating a stress program from the ground up with the goal of surpassing prime95, super_pi_mod and anything else. It could be a big project that will need some help. Aside from the core loops, there will need to be a user interface so that it is easy to use. It would help to get whitepapers for all of the popular processors and descriptions for all the available instructions (SSE and such things.) Finally lots of loops will need to be writen, tested and refined to find the best (most stressful) tests.
 
Blitz Basic has a built-in compiler. The final product is 99% stand alone(req. dx7).

A small fast loop doing basic math, +- and bitshift left/right. AFAIK, this is the fastest operations within a cpu. The less time spent doing a calculation the faster you can start on the next. The tricky part is to be able to be able to do it fast enough to load the cpu 100%.
The program I wrote that deathstar13 tested for me did the following:
----
get a random number(floatingpoint)
get a random number(floatingpoint)
add them
add them again
compare
subtract them
subtract them again
compare
get a random number(integer)
store number
do bitshift left 20 times in a row(its the same as multiply by 2)
do bitshift right 20 times(same as divide by 2)
compare final number with stored number. they should be equal
-----
this was looped. On my a64 it managed to do this 3,1 million times per second. On the Athlon1200 it did it 2.1 mill. p/sec.
Not sure how much I managed to load the cpu by this, but it made alot of heat.
 
The number you want to try to find is the CPI (cycles per instruction.) First you want to figure out how many instructions are executed per loop. Multiple that by the number of loops in a second to get the number of instructions per second. Divide that by the clock speed to get the cycles per instruction.

There are other factors than just CPI of course. A floating point multiply will take more time, but it will also utilize a lot more transitors. So, while it has a lower CPI (meaning the control part of the CPU is idle) it is using much more of the ALU transitors so it might still create a more heat.

edit: Actually, you are already doing both. That could be the best thing to do. Just alternate between them so that the processor always has something to work on in its different areas. The only question is what ratio to do them in. That can only be solved with trial and error.
 
Last edited:
I was not aware of that program. Nice find!

What we need is a program that will beat the crap out of the cpu and just count errors not stop. Much like Memtest.... It doesn't have to contain any fancy calculations or benchmark mode.
The ability to boot standalone from floppy/cd/pendrive would also be great. That would prevent OS corruption.
 
I was thinking the same thing about OS/disk corruption. If we were to write something, using QT for the interface we could put together a Linux boot disk.
 
Drec said:
Wow this is going better then i thought it would, keep it up guys! :thup:
sadly my thoughts are totally opposite from yours.

altho i applaude all the work and ideas put into this its completly opposite from what people are asking for and myself included.

take the core program of super pi and make it loop 32m runs.
dont rewrite it the core program.
the whole goal is how super pi handles stability and keeping a system stable but at its furthest limits at the same time.

there are 100's of stability programs out there that run pi or prime calculations and if you write your own it will be just gonna be added to the pile.

but i and others are only interested in super pi in particuler.

i dont mean to sound or be harsh,but ive repeated this idea and what is needed many times and i feel its being ignored and this is just being done however people feel it should be done.

just make super pi 32m loop,sounds simple but i guess its not.
 
Its simple and I've done it already. It just seems to me that we could do better. So far, I've only thought about the alternative and shared ideas on the forum. I havn't actually spent any coding time on it. My thoughts are basically to do the super pi thing first and work on an alternative afterwards, but while waiting on the super pi thing to discuss the alternative to speed it along.

Its probally confusing because I'm working on two ideas at once. I'll start a seperate thread later today to seperate the two discussions.
 
mccoyn said:
Its simple and I've done it already. It just seems to me that we could do better. So far, I've only thought about the alternative and shared ideas on the forum. I havn't actually spent any coding time on it. My thoughts are basically to do the super pi thing first and work on an alternative afterwards, but while waiting on the super pi thing to discuss the alternative to speed it along.

Its probally confusing because I'm working on two ideas at once. I'll start a seperate thread later today to seperate the two discussions.
well that does explain alot.remember not everyone in this thread are coders and have a clue on whats being said many times,mainly me :)

it seems you do have an exact idea and plan to produce the version ive been requestiong.
but a second version also would be welcomed for testing and such.
everything can always be improved im all for that,long as the original was done as that was the main goal.

ty for listning and helping! well i should say listning and doing alot of work :)
 
Last edited:
I'm not sure I under stand how to use it.
I've dropped both pi_loop and super_pi_mod in the same dir.
When run by double click I get a error (0xc0000135).
I also tried to run it from console. same error
 
I'll give it a try. I'll just dust of the old Win32dasm and brush up on my assembly a little. :D

It couldn't be that hard, or so I hope. I'll post back it I succeed.

EDIT: Darn. Didn't see that mccoyn beat me to the punch. :(
 
Back