There is insufficient information in your request.
Presumably you are developing an application at this time but at some time later it is unknown if you will be using the finished application, selling the finished application, offering a service to provide others access to your server to run the finished application. During development time your needs will be different than during finished product time (capacity requirementsmay go up or down).
Also, if you could provide some sense of scope and scale. e.g. Is the 3D numerical code multi-threaded, will there be multiple concurrent instances of theapplication running at the same time (how many), the estimated size of the working data set (to estimate RAM requirements), and anything else that you might think would effect the configuration.
And what is your reasoning for placing the processing power into a server as opposed to into workstations? Depending on requirements, a workstations can out perform a server.
My preference for workstation is Windows XP Pro x64 with Visual Studio 2005.
My preference for server is WindowsServer 2003 x64 with Visual Studio 2005.
(I use both)
Your needs may be different depending on factors not provided.
Jim, thank you so much for your kind reply. we want running 3D FEM or FD codes. And the allowed users can be from 4-10. We want all the users can run the their applications at the same time.
The main purpose of the server/ workstation is code running, a few code debugging. The finished applications are not for selling, but for research purpose.for the ram, we need at lest 8GB for each processor.
I have a question: what is difference between a server and workstation? Can the 64 bits machine give more accurate results than 32bits? what are the pros and cons about windows 64, windows 32 and Linux server / workstation for our specific needs? thanks
The 64-bit machine doesn't give more accurate results, unless it enables you to run a double precision application where only single precision might be practical on 32-bit. Actually, you no longer have a choice to get 32-bit hardware, but the default OS on a 64-bit machine is probably some version of 32-bit Windows.
In view of your intention to support multiple users and large RAM, a 64-bit OS looks like your only satisfactory choice.
You haven't given us enough data to indicate whether the choice between 64-bit Windows and linux is more than a matter of personal preference (including which development tools you are proficient with) and cost. A dual quad core system might be run with 64-bit Vista or Server 2003, depending on your requirements, or with any current mainstream linux x86-64. You can add linux dual boot to a Windows installation at little additional cost, and try it both ways.
thanks for your quick reply.
the main application softwares we are using are FORTRAN and visual studio, but most of them are FORTRAN codes. we are looking for a server/ workstation with at least 8-16 fast processors, and each processorwith at least 8GB RAM. We want tohave something expandable so that in the future we can update it to 32, 64processors and 16GB or even more ram with each processor.
for the FORTRAN3d numerical computation, can the 64-bits machine giveus more accurate results than 32-bits machine? what are the pros and cons for the Linux and windows server/workstationsince we are not sure whether we want a windows or Linux server/work station. thanks
With the number of cores you envision and the expandability you want, it sounds like perhaps you should think about starting with a small cluster and building out as your requirements grow. The insistence on 8GB RAM per core suggests an upper limit (at least currently) on your problem size. The insistence on PER CORE suggests that your program currently is single threaded (multithreaded solutions would share memory between cores working in parallel in the problem space). Finite element modeling (I assume that's what you meant by FEM) seems to have the potential for parallel execution, and with processor clock speeds reaching a ceiling, future performance gains will come mostly from parallelization.
If your goal is 64 processors with 16 GB memory each, that's a terabyte of memory. Put all on one bus, that would be acontention nightmare. So at least you would need to consider some NUMA (NonUniform Memory Access) arrangement. A cluster of nodes is not far away from that.
The 64-bit machine would be no more accurate than the 32-bit machine since most modern architectures support double-precision floating point hardware (or better). It would be faster because the bus width would allow data to get to and from memory in fewer cycles.
There are both Windows and Linux cluster solutions. If your team is already familiar with Visual Studio, that seems like a good starting point. I won't pick sides here on that religious issue.
The availability of complete software/hardware packages for linux is running ahead of Windows:
Threadedness has more to do with the programs running on the server than it does the physical configuration of the server itself. All contemporary server architectures can support both single-threaded and multi-threaded code. It's unlikely you could pick a server that could not handle multi-threaded code these days, but some algorithms can take better advantage of threading than others. The fallback if a particular program is not multi-threaded is to use the operating system's scheduler, which manages processes, threaded or not, as they execute on the server. I suggested in my last note one method to make it expandable: plan a cluster of nodes, each having 4-16 processors and enough memory to support your processing.
As I said in my previous note, NUMA stands for NonUniform Memory Architecture. You can find information on this from Wikipedia. Basically it's an architectural topology where the memory is divided into physical chunks residing in separate parts of the topology. It has performance tradeoffs depending on the algorithms being employed but price usually isn't a big factor in choosing NUMA.
From your description of your application is that you will have one application program (with potential various revisions under development) that will be used by an arbitrary number of users at any given time. 4 to 10 users initially, more later. Your current code is not multi-threaded and it is unknown at this time if it can be programmed to be multi-threaded (and benefit therefrom)or if you would be inclined to take the effort to convert the code. You estimate the upper limit on RAM for each user is 8GB. Assuming the RAM requirementis fixed.
The processing demand by application users is may be of two classifications:
a) long run times (hours)
b) short bursts (seconds)
For the Server route
If of long run times then more processing capacity is required (more CPUs and/or cores), perhaps one (or more) coresper user.
If of short bursts then it may be desiresable to have fewer processors, one (or more) cores per 4 users.The server will typically be something like a Windows Terminal Server where your application user will have a PC to access the server and to present a front-end. So for 10 users you would have a Server + 10 PCs. Unless the PCs are free you have to figure the cost of the PCs into the equation.
For the PC route
Your biggest concern is selecting a motherboard that can handle 8GB. There are some LGA775 motherboards that can handle 8GB, and some more. The price for RAM on a PC is typically less that that for a Server. And you can have 1 to 4 cores running on an LGA775 motherboard (each often faster than that on a server).Many of these motherboardsare under $100. When (if) your RAM requirement goes beyond 8GB per user there are some current LGA775 motherboards that go to 12GB. If your RAM requirements per user will rise significantly above 8GB then consider choosing an LGA771 server motherboard (costs more). These can come in 1, 2, 4processor sockets (each holding 1 to 4 cores) and can handle various larger RAM capacity (32, 64 or 128GB). Depending on the model your memory prices will cost more as well.
This leads us back to
a) long run times
b) short bursts
If a), I would suggest the PC route as your costs and capacity scales per user
If b), I would suggest the Server route because you can buy less RAM and less processing capacity (in hope of reducing costs while providing reasonable performance).
Since your program is under development you may have some time to experiment with sizing one PC as your end-user workstation. This will provide you the data as to how to resize the PC or to estimate your sizing requiremts for the server (and to compare costs/performance).
thank you so much for your information. the server/cluster we want to build is basically for 4-10 users. and each other can submit his application on the server. we prefer multitasking, which means multi-users can&; do multi-jobs.
since our requirement is for 8-cpu, expandable to 16 or even 32 cpus, each cpu can have at least 8gb ram. if we want a cluster, how can we build a cluster? do u have any good manufactures to recommend? thanks