SPO600 프로젝트 1부

4202 단어
먼저 프로젝트에 대해 이야기하고 첫 번째 단계에서 우리가 해야 할 일에 대해 이야기해 봅시다.

이번 학기 프로젝트에는 SVE2 최적화를 오픈 소스 소프트웨어 패키지에 추가하는 작업이 포함됩니다.

첫 번째 부분에서는 다음 부분을 살펴보겠습니다.
(동일한 문서를 다시 작성하지 않기로 결정했습니다. 각 부분의 규칙here에 대한 자세한 내용을 읽을 수 있습니다.)

  1. Identify some candidate open-source packages for optimization.
  2. Find the SIMD implementations in these packages.
  3. Select the package you want to work with.
  4. Create a strategy for your changes.
  5. Note how the community accepts contributions and engages with the community to discuss your proposed work.


몇 가지 오픈 소스 후보를 찾아봅시다.



나는 지금 거의 2년 동안 상당한 오픈 소스 재미를 느끼고 있으며 호기심 때문에 이전에 기여하고 싶었던 라이브러리와 소프트웨어를 먼저 확인하기로 결정했습니다.

가장 최근의 아이디어는 Curl과 몇 가지 Python 라이브러리를 살펴보는 것이었습니다. 그리고 자바스크립트 웹 소켓 라이브러리를 보기로 했다. 그래도 랩에서 더 많은 팁을 읽은 후 다음 방법 중 하나로 어셈블리를 추가하는 것이 더 쉽기 때문에 라이브러리 수준 패키지만 살펴보고 c/C++를 사용하는 것이 훨씬 낫다고 생각했습니다.
  • 자동 벡터화
  • 인라인 어셈블러
  • 내장.

  • Examples:
    https://github.com/pandas-dev/pandas
    https://github.com/booknlp/booknlp/find/main
    https://github.com/optuna/optuna
    


    더 나은 것으로 전환하기로 결정했고 몇 시간 동안 검색한 후 다음 저장소를 찾았습니다.NSIMD https://github.com/agenium-scale/nsimdFastDifferentialCoding https://github.com/lemire/FastDifferentialCodingVS https://github.com/VcDevel/VcXSIMD https://github.com/xtensor-stack/xsimd
    Google repo에서 이 프로젝트를 찾았다는 사실에 놀랐습니다.
    https://github.com/google/highway 그리고 소유자 저장소에 이메일을 보내 그들이 진행 상황과 저장소 내부의 SIMD/SVE 지침에 대한 모든 것을 확인했습니다.

    피드백을 받았습니다:


    하지만 안타깝게도 이 이메일을 받는 동안 SVE2 지침이 이미 있음을 확인했습니다.


    약간의 경험을 갖고 todos를 구현하는 것은 좋지만 다른 blogPost에 있습니다.

    계속 진행하기로 결정하고 다음 저장소를 발견했습니다.
    XSIMDhttps://github.com/xtensor-stack/xsimd
    VShttps://github.com/VcDevel/Vc
    왜요?

    이 패키지에 SIMD 구현이 있습니까?



    예, 두 리포지토리 모두 SIMD 명령어가 있지만 그 중 하나에는 arm 명령어만 있습니다.


    작업할 패키지를 선택합니다.



    패키지에 대해.
    Vc는 명시적으로 데이터 병렬 프로그래밍을 위한 이식 가능하고 오버헤드가 없는 C++ 유형입니다.

    저는 주로 VC와 함께 SVE2 명령어를 구현하고 XSIMD와 함께 작업할 것입니다.

    변화를 위한 전략을 세우십시오.



    지금은 이미 GitHub에서 리포지토리를 포크하고 내 로컬 VSCode에 복제했습니다. 이제 코드를 탐색하여 업데이트할 수 있는 항목, 빌드 프로세스가 작동하는 방식, 라이브러리가 전반적으로 작동하는 방식, .h(헤더 파일) + 빌드용 스크립트 등과 같은 SVE2 명령어의 모든 기능을 구현하는 방법을 살펴보겠습니다. 에.



    커뮤니티가 기여를 수락하고 커뮤니티와 협력하여 제안된 작업을 논의하는 방법에 유의하십시오.



    SVE2 명령어를 repo에 추가할 수 있는지 확인하려면 슬랙이나 이메일에 메시지를 작성해야 합니다. 하지만 GitHub 리포지토리이므로 새 풀 요청으로 간단하게 내 업데이트를 확인하기를 바랍니다.

    문제를 만들었습니다. 어떻게 될지 봅시다:

    https://github.com/VcDevel/Vc/issues/320

    또한 나는 확실히 google/highway에서 시간을 보낼 것입니다. 가능한 한 빨리 이에 대한 내 새 블로그를 기다리십시오.

    결론



    ⚠️ 컴퓨터 아키텍처 블로그 게시물: 링크

    연결



    🖇 팔로우GitHub

    🖇 팔로우

    _p.s 이 게시물은 내 소프트웨어 이식성 및 최적화 수업을 위해 작성되었습니다. 실습 6.

    좋은 웹페이지 즐겨찾기