Acovea

소프트웨어 스크린 샷:
Acovea
소프트웨어 정보:
버전: 1.0.1
업로드 날짜: 3 Jun 15
개발자: Scott Robert Ladd
라이센스: 무료
인기: 76

Rating: 3.0/5 (Total Votes: 2)

Acovea는 GCC C 및 C ++ 컴파일러와 프로그램을 컴파일에 대해 "최고"옵션을 찾기위한 유전자 알고리즘을 구현합니다.
ACOVEA (진화 알고리즘을 통해 컴파일러 옵션의 분석은)는 GCC (GNU Compiler Collection) C 및 C ++ 컴파일러와 프로그램을 컴파일에 대해 "최고"옵션을 찾기 위해 유전자 알고리즘을 구현합니다.
"최적"이 컨텍스트에서, 주어진 소스 코드에서 가장 빠르게 실행 가능한 프로그램을 생성 해당 옵션으로 정의된다. Acovea는 다른 프로그래밍 언어 및 비 GCC 컴파일러를 테스트하기 위해 확장 할 수있는 C ++ 프레임 워크입니다.
나는 프로파일에 목적에 유사한 최적화 도구로 Acovea을 구상. 전통적인 기능 수준의 프로파일 링은 프로그램의 성능에 가장 영향력있는 알고리즘을 식별; Acovea는 빠른 코드를 생성하는 컴파일러 플래그 및 옵션을 찾기 위해 이러한 알고리즘에 적용된다.
Acovea는 비관적 상호 작용하고, 컴파일러의 안정성을 시험하기위한 플래그의 조합을 테스트하기 위해 유용하다.
현대 소프트웨어 이해하고 전통적인 수단에 의해 확인하는 것이 곤란하다. 수백만 줄의 코드는 응용 프로그램이 간단한 설명 또는 무차별 조사를 무시하고, 복잡한 상호 작용을 포함하는 생산하고 있습니다.
소프트웨어의 복잡성 주어진 비현실적인 제안 - 시험에 대한 안내, 결정 론적 접근 방법은 행동의 가능한 모든 조합을 구상하기 위해 인간 테스터에 의존한다. 그러나, 그 복잡성에도 불구하고, 우리는 현대, 대규모 소프트웨어에 대한 중요한 질문에 대한 답변을해야합니다.
중요한 문제의 어떤 종류의? GNU 컴파일러 컬렉션을 고려하십시오. 나는 때문에 다른 컴파일러가 제공하는 수많은 옵션에 기사 벤치 마크 코드 생성, 어려움으로 가득 찬 작업을 작성합니다. 내 벤치 마크는 어떤 의미를 가지고, 나는 주어진 응용 프로그램의 빠른 코드를 생성 옵션 중 어떤 조합을 알아야합니다.
옵션의 "최고"세트를 찾는 것은 GCC 문서의 범위와 GCC 개발자 커뮤니티의 통념 제공, 간단한 작업처럼 들린다. 아, 그것은 단지 너무 쉽게 있다면! GCC 문서는, 광범위한하면서, 또한 정직 정확하다.
나는 문서의 스타일을 주셔서 감사합니다; 제품의 "품질"에 대해 절대 문을 많은 상용 벤더와는 달리, GCC의 documenters는 코드 생성을 변경하는 방법 다양한 옵션의 불확실성을 인정한다. 실제로, 코드 생성 컴파일되는 어플리케이션의 타입과 타겟 플랫폼에 전적으로 의존한다. 하나의 소스 코드에 대한 빠른 실행 코드를 생성 옵션은 다른 프로그램의 성능에 해가 될 수있다.
나는 새 글을 게시 할 때마다 "전통적인 지혜는"내받은 편지함에 도착한다. 예의의 무례에 대한 고집에 이르기까지,이 이메일은 빠른 코드를 생성하는 모순 된 제안이 포함되어 있습니다.
대부분의 경우, 이러한 주장 일화는 종종보다 유효성의 공식적인 증거가 부족하고, 제안 된 "개선"또는 해로운 효과가있다. 모든 GCC 옵션은 프로그램 코드를 생성 함께 작동하는 방법을 정확하게 알고 - 그것은 포함 --myself 아무도 것을 점점 더 분명되고있다.
나는 최적화의 성배를 추구 -하지만 최적화는 정확히 무엇인가? 문제를 이해하는 것은 해결책을 찾는 첫 번째 단계입니다.
최적화는 소스 코드에서 "최선"머신 코드를 생성하기 위해 시도한다. "베스트"다른 응용 프로그램에 여러 가지를 의미한다 과학적 응용은 빠르고 정확한 결과와 관련되어있는 동안 정보의 데이터베이스 삽 청크; 임베디드 시스템에 대한 첫 번째 관심사는 코드 크기 일 수있다.
그리고 작은 코드가 빠르고, 또는 빠른 코드 정확한 것을 확실히 할 수있다. 최적화는 하드웨어 및 소프트웨어 구성의 다양성 제공, 지금까지 정확한 과학이되는 것입니다.
최적화 알고리즘은 루프 불변, 또는 글로벌 공통 서브 표현식 제거하기 위해 전체 프로그램을 검사하는 복잡한 제거하는 것처럼 간단 할 수있다. 많은 최적화 프로그래머 효율 기본 정보를 변경하면서 동일한 결과를 생성하는,보다 효율적인 형태로 쓴 변경; 특별 명령 세트와 기본 하드웨어의 특정 특성을 사용하여 다른 "최적화"생산 코드입니다.
메모리 아키텍처에서, 파이프 라인, 오프 - 칩 캐시 - 모든 고급 언어를 사용하는 프로그래머에게 분명하지 않은 방식으로 코드의 성능에 영향을 미친다. 사실, 더 많은 캐시 미스가 발생 큰 코드, 따라서 성능을 저하을 만들 수 있습니다 빠른 코드를 생성하는 것처럼 보일 수 있습니다 최적화.
심지어 가장 손 조정 된 C 코드는 해석의 영역이 있습니다; C 문과 기계어 간의 절대 일대일 대응은 존재하지 않는다. 대부분의 소스 코드의 시퀀스는 상이한로 컴파일 될 수있다 - 그러나 기능적으로 동등한 - 기계 명령어들은 다른 크기 및 성능 특성과 스트림.
빠른 프로그램을 생성 할 수있는 기능 코드 자체의 함수에 대한 호출을 대체 할뿐만 아니라 프로그램의 크기를 증가시킬 수있다 : 함수를 인라인하면이 현상의 전형적인 예이다. 향상된 프로그램 사이즈는, 차례로, 이에 의한 캐시 미스에 프로그램을 둔화 고속 캐시 메모리 내부에서 피팅 알고리즘을 방지 할 수있다.
족제비 단어의 내 사용을 주목 "할 수있다"- 작은 기능을 인라인 때로는 다른 최적화 알고리즘을 더 빠르고 작은 코드 생산, 현지 조건에 대한 코드를 개선 할 수있는 기회를하실 수 있습니다.
최적화는 간단하거나 명확하지 않다, 알고리즘의 조합은 예기치 않은 결과가 발생할 수 있습니다. 어떤 질문에 나를 찾아온다 : 특정 응용 프로그램에 대해 가장 효과적인 최적화 옵션은 무엇입니까?
이 릴리스의 새로운 기능 :
· 비 무료 라이센스의 사소한 변경.
· 지원이 libcoyotl과 libevocosm의 최신 버전에 대한 지원이 추가되었습니다.

유사한 소프트웨어

nose-selecttests
nose-selecttests

20 Feb 15

PyModel
PyModel

11 May 15

cynic
cynic

14 Apr 15

개발자의 기타 소프트웨어 Scott Robert Ladd

Acovea/GTK
Acovea/GTK

3 Jun 15

코멘트 Acovea

댓글을 찾을 수 없습니다
코멘트를 추가
이미지를 켜십시오!