Quote from Mike805:
Guys,
I've designed computational systems hardware/electronics in my former career as an EE and there are a few things I'd like to clear up so you do not spend un-necessary money on marketing gimmicks.
Dual Cores/ Dual processors are useful in multithreaded applications when you are doing floating point calculations ONLY. Otherwise, there will be no load sharing as some here claim. Floats are the most intensive computation and this was the reason dual cores were invented. Trust me on this - there is no trading software out there that uses floats on a level that will require dual procs/cores (unless you are running statistical algorithm calcs on a software package which is specifically designed to operate with two threads/two processors).
The thread count in you task manager is not the same as this. Software programs have many threads - they will not run simultaneously on two separate cores/processors unless the software is explicitly designed to do so. Only very high end engineering/scientific software programs have a real dual processor capability. I would be very suprised to find trading software with a true capability like this (many say they are multithreaded but this really has a different meaning - hence the confusion).
In short, don't waste your money or time with this whole "multithreading" deal, it really is non-sense unless you are trying to get high performance on floating point operations. If you have a case for this then get a dual processor AMD opertron machine - these are by far the best dual processor capable chips out there.
Mike
Quote from dcraig:
Sorry, I don't agree with very much of this other than some charting software may not benefit much if there is nothing else running on the machine.
Floating point is quite irrelevant. Many database, web servers etc use multiple CPUs and benefit greatly from it and perform virtually no floating point ops.
If you are running more than one application at a time then dual core/multiple CPU boxes will perform better and will feel snappier. For example rendering a web page in a browser is fairly computationally expensive and on a dual core box, one core can be doing this while another is dealing with other matters. 'Latency' - the catchphrase of the year - will be lower. The real question is whether its worth a couple of hundred dollars more.
There seems to be a bit of talk on PC web sites and presumably PC magazines (which I don't read) that dual core has to prove itself. This is nonsense. SMP technology has been around for many years.
How effective multiple CPUs are is a complex issue and not limited to the multithreaded-ness or otherwise of any given application. For example I use Linux, and here all graphical operations are handed off to the X server by any application that wants to put anything on the screen. This provides some natural concurrency to any application that writes things to the screen.
In any case multicore processes are the immediate future as chip clock speeds have run up against a wall in term of power consumption and cooling requirements.
Quote from Mike805:
Do you even know what a multi-threaded application is?
Quote from dcraig:
Yes. I have developed both server side and client side multithreaded code. Server side on medium size SMP boxes (4 - 16 CPUs). C++ and pthreads. Client side Java. And yes Java apps will distribute threads over multiple CPUs if you are using a modern JVM and assuming the threads are runnable ie not blocked on a lock of some sort.
I seem to recall reading a a discussion with Linus Torvalds somewhere where he was backing the use of SMP on PCs because of the reduced latency making the box more pleasant to use.
I just don't subscribe to the view that SMP is just for (or even mostly for) heavy duty engineering/scientific computations that you are implying.
Quote from Mike805:
JAVA and C are too abstract to utilize a concurrent architecture because this type of concurrency is available only via the machine language layer.
Quote from Mike805:
I have little experience in software development. My knowledge base is from application specific microprocessor development and general trends in the industry.
Software developers use multi-threaded in a different context - you can create an application with multiple threads and use semaphores to obtain a level of apparent "concurrency". This is about as far as my knowledge of OS takes me.
What I can speak for is the number of executions per clock cycle which is the real mark of performance and the reason why people get the dual processor system. The complexity behind something like this is transparent to software applications because of the level of abstraction. On you average home system, JAVA and C are too abstract to utilize a concurrent architecture because this type of concurrency is available only via the machine language layer.
This is why this is a gimmick. It is a way to sell more chips. The type of hardware/software that actually utilizes this concurrency is very complex and expensive.
The systems you refer to are much different than what a home user will get. The hardware architecture allows you these features and I would have to know more about the system to tell you if actual concurrency is taking place.
Quote from dcraig:
Not so. There is nothing magical about concurrency on SMP boxes. It's really just a system call to create a new thread (or process). The OS scheduler/dispatcher sorts out the running of them and executes any required privileged instructions. Really.