제품 odroid-c2
OS Ubuntu 20.04.6 LTS (GNU/Linux 3.16.85-65 aarch64)
ordroid-c2 에서 mpirun 명령을 이용하여 openfoam을 해보려고 하는데 illegal instruction 에러가 발생하여 문의 드립니다.
openmpi-4.1.0 을 다운로드 받아 빌드하면서 추적을 해보니 아래의 코드에서 예외가 발생합니다.
static inline opal_timer_t
opal_sys_timer_freq(void)
{
opal_timer_t freq;
__asm__ __volatile__ ("mrs %0, CNTFRQ_EL0" : "=r" (freq));
return (opal_timer_t)(freq);
}
라즈베리 파이 3B / 64bit 에서는 문제없이 작동하는 코드인데
odroid-c2 에서는 mrs 명령어를 통해 상태레지스터에 접근하려고 하면 에러가 발생합니다.
궁금한 사항을 나열하면 아래와 같습니다.
1. aarch64 에서 EL0~3 으로 표현되는 cpu mode에서 odroid-c2 에서 현재 상태에 설정된 el을 확인할 방법이 있을까요?
2. root던 일반 사용자 권한이던 os가 아닌 사용자 레벨에서 cpu가 작동할 것 같은데 그렇다면 다른 플랫폼에서는 왜 mrs 명령이 작동하는 것인가요?
3. proc cpuinfo 에서 Features : fp asimd crc32 만 나옵니다. cpuid가 혹시 illegal instruction 예외에 영향을 줄 수 있나요?
openmpi opal 에서 illegal instruction 에러 발생
- odroid
- Site Admin
- Posts: 41543
- Joined: Fri Feb 22, 2013 11:14 pm
- languages_spoken: English, Korean
- ODROIDs: ODROID
- Has thanked: 3321 times
- Been thanked: 1837 times
- Contact:
Re: openmpi opal 에서 illegal instruction 에러 발생
MPI 프로그래밍을 직접 해본지 거의 10년이 다되어 조언을 드리기 곤란합니다.
다만 MPI library에 필요한 Kernel feature가 일부 누락되었거나 변경되었을수도 있겠다는 생각이 듭니다.
Kernel 3.16이 오래되어 최신 OpenMPI와의 호환성에 문제가 있을수도 있고요.
따라서 최신 LTS Kernel 6.1 기반의 Debian OS 이미지로 테스트 해보시길 바랍니다.
viewtopic.php?f=138&t=43690
다만 MPI library에 필요한 Kernel feature가 일부 누락되었거나 변경되었을수도 있겠다는 생각이 듭니다.
Kernel 3.16이 오래되어 최신 OpenMPI와의 호환성에 문제가 있을수도 있고요.
따라서 최신 LTS Kernel 6.1 기반의 Debian OS 이미지로 테스트 해보시길 바랍니다.
viewtopic.php?f=138&t=43690
-
- Posts: 6
- Joined: Wed Oct 21, 2020 9:24 pm
- languages_spoken: 한국어
- ODROIDs: U3, C2
- Has thanked: 0
- Been thanked: 0
- Contact:
Re: openmpi opal 에서 illegal instruction 에러 발생
혹시나 해서 armbian 최신버전 으로 바꾸어서 시도하니 잘 되었습니다.odroid wrote: ↑Tue Sep 05, 2023 2:03 pmMPI 프로그래밍을 직접 해본지 거의 10년이 다되어 조언을 드리기 곤란합니다.
다만 MPI library에 필요한 Kernel feature가 일부 누락되었거나 변경되었을수도 있겠다는 생각이 듭니다.
Kernel 3.16이 오래되어 최신 OpenMPI와의 호환성에 문제가 있을수도 있고요.
따라서 최신 LTS Kernel 6.1 기반의 Debian OS 이미지로 테스트 해보시길 바랍니다.
viewtopic.php?f=138&t=43690
Armbian 23.8 Bookworm
Kernel 6.1, Size: 467Mb, Release date: Aug 31, 2023
구버전 커널이라 aarch64를 정상적으로 지원하지 못했거나 초기화 코드에서 문제가 있어 (ATF 혹은 Exception level 등)
정상적으로 작동하지 않았던 것 같습니다.
일단은.. openMPI 라기 보다는 openMPI-PAL 모듈에서 타이머를 받아오는데 사용되는 어셈블리 코드가 문제였는데
상태 레지스터를 접근하기 위한 명령어가(MRS) illegal instruction 으로 에러나는 원인이 궁금했습니다.
- odroid
- Site Admin
- Posts: 41543
- Joined: Fri Feb 22, 2013 11:14 pm
- languages_spoken: English, Korean
- ODROIDs: ODROID
- Has thanked: 3321 times
- Been thanked: 1837 times
- Contact:
Who is online
Users browsing this forum: No registered users and 1 guest