링크 작업이 많은 IO 작업을 수행하는 컴파일 작업이 있습니다. 우리는 약 12 개의 코어가 있으므로 make -j13을 실행합니다.하지만 6 개의 타겟을 연결하는 경우 라운드 로빈 방식으로 수행해야합니다. 나는 다음에 달려 있다고 생각했지만, 이것이 개별 목표를 깨뜨릴 것이라고 생각합니다. 이 작은 문제를 해결하는 방법에 대한 아이디어가 있습니까?make : 일부 대상의 병렬 실행을 비활성화합니다.
답변
make
자체는 "N 개는 아니지만 한 번에 M 개를 초과하여"요청하는 메커니즘을 제공하지 않습니다.
GNU parallel 패키지의 sem
명령을 링커 규칙의 요리법에 사용해보십시오. 문서에 example of ensuring only one instance of a tool runs at once이 있습니다. 위의 예에서 make
은 한 번에 13 개까지 sem
개까지 시작할 수 있지만 한 번에 하나씩 만 링커를 실행하고 다른 하나는 차단합니다.
단점은 make
의 13 개 작업 슬롯 중 5 개가 sem
인스턴스로 묶여 있고 링커 프로세스가 완료 될 때까지 기다릴 수 있다는 것입니다. 빌드 구조에 따라 CPU 시간 낭비가 될 수 있습니다. 그래도 디스크를 한꺼번에 쓰러 뜨리는 6 명의 링커를 이긴다 :-)
개별 대상을 부수 지 않습니다. 대상에 대해 (:
) 규칙을 여러 개 만들 수 있습니다. 단 하나의 규칙에 실제 레시피가있는 경우에만 규칙을 작성할 수 있습니다. 이것은 좋은 유스 케이스로 보인다.
좀 더 구체적으로 기재 할 수 있습니까? 나는 시도했다 | 종속성 순서를 지정하지만 단일 대상을 컴파일하는 경우에도 종속성을 빌드하므로 의도 한대로 작동하지 않습니다. – piotr
더 구체적 일 수 있습니까? 정확히 무엇을 시도 했습니까? – reinierpost
- 1. DsoFramer가 Excel 인스턴스 실행을 비활성화합니다.
- 2. NSIS는 설정이 끝날 때 자동 실행을 비활성화합니다.
- 3. Java assert는 Map.remove()의 실행을 비활성화합니다.
- 4. 이 프로그램이 병렬 실행을 도입합니까?
- 5. 일부 조건에 따라 체크 박스를 활성화/비활성화합니다.
- 6. 일부 병렬 작업과 일부 연속 작업이있는 메서드에 대한 작업 병렬 라이브러리
- 7. 병렬 실행을 위해 스레드간에 트랜잭션을 전달하는 방법은 무엇입니까?
- 8. MakeMaker : make vs make dist
- 9. wpf의 일부 조건을 기반으로 DataGrid의 셀에서 체크 박스를 비활성화합니다.
- 10. GridView를 비활성화합니다.
- 11. SSIS - 대상의 유형 제안
- 12. 특정 대상의 TouchesBegan
- 13. Win32 용 분산 GNU Make
- 14. 리눅스에서 "make & make install"소프트웨어의 문제점
- 15. "make"와 "make all"의 차이점은 무엇입니까?
- 16. Nmake : 대상의 자리 표시 자/와일드 카드
- 17. 성능 분석 방법 GNU Make 파일
- 18. Windows에서 만들기 (병렬 작업)
- 19. 모든 gcc 경고를 비활성화합니다.
- 20. DoDragDrop이 MouseMove 이벤트를 비활성화합니다.
- 21. 컨트롤 클릭을 비활성화합니다.
- 22. CKEditor는 HTML 변환을 비활성화합니다.
- 23. NSTimer는 UIView에서 dealloc을 비활성화합니다.
- 24. AsyncPostBackTrigger는 버튼을 비활성화합니다.
- 25. Javascript가 내 포스트 백을 비활성화합니다.
- 26. LinqToSql - 병렬 - DataContext 및 병렬
- 27. 어떤 코드를 병렬 처리해야합니까?
- 28. 병렬 프로세스를위한 타이밍 제어
- 29. 비동기 실행을 사용하는 클래스 테스트
- 30. 병렬 EntityFramework
어떻게 "개별 목표를 깨뜨릴 수 있습니까?" – Beta