2016-10-22 2 views
0

내 컴퓨터의 CPU 또는 코어 (MacBook OS X, Sierra, v. 10.12, 2GHz Intel Core i7)의 수를 확인하는 방법에 대해 읽었지 만 많은 대답이 있습니다 (예 :하나의 CPU에서만 C++ 프로그램을 실행하는 방법은 무엇입니까?

).

How to discover number of *logical* cores on Mac OS X?

는 내가 무엇을 생각해야하는 것은 즉, 내 프로그램해야, 예약없이 목적으로 만, 즉 하나 개의 코어에, 가능하면 내 C++ 프로그램은 단지 하나 하나의 CPU를 실행해야 (그리고 확인하는 것입니다 계속 실행할 전용 코어가 있어야합니다.> 내 Mac OS X 아키텍처가 실제로 어떻게 구성되어 있는지 모르겠습니다.)

구현, 컴파일 또는 실행 수준에서 수행해야하는지 확실하지 않습니다. 나는 사람들이 우분투에 대해 taskset에 대해 이야기하는 것을 보았습니다. 그러나 그것이 저에게 맞는 도구인지는 확실하지 않습니다. (어쩌면 맥 오에스텐에도 존재하지 않을 수도 있습니다.)

참고 : 다른 Stack Exchange 웹 사이트에서이 질문을해야한다고 생각되면 그냥 말해주십시오. 그 곳으로 이동하겠습니다. 실제로 저는 제 솔루션이 크로스 플랫폼이되기를 바랍니다. 아마도이 질문을하기에 가장 좋은 곳은 아닙니다.

+0

이것은 XY 문제와 비슷합니다. http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem OS 스케줄러를 제한하고 싶다면 어떻게해야할까요? –

+0

@RichardCritten 환경 제약 조건입니다. 내 프로그램은 오직 하나의 CPU 또는 코어가있는 저 성능 장치를 실행할 수 있습니다. – nbro

+1

CPU 또는 코어가 1 개 밖에없는 경우 프로그램 실행에 한 곳만 있으므로 스케줄러 문제가 없습니다. –

답변

6

프로세스가 예약되었으므로 예약되지 않은 프로세스라는 생각은 모순입니다.

즉, 하나의 CPU로 제한하는 것은 C++의 기본 설정입니다. main은 하나의 스레드에서 시작되며, 추가적으로 스레드를 생성하지 않는 한 시작됩니다.

"전용"코어를 원한다고 말씀하셨습니다. 코어에 스레드를 고정하는 아이디어가 있습니다. 두 가지 프로그램이 같은 코어에 고정되어 있으면 어떻게되는지 알 수 있습니다. 두 개의 프로그램이 고정 된 코어를 공유하는 동안 다른 코어는 완전히 사용되지 않을 수 있습니다. 이것은 코어가 메모리에 대한 통일 된 액세스 권한이없는 슈퍼 컴퓨터의 기능이며 CPU 코어와 메모리 할당을 일치시켜야합니다.

+0

그러나 두 개의 프로그램이 같은 코어에 고정되지 않도록하는 방법이있을 수 있습니다. 그것을 달성하는 방법에 대한 어떤 제안? – nbro

+2

@nbro : OS 공급 업체가 나쁜 생각을 약간 덜 나쁘게 만드는 아이디어를 제안했다고 제안하는 중입니다. 왜 그들은 귀찮았 을까요? – MSalters

+0

@nbro 다른 길 : 프로그램의 핵심을 바칩니다. 그것은 정말로 그것을 필요로합니까? 귀중한 CPU 성능이 낭비되지 않는다는 보장은 무엇입니까? – Christophe

관련 문제