동일 작업 쓰레드 & 병렬 작업시 퍼포먼스

max77의 이미지

안녕하세요

프로그램에 연산하는 함수가 하나 있는데

프로그램에서 이 함수를 50만번 ~ 100만번 이상 호출하게 됩니다. 서로 다른 인자값을 넘겨주게 되구요.

이 함수를 단순 프로세스로 돌리는 것과

thread화 시키는 것과 , openmp를 이용하여 작업을 분할하여 병렬처리 하는것에서

가장 시간을 단축할 수 있는건 병렬처리 일까요??

병렬처리로 여러 처리를 하는 프로그램에서 사용해 본 적은 있는데 위처럼 동일한 작업을

많이 반복하게 될 경우도 병렬을 쓰면 이점이 있는지 약간 헷갈려서요..

답변 기다리겠습니다.

sohn9086의 이미지

함수 호출간에 서로 의존성이 있나요? 예를 들어 이전에 호출한 결과를 이후의 함수에 인자로 넘겨준다던지 말이죠.
만약 의존성이 있다면 스레드를 쓰든 OpenMP를 쓰든 절대로 병렬화 될 수 없습니다.
만약 의존성이 없다면 스레드를 쓰든 OpenMP를 쓰든 병렬화가 가능한데, 이 경우에는 병렬수가 많으니까 CUDA나 OpenCL과 같이 GPU를 활용하는 방법으로 작성하는 게 좋아보입니다. 왜냐면 GPU가 CPU에 비해서 연산 코어수가 압도적으로 많기 때문이죠.

생산적인 댓글을 달자

익명 사용자의 이미지


그냥 간단하게 분석해 보면.

SW레벨 Thread 방식과 HW레벨의 Multi-Process 방식으로 나누었을 때,

Thread 의 경우 timeslice를 효율적으로 처리하기 위한 방식입니다.
각 task의 쉬는시간(network i/o, disk i/o etc.) Process Power 를 잠깐 양도하는 개념입니다.

따라서 진행되는 작업 쉬는시간 거의 없이 process를 물고 늘어지는 경우에는,
Kernel 스케줄러가 애초에 정해놓은 timeslick를 다 소진해야지 thread 를 양보합니다.

반면 Multi-Process는
sohn9086 님이 언급하신 것처럼 특정 병목지점(임계구역)이 존재하지 않는 이상
약 1배 <= x < 2배 성능을 보여줍니다. (물론 각 CPU 벤더에서 제공하는 병렬 프로그래밍 코드를 사용하셔야 완벽히 보장됨)

물론 완전한 지식은 아닙니다.. 아무쪼록 판단하시는데 도움이 되었으면 좋겟습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.