많은 컴퓨터에서 더 빠른 컴퓨터를 만드는 것이 가능합니까?

많은 컴퓨터에서 더 빠른 컴퓨터를 만드는 것이 가능합니까?

아래 내 게시물은 StackOverflow에서 (다소 불공평하다고 생각합니다) 폐쇄되었으므로 여기에 다시 게시합니다.

원래 질문: 여러 대의 컴퓨터를 사용하여 더 빠른 환경을 만들려면 어떻게 해야 합니까? 각각 4GB와 2GHz를 갖춘 약 12대의 컴퓨터가 있습니다. 시간이 많이 걸리는 데이터 변환을 실행해야 하며 이러한 시스템의 결합된 기능을 사용하고 싶습니다. 그들은 모두 Win2003 서버를 실행하고 있습니다.

기본적으로 우리는 분석가가 분석을 수행할 수 있도록 변환해야 하는 비디오 파일이 많습니다. 프로젝트에 대해 더 자세히 설명할 수 없기 때문에 문제는 더욱 복잡해집니다.

원본 게시물:https://stackoverflow.com/questions/1126710/is-it-possible-to-create-a-faster-computer-from-many-computers

답변1

당신이 질문하는 것은 오늘날 컴퓨팅 분야의 주요 질문의 핵심입니다. 개별 처리 코어는 훨씬 더 빨라지지 않을 것이므로 프로그래머는 더 큰 문제를 여러 컴퓨터에서 병렬로 처리할 수 있는 더 작은 문제로 나누는 코드 작성을 시작해야 합니다.

짧은 답변: 처리 소프트웨어를 사용하여 작업을 분할하고 병렬로 실행할 수 있다면 그렇게 하십시오. 만약 그렇지 않다면, 그것을 작성한 사람들에게 좀 더 병렬적인 방식으로 작업할 수 있도록 다시 도구를 사용하는 방법에 대해 이야기하십시오.

데이터를 개별 컴퓨터로 가져오고, 병렬 작업을 시작하고, 작업이 실제로 완료되었는지 확인하고, 데이터를 다시 가져오는 메커니즘은 다른 포스터에서 언급한 클러스터 관리 소프트웨어가 수행하는 기능 중 상당 부분입니다. 거기~이다몇 가지 사소한 문제가 포함되어 있지만 일반적으로 클러스터 관리 소프트웨어는 작업 예약 및 리소스 관리에 관한 것입니다. 클러스터 관리 소프트웨어는 실제로 병렬 작업 수행을 처리하지 않습니다. 이것이 바로 "처리 소프트웨어"가 수행해야 하는 작업입니다.

여러 대의 컴퓨터 그룹을 더 빠른 단일 컴퓨터처럼 "작동"하도록 만들 수 있는 "마법"은 없습니다. 다중 프로세서를 최대한 활용할 수 있도록 제작된 소프트웨어가 없으면 이 문제에서 벗어날 수 없습니다.

답변2

여러 컴퓨터의 처리 능력을 결합하려면 컴퓨팅 또는 컴퓨팅 클러스터라고 하는 일종의 클러스터링 소프트웨어를 실행해야 합니다. 이를 수행할 수 있는 애플리케이션의 몇 가지 예는 다음과 같습니다.

그러나 이는 복잡한 소프트웨어이므로 사용 가능한 고성능 클러스터를 만드는 것은 복잡하고 잠재적으로 비용이 많이 드는 작업이므로 가볍게 수행해서는 안 됩니다. 또한 작업을 수행하려면 클러스터에서 실행할 수 있는 특수 소프트웨어가 필요합니다. 단순히 여러 대의 Windows 컴퓨터를 함께 연결하고 마술처럼 클러스터를 만들고 그 위에 표준 Windows 응용 프로그램 모음을 설치할 수는 없습니다.

답변3

컴퓨터 클러스터는 다음과 같이 말할 때 잘 작동합니다.

각 컴퓨터에 누군가가 앉아 문제의 일부를 처리하게 하면 작업 속도가 빨라지나요? 즉, 문제를 기본적으로 독립적인 덩어리로 나눌 수 있습니까?

문제를 "변환할 비디오 파일 수가 많다"고 설명했다면 예, 클러스터에서 작동할 것입니다.

Microsoft에는 제가 전혀 모르는 클러스터링 소프트웨어가 있습니다. 가는 길일 수도 있습니다.

아마도 더 쉬울 것입니다 :

컴퓨터 한 대를 마스터로 지정합니다. 나머지는 모두 고객입니다.

이 마스터의 모든 비디오 파일을 폴더에 넣습니다.

클라이언트별로 공유 폴더를 만들고 각 클라이언트가 해당 공유 폴더를 마운트하도록 합니다.

클라이언트는 자주 작동하는 일부 Windows 스크립팅 언어(Perl이 작동함)를 실행하고 공유 폴더에 항목이 있으면 이름을 work_yourfilenamehere로 바꾸고 변환을 실행합니다. 완료되면 여기에서 이름을 done_yourfilename으로 바꿉니다. 그렇지 않다면 60초 정도 기다리십시오.

마스터 컴퓨터는 각 공유 폴더를 검색하는 스크립트를 실행합니다. 아무것도 없으면 변환할 파일을 하나 넣으세요. 여기에 done_yourfilename이라는 파일이 있으면 완료 폴더로 이동하세요. 마스터 폴더에 아무것도 남지 않을 때까지 반복합니다.

기본적으로 모든 클라이언트는 가능한 한 바쁜 상태를 유지해야 하며, 각 클라이언트는 각 파일을 변환하는 데 필요한 시간을 투자해야 합니다.

답변4

귀하의 질문에 대한 답변은 다음과 같습니다.크게이러한 비디오 파일을 "변환"하는 데 사용하는 소프트웨어와 그에 따른 내용.

Adobe After Effects에는 "네트워크 렌더링"이라고 하는 일종의 클러스터링 모드가 있지만 이상적인 솔루션은 아닙니다. (지난번에 확인했을 때 비디오를 다음으로 렌더링하는 것과 관련이 있었습니다.순서를 상상해 보세요, 아마도 귀하의 사용을 위해 비디오로 다시 결합해야 할 것입니다)

그 기본 아이디어는 영화를 여러 개의 청크로 나누고 각 청크에서 다른 PC가 작동하도록 하는 것입니다.

  • 특정 범위의 프레임만 처리하는 옵션이 있는 명령줄 비디오 인코딩 도구가 있어야 합니다. 이렇게 하면 분할을 자동화할 수 있습니다.

  • 각 청크는 다른 공유 폴더에 복사될 수 있습니다(역시 자동화하기가 매우 쉽습니다).

  • "팜"에 있는 각 PC는 소스 비디오를 변환하기 위해 이러한 공유 폴더 중 하나를 찾습니다. (변환을 수행하는 소프트웨어에 "폴더 감시" 기능이 있다고 가정하면 매우 쉽지만 이를 위해 배치 파일/셸 스크립트를 조작할 수 있습니다)

비디오 "변환"의 성격, 사용 중인 소프트웨어 또는 사용 가능한 스크립팅/프로그래밍 수준을 알지 못하면 더 이상 의견을 제시하는 것이 불가능합니다.

관련 정보