백엔드 번호 크 런칭을위한 HPC 리소스가있는 데스크탑 소프트웨어


17

우리의 작업 그룹은 건물 에너지 성능을 시뮬레이션하는 데스크탑 응용 프로그램을 생성합니다. .NET 응용 프로그램이며 사용자가 많은 시뮬레이션을 실행하면 시간이 많이 걸릴 수 있습니다. 시뮬레이션은 완전히 병렬화가 가능 하며 "사무실"에 매우 중요한 HPC 컴퓨팅 리소스가 있습니다.

우리가 가진 한 가지 아이디어는 사용자가 매우 오래 실행될 것이라는 시뮬레이션을 오프로드 할 수 있도록하는 것입니다 (각 개별 시뮬레이션은 약 30-120 초 동안 실행되지만 많은 수의 시뮬레이션을 실행하는 데 며칠이 걸릴 수 있음). 아무도 전에 이것을 한 적이 있습니까? 그렇다면 작업을 쉽게하기 위해 라이브러리를 사용 했습니까? 노력할만한 가치가 있었습니까?

추가 편집 :

시뮬레이션 오프로드를위한 개별 작업은

  • 파일 포장 (약 5Mb)
  • 서버에 업로드하고
  • 패키지를 개별 시뮬레이션으로 분해 (각각 약 30-120 초 걸리고 완전히 병렬화 가능), 시뮬레이션 수는 사용자가 선택한 옵션 수 (절연, 건물 방향 등)와 최악의 선택의 함수입니다. 가능한 모든 옵션은 약 1E50 시뮬레이션이됩니다. 100에서 ~ 1E5 시뮬레이션을 실행하는 것은 알려져 있지 않지만 대부분의 사용자는 10 미만으로 실행됩니다.
  • 완성 된 시뮬레이션을 재 조립하고 훨씬 더 큰 파일을 다운로드합니다.

우리 그룹이 처음 사용하기 때문에 어떤 인터페이스를 사용해야하는지 확실하지 않으며 예산 삭감으로 시간이 지나면 완료 될 수 있지만 다음 사람 (있는 경우)이 쉽게 유지할 수 있어야합니다.

이 응용 프로그램은 이미 .NET 4를 사용하고 있으며 사용자가 보유한 모든 코어를 사용하도록 확장 할 수 있습니다 (개발 시스템에는 8 개의 코어가 있음).


나는 확실히 당신이가는 것을 정확하게에 취소 아니에요 - HPC를 끝 항상에 될 것입니다 귀하의 서버 또는 다른 전용 서버? (그렇다면 훨씬 더 많은 서버 측을 수행 할 수 있기 때문에 훨씬 쉬워 질 것입니다.)
Aesin

@Aesin, HPC 엔드는 우리 서버에있을 것입니다. 기존 앱과 새 버전은 사용자 데스크톱에서 시뮬레이션을 실행합니다. 더 큰 사용자를 위해 HPC를 사용할 수 있도록 다음 버전을 미리 생각하는 방법에 대한 조언 / 권장 사항을 찾고 있습니다.
Tangurena

답변:


10

Condor : http://research.cs.wisc.edu/condor/ 사용을 고려할 수 있습니다 . 어떤 종류의 HPC 리소스에 대해 이야기하고 얼마나 많은 양의 리소스를 변경 하느냐에 따라 과잉 상태가 될 수 있습니다. 그러나 시작하기가 매우 쉽고 독립적 인 작업, 내결함성, 부하 분산 등을 처리합니다.

개별 작업 (길이, 비동기식) 및 상호 작용에 사용할 인터페이스 (시작 프로세스, 라이브러리 등)에 대해보다 구체적으로 설명하면 더 도움이됩니다.

매트


콘도르가 .net (Windows?)과 함께 작동하는지 잘 모르겠지만 작업 그룹은 Linux에서 콘도르를 사용하므로 작업 제출에 추천 할 수 있습니다. +1
Sebastian

Condor는 파일 시스템을 통해 통신 할 수 있으므로 .NET을 따를 필요가 없습니다. Windows에서 실행됩니다.
매트 Knepley

5

.NET 환경에있는 경우 .NET 4의 다중 스레딩 지원을 살펴 보았습니다. .NET 4.5에 추가되는 비동기 기능은 무엇입니까?

멀티 스레딩은 처리를 다른 컴퓨터로 오프로드하는 데 도움이되지 않지만 오늘날 우리가 사용하는 멀티 코어 PC를보다 잘 활용할 수 있도록합니다. 4.0에는 이와 관련하여 몇 가지 멋진 기능이 있습니다.

4.5는 현재 기술 프리뷰에 있으므로 도움이 될지 살펴볼 가치가 있습니다. MSDN에는 지난 한 달 동안 (10 월 또는 11 월, 9 월 이전의 새로운 비동기 기능)을 소개하는 기사가있었습니다. 이러한 기능이 전통적으로 덜 병렬 코드를 병렬화하는 방법으로 추진되고있는 것처럼 보였지만 IIRC에는 일부 다중 서버 지원도 포함되었습니다.


4

답은 HPC 백엔드의 기능에 따라 다릅니다. 이 질문은 NREL 사용자가 이용할 수있는 기존 리소스에 관한 것입니다. Windows Compute Cluster Server를 기반으로하는 Linux 클러스터와 Windows 클러스터가 있습니다.

  1. 리눅스 클러스터를 사용하려면 저자는 시뮬레이션 루틴이 모노 (Linux 용 .NET 플랫폼의 구현)에서 실행되고 모노가 노드에 설치되어 있는지 확인해야합니다.

  2. 다음 질문은 사용자가 컴퓨팅 클러스터에 계정을 가지고 있고 데이터를 노드에 가져올 수 있는지 여부입니다. 가장 간단한 경우는 로컬 PC와 노드에서 액세스 할 수있는 단일 파일 시스템입니다.

    NREL 사용자가 이러한 파일 시스템을 사용할 수 있는지 확실하지 않으므로 일부 복사가 관련됩니다. 이것은 이미 일을 복잡하게 만듭니다.

  3. 다음으로 응용 프로그램은 작업 설명 스크립트를 컴파일하고 해당 클러스터에 제출하고 작업이 대기열에서 나올 때까지 시뮬레이션 상태에 대해 대기열 시스템에 쿼리 할 수 ​​있어야합니다.

  4. 마지막으로 응용 프로그램은 결과를 검색 할 수 있어야합니다.

모두 사소한 것은 아니지만이 특정 랩의 설정에 매우 구체적입니다.

Ansys 또는 MSC의 상용 응용 프로그램을 사용하면 원격 클러스터에서 나중에 배치 모드로 실행할 수있는 시뮬레이션 작업 설명을 저장할 수 있습니다.

보다 일반적인 솔루션은 가능한 경우 그리드 인프라를 사용하는 것입니다.

다음으로, 웹 서비스가 시뮬레이션 요청을 기다렸다가 클러스터에 디스패치 할 수있는 서비스 지향 아키텍처로 이동하여 사용 가능한 리소스의 세부 사항에 대한 지식과 응용 프로그램을 분리 할 수 ​​있습니다.

이는 전산 생물학에서 널리 사용되며, 여기서는 툴이 전적으로 웹 서비스 요청 처리로 구성된 시뮬레이션 워크 플로우를 구성하는 데 사용됩니다.

계산을 원격 컴퓨팅 리소스로 오프로드하는 것은 Android 용 Google 음성 인식과 같은 애플리케이션에서 일반적으로 사용됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.