2014-04-29 3 views
1

나는 이것이 이상한 일이라는 것을 알고 있지만 가능한지 알고 싶다.Node.js의 멀티 스레딩과 행렬 곱셈?

노드의 클러스터 모듈이나 다른 멀티 스레딩/다중 프로세스 모듈을 사용하면 프로세서가 많은 계산을 위해 Node.js에서 실제 성능을 얻을 수 있습니까? 참고 : 이것은 클라이언트 측 전용 프로그램입니다 (네트워크가 없습니다).

예를 들어 node.js에서 각 프로세스에 계산할 행을 할당 한 클러스터 모듈을 사용하여 행렬 곱셈 프로그램을 만들려고했습니다. 그러나 node.js가 메모리 공유를 방해하기 때문에 큰 계산 된 행을 부모 프로세스로 다시 보내려면 메시지 전달에 의존해야합니다. 이것은 행렬 곱셈을 순차적으로 수행하는 것보다 느 렸습니다. 어쩌면 내가 잘못하고있는 것일 수도 있고 나쁜 전략을 갖고있는 것일 수도 있지만 다른 누구라도 node.js를 사용하여 많은 양의 데이터를 조작하고 실제로 프로세서의 모든 기능을 사용할 수 있는지 궁금 할뿐입니다. 그렇다면 어떻게해야할까요?

+0

당신은 네트워크 시간과 CPU 시간의 균형을 유지해야합니다. 스레드 당 하나의 행이 좋지 않지만 이미지를 8 개의 줄무늬로 나누고 각 줄마다 다른 과정을 수행하십시오. 하나의 스레드를 사용하는 것이 더 빠를 수도 있습니다. 특정 문제는 다른 것보다 MP에 더 많이 도움이됩니다. 이상적으로는 시간이 오래 걸리고 작은 페이로드를 반환하는 작은 작업 설명이 있어야합니다. – dandavis

+0

왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래 등 네 부분으로 두 행렬을 나누는 더 나은 병렬 행렬 곱셈 알고리즘이 있습니다. 그러나 네트워크는 항상 훨씬 더 많은 시간을 필요로합니다. –

+0

이제이 질문이 더욱 이상하게 보일 것입니다. Node.js 클라이언트 측만 네트워크 요소없이 사용하고 있습니다. 이제 "pthread와 함께 C 또는 C++을 사용해야합니다."라고 말합니다. 다시 한 번 Node.js를 사용하여 많은 양의 데이터를 계산하는 예제가 있는지 궁금합니다. CUDA 유형 문제처럼 생각하십시오. 지금까지 나는 큰 데이터를 전달하는 메시지가 항상 병 목이되어 슈퍼 슬로우하게하기 때문에 이것이 불가능하다는 인상하에있다. 내가 잘못? –

답변

1

JXcore (node.js 배포판)은 현재 node.js로 CPU 사용량이 많은 작업에 가장 적합합니다. 그것은 가시적 인 성능으로 멀티 스레드 작업을 지원합니다.

+0

이 점을 지적 해 주셔서 감사합니다. 이 페이지 : http://jxcore.com/docs/jxcore-store.html은 정말로 나를 위해 스레드 안전 공유 메모리 저장소를 정리합니다. 나는 그것이 정말로 물건을 빠르게 할 것이다라고 생각한다. 이제는 멀티 스레딩을 테스트하고 직렬 실행 알고리즘을 능가하는지 알아 보겠습니다. –