2014-03-12 3 views
-1

클러스터에 문제가 있습니다. 나는 스레드가없는 오래된 시스템으로 작업하고있다. (그들은 내 시스템에서 구현되지 않았다.) 제 질문은 간단합니다 : 프로그램에서 스레드 수를 정의하지 않고 OpenMP와 병렬로 작업 할 수 있습니까? 오픈 코어를 실제 코어와 함께 사용한다는 의미입니다. 이 경우, 어떻게하는지 알고 싶습니다. 나는 Fortran 90에서 일하고있다.스레드가없는 OpenMP

+0

질문이 계산되지 않습니다. 시스템에 단일 코어 만 있다는 의미입니까? 그렇다면 왜 omp를 사용하여 시작하고 싶습니까? – Voo

+1

하나의 코어/스레드 CPU에서 시도한 적이 없지만 OMP_NUM_THREADS 환경 변수를 설정하여 스레드 수를 정의 할 수 있다고 생각합니다. 리눅스와 비슷한 시스템에서 실행 파일을 실행하기 전에 export OMP_NUM_THREADS = 2 쉘 명령을 실행하십시오. – innoSPG

답변

1

변수 OMP_NUM_THREADS를 사용하여 실행할 스레드 수를 지정할 수있다. 이것과 관련된 프로그램 내의 지시문이 지정되지 않은 경우에만 작동합니다.

노드간에 계산하려면 MPI을 살펴 봐야합니다.

경고 : : 시스템에 노드 당 코어가 하나만있는 경우 여러 스레드를 사용하면 이점을 얻을 수 없으며 성능 저하가 발생할 수 있습니다. 프로세서에 멀티 스레딩을 사용할 수 있다는 희망이 있지만 다중 코어와 동일하지는 않습니다.

+0

내 실제 문제는 (여러 개의 코어가있는) 내 시스템이 꽤 오래되었고 구현 된 스레드가 없다는 것입니다. 하드웨어는 하드웨어에 적용되지 않았습니다. 그래서 문장을 "OMP_NUM_THREADS"로 사용할 수 없습니다. 제 질문은 스레드 대신 실제 코어와 함께 openMP를 사용할 가능성과 관련이 있습니다. – user3209698

+0

OpenMP는 사용하는 스레드가 실제 실제 스레드 (코어 당 하나)인지 또는 시뮬레이션 (코어 당 여러 스레드 일명 멀티 스레딩)인지 상관하지 않습니다. 두 번째 단락은 경고로 예정되어 있습니다. 나는 그것을 더 명확하게하기 위해 편집 할 것이다. – miguelbernadi

+0

OpenMP의 사양은 스레드를 기반으로합니다. OS에 스레딩 지원이 없으면 OpenMP가 컴파일되지 않습니다. 컴파일하면 miguelbernardi가 작성한 모든 내용이 사실입니다. – Soravux