Linux - Server This forum is for the discussion of Linux Software used in a server related context. |
Notices |
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
Are you new to LinuxQuestions.org? Visit the following links:
Site Howto |
Site FAQ |
Sitemap |
Register Now
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
|
|
02-16-2011, 01:54 AM
|
#1
|
Member
Registered: May 2010
Posts: 427
Rep:
|
intel or amd based cluster (or both)
Hi
Currently our cluster is based on AMD opteron processors. We are going to add more nodes however I want to know is it good to add Intel xeon processors. They both claim to be x86 compatible however I don't know if they are really math each other.
Does a program compiled on Intel xeon really works on opteron (amd64)? any feedback is appreciated.
|
|
|
02-16-2011, 03:03 AM
|
#2
|
Senior Member
Registered: Dec 2004
Posts: 1,056
Rep:
|
This is not the definitive answer, but I believe that AMD pays license fees to Intel so that AMD can legally make chips that understand the x86 instruction set -- which was created by Intel. Whether the systems are 'compatible' is too broad a question.
There a variety of facts that may be helpful:
* you can't just pop out an Intel and put an AMD chip in its place in your motherboard (or vice versa). AMD and Intel have different pin configurations and require different motherboard chipsets.
* you couldn't just take a hard drive with linux or windows installed on it from an Intel machine and pop it into an AMD machine and expect the OS to run (or vice versa). The configuration of files on the hard drive (drivers, etc.) would not be set up properly for the other machine.
* can they both run windows? yep. linux? yep. OSX? Yep, with some tweaking. Apache? yep. IIS? Yep. AFAIK, any software you can run on an Intel chip will also run on an AMD chip. I believe the executables are even identical -- although 64-bit apps won't run on a 32-bit OS.
* can they all live on the same network? Yep, as long as their software is compatible.
You need to ask more specific questions.
|
|
|
02-16-2011, 03:07 AM
|
#3
|
LQ Veteran
Registered: Sep 2003
Posts: 10,532
|
Hi,
If a piece of software is compiled for a specific processor it will not (or badly) run on a different kind of processor. In general software is compiled to run on AMD and Intel (assuming both are for instance x86 compatible).
If you have any doubt you should ask the developers of the software you are using. The cluster software itself should be ok if you use out-of-the-box clustering software.
Hope this helps.
|
|
|
02-17-2011, 06:56 AM
|
#4
|
Senior Member
Registered: Dec 2004
Location: Marburg, Germany
Distribution: openSUSE 15.2
Posts: 1,339
|
Quote:
Originally Posted by sneakyimp
* you couldn't just take a hard drive with linux or windows installed on it from an Intel machine and pop it into an AMD machine and expect the OS to run (or vice versa). The configuration of files on the hard drive (drivers, etc.) would not be set up properly for the other machine.
|
This should work. The only problem I see here it the initrd in Linux: it has the wrong drivers included. But this is not a matter of the used processor but of the used chipset of the mainboard. Once you adjusted it there shouldn't be an issue.
|
|
|
02-17-2011, 07:03 AM
|
#5
|
Senior Member
Registered: Dec 2004
Location: Marburg, Germany
Distribution: openSUSE 15.2
Posts: 1,339
|
Quote:
Originally Posted by druuna
Hi,
If a piece of software is compiled for a specific processor it will not (or badly) run on a different kind of processor. In general software is compiled to run on AMD and Intel (assuming both are for instance x86 compatible).
If you have any doubt you should ask the developers of the software you are using. The cluster software itself should be ok if you use out-of-the-box clustering software.
|
+1
If you compile software on your own: some compilers default to optimize for the one on which they are executed. E.g. with Portland compiler I got an Illegal Instruction when executing an application compiled on a recent AMD but executed then on a former Opteron. There are of course switches to tell the compiler which instruction set to use, or make it a plain x86_64 w/o any optimization.
|
|
|
02-17-2011, 07:12 AM
|
#6
|
Senior Member
Registered: Dec 2004
Location: Marburg, Germany
Distribution: openSUSE 15.2
Posts: 1,339
|
Quote:
Originally Posted by mahmoodn
Does a program compiled on Intel xeon really works on opteron (amd64)? any feedback is appreciated.
|
Are you using any queuing system in your cluster? E.g. in GridEngine you get the variable $ARC at runtime to tell the job on which platform your are. Now assume you have from one and the same application two binaries: one optimized for Intel and one for AMD. When you set up identical directory structures for both, you can have a shared /opt/em64t/my_app_foober and /opt/amd64/my_app_foobar.
When now in the job script /opt/$ARC/my_app_foobar is executed, you always get the correct binary for the machine your job was scheduled to.
So there is no problem having a mixture of machines. NB: parallel job should be set up to get only machines from one type though.
Last edited by Reuti; 02-17-2011 at 07:14 AM.
Reason: Tag was misplaced.
|
|
|
02-17-2011, 08:55 AM
|
#7
|
Member
Registered: May 2010
Posts: 427
Original Poster
Rep:
|
Quote:
Are you using any queuing system in your cluster?
|
Yes I am using Torque/Maui and my concern is that, the job manager submit a job on a node that is optimized for another node. For example I compiled and optimized my code for opteron but the job manager submit it to an Intel node.
|
|
|
02-17-2011, 09:13 AM
|
#8
|
Senior Member
Registered: Dec 2004
Location: Marburg, Germany
Distribution: openSUSE 15.2
Posts: 1,339
|
Quote:
Originally Posted by mahmoodn
For example I compiled and optimized my code for opteron but the job manager submit it to an Intel node.
|
Also in Torque/Maui you can setup certain features of a machine and request this resource. So like:
Code:
$ qsub -l opteron myjob.sh
Or the admin defines two queues and you have to submit to the correct one. The admin just has to setup things accordingly.
Last edited by Reuti; 02-17-2011 at 09:13 AM.
Reason: Missed $.
|
|
|
02-17-2011, 09:18 AM
|
#9
|
LQ Guru
Registered: Dec 2007
Distribution: Centos
Posts: 5,286
|
Are you using x86 (32 bit) architecture, or are you using x86_64 (aka AMD64, aka em64t) architecture?
Quote:
Originally Posted by mahmoodn
Does a program compiled on Intel xeon really works on opteron (amd64)? any feedback is appreciated.
|
"xeon" is a marketing term with no technical meaning. The "xeon" name covers a very wide range of very different Intel CPU's, so saying "xeon" tells us nothing useful about which Intel CPU you mean.
Within the x86 (32 bit) architecture, GCC can compile for a specific model in a way that makes code that would not work on older models. I don't know whether any of those options would make code that doesn't work on an amd64 capable chip.
I suspect you are safe: any amd64 capable chip running x86 (32 bit) code supports a superset of the common optional features of x86. I'm just not certain of that.
Within x86_64 architecture, you are even safer. I don't think GCC has even optional support for any feature that exists in one x86_64 model and doesn't exist in another x86_64 model.
|
|
|
02-17-2011, 09:31 AM
|
#10
|
LQ Guru
Registered: Aug 2001
Location: Fargo, ND
Distribution: SuSE AMD64
Posts: 15,733
|
SneakyImp: Actually, Intel traded with AMD for the x86_64 design after the Itanium chip wasn't as successful as Intel had hoped.
|
|
|
02-17-2011, 10:06 AM
|
#11
|
Senior Member
Registered: Jul 2007
Location: Directly above centre of the earth, UK
Distribution: SuSE, plus some hopping
Posts: 4,070
|
Quote:
Originally Posted by mahmoodn
...my concern is that, the job manager submit a job on a node that is optimized for another node. For example I compiled and optimized my code for opteron but the job manager submit it to an Intel node.
|
I think that you are making a problem, but it is related to a problem that might exist.
Essentially, all of the x86 series of chips has capabilities (and AMD and Intel are not capabilities), and, over time, the capabilities have tended to increase. All of the chips have, at least in some mode or another, the capabilities of the earliest chips, but they have added more capabilities in the more recent chips. So code compiled for a plain vanilla 32 bit x86 will run on a more advanced x86, it just won't take advantage of the newer software features.
Now the newer features don't really make that much of a difference to speed except in certain exceptional cases, so, if you compile for a sufficiently old version of an x86 that only has capabilities that all of the target chips have, the code will run, irrespective of whether the CPU doing the running is AMD or Intel.
Quote:
Originally Posted by mahmoodn
I compiled and optimized my code for opteron...
|
You didn't have to do that. Given that if you hadn't done that, but followed the idea of optimising for a 'lowest common denominator' chip there wouldn't be a problem, only you can decide whether creating this problem was actually worthwhile. (Note that if your Intel chips have a superset of the selected Opteron's capabilities, you haven't created a problem, as should be obvious.)
@jschiwal
Quote:
Actually, Intel traded with AMD for the x86_64 design
|
Err, not quite (pedantry alert): it was actually the instruction set and not the chip design. Essentially this means the 'what' of what the chip does, as seen by a software engineer, rather than the 'how' of how it goes about it.
In any case, the situation with the 64 bit instruction set is (currently) a lot friendlier than the 32 bit version; when AMD came out with the 64 bit version they did a lot of clean up and tidy up work, and so, at the time that it came out, there was only one single instruction set (as opposed to an instruction set, plus half a dozen, or more, significant optional add-ons) worth supporting, and that applies to chips from both manufacturers.
One possible exception comes to mind; Intel has been adding AES-acceleration instructions to its latest chips, and those instructions do make an appreciable difference to the speed of AES operations. This is a very specialised field, however, and I have no idea of the state of support in GCC for these (and the odds are quite strong that you probably aren't doing anything AES-related), so it is probably irrelevant to you.
|
|
|
02-17-2011, 10:12 AM
|
#12
|
Member
Registered: May 2010
Posts: 427
Original Poster
Rep:
|
Thanks all
Quote:
Also in Torque/Maui you can setup certain features of a machine and request this resource. So like:
Code:
$ qsub -l opteron myjob.sh
Or the admin defines two queues and you have to submit to the correct one. The admin just has to setup things accordingly.
|
That is great. I will check that
|
|
|
All times are GMT -5. The time now is 08:39 PM.
|
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.
|
Latest Threads
LQ News
|
|