"타 플랫폼을 위한 바이너리"를 컴파일하기
글쓴이: jeon1226 / 작성시간: 일, 2009/07/12 - 10:24오후
저는 대학 연구실에 있는 대학원생이고, 속도를 무척 중요시 여기는 작업을 하고 있습니다 수치연산-_-;;
이번에 새로 클러스터를 만들었는데 인텔 하퍼타운 코어를 사용합니다.
/proc/cpuinfo는 다음과 같습니다.
Quote:
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 23
model name : Intel(R) Xeon(R) CPU E5430 @ 2.66GHz
stepping : 10
cpu MHz : 2666.760
cache size : 6144 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr dca sse4_1 lahf_lm
bogomips : 5336.58
clflush size : 64
cache_alignment : 64
address sizes : 38 bits physical, 48 bits virtual
power management:
헌데 이 계산 노드들을 아우르고 있는 서버는 씨피유가 다릅니다.
/proc/cpuinfo는 다음과 같습니다.
Quote:
processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 4
model name : Intel(R) Xeon(TM) CPU 3.40GHz
stepping : 3
cpu MHz : 3391.445
cache size : 2048 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall lm constant_tsc pebs bts pni monitor ds_cpl est cid cx16 xtpr
bogomips : 6787.24
clflush size : 64
cache_alignment : 128
address sizes : 36 bits physical, 48 bits virtual
power management:
두 시스템에는 우분투가 깔려있고 깔아놓은 것 자체는 거의 똑같습니다.
1. 한 시스템에서 컴파일한 바이너리가 다른 시스템에서 제 성능을 발휘할까요? 두번째 씨피유를 쓰는 머신에서 컴파일한 바이너리를 첫번째 씨피유 머신에서 돌릴 계획입니다.
2. 제 성능을 발휘하지 못한다면 gcc를 속여서 위의 씨피유를 쓰는 머신인 환경으로 컴파일하도록 하는 것이 가능할까요?
Forums:
1. i386용과 amd64용처럼
1. i386용과 amd64용처럼 서로 다른 아키텍처로 깔아놓지 않은 한 거의 그렇습니다. '거의'라고 말한 이유는 MMX, SSE와 같은 명령어 확장들의 차이 때문입니다.
2. http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html mtune/march 옵션을 사용하면 각각 CPU별로 튜닝이 가능하긴 합니다. 하지만 같은 우분투 배포판 패키지를 깔아 놓고 프로그램만 살짝 바꾼다고 해서 효과가 있을지는 미지수네요.
---- 절취선 ----
http://blog.peremen.name
성능이 주목적이라면.
성능이 중요하다면,
gcc 보다는 intel compiler 를,
math.h 보다는 상용 library 를 쓰시는 것이 좋지 않을까요?
대부분은 아카데미버젼이 있거나, 평가판 혹은 연구용으로 쓰실수 있을지 모릅니다. ^^
c와 포트란을 사용하기 때문에
c와 포트란을 사용하기 때문에 icc와 ifort를 사용합니다.
얘네들로 걍 직접 테스트해보려고 합니다.
조언에 감사드립니다.
댓글 달기