Return-Path: X-Original-To: apmail-incubator-giraph-user-archive@minotaur.apache.org Delivered-To: apmail-incubator-giraph-user-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 3B2B88080 for ; Fri, 9 Sep 2011 15:27:02 +0000 (UTC) Received: (qmail 86358 invoked by uid 500); 9 Sep 2011 15:27:02 -0000 Delivered-To: apmail-incubator-giraph-user-archive@incubator.apache.org Received: (qmail 86313 invoked by uid 500); 9 Sep 2011 15:27:01 -0000 Mailing-List: contact giraph-user-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: giraph-user@incubator.apache.org Delivered-To: mailing list giraph-user@incubator.apache.org Received: (qmail 86301 invoked by uid 99); 9 Sep 2011 15:27:01 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 09 Sep 2011 15:27:01 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of jake.mannix@gmail.com designates 209.85.213.175 as permitted sender) Received: from [209.85.213.175] (HELO mail-yx0-f175.google.com) (209.85.213.175) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 09 Sep 2011 15:26:54 +0000 Received: by yxj17 with SMTP id 17so1637841yxj.6 for ; Fri, 09 Sep 2011 08:26:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; bh=IW4PWNm/jCOc/9BApWTdBAm+JB6BmkvRxbIrTv3TiW4=; b=d4IdjHGvgYpxphRPnjE4Ic6L/yr569BtzAG/m2dnXf76e25SpZfILYYUJ7/Mvzhy1W ODzMjahoMMbLmt65+3TU3pq46vOiYgkxvROwCCSWAHfWlnMyoGZ/udz8OSXStuE/YbEC BDasaIvGWe41yKTLuRq7M4b8OqszCYc7ODXDA= Received: by 10.150.8.10 with SMTP id 10mr2100876ybh.60.1315581993117; Fri, 09 Sep 2011 08:26:33 -0700 (PDT) MIME-Version: 1.0 Received: by 10.151.148.16 with HTTP; Fri, 9 Sep 2011 08:26:13 -0700 (PDT) In-Reply-To: References: <4E6927D7.2070304@apache.org> <4E692D2D.1050000@apache.org> <4E6934B1.6010908@apache.org> From: Jake Mannix Date: Fri, 9 Sep 2011 08:26:13 -0700 Message-ID: Subject: Re: Message processing To: giraph-user@incubator.apache.org Content-Type: multipart/alternative; boundary=000e0cd2537c5f690004ac83cd43 X-Virus-Checked: Checked by ClamAV on apache.org --000e0cd2537c5f690004ac83cd43 Content-Type: text/plain; charset=ISO-8859-1 On Fri, Sep 9, 2011 at 8:03 AM, Avery Ching wrote: > The GraphLab model is more asynchronous than BSP They allow you to update > your neighbors rather than the BSP model of messaging per superstep. Rather > than one massive barrier in BSP, they implement this with vertex locking. > They also all a vertex to modify the state of its neighbors. We could > certainly add something similar as an alternative computing model, perhaps > without locking. Here's one idea: > > 1) No explicit supersteps (asynchronous) > This sounds interesting, esp. for streaming algorithms, although I was thinking something slightly less ambitions to start out: still have supersteps (effectively) which describe when each vertex has had a chance to send all messages it wants for this iteration, and has processed all inbound messages. > 2) All vertices execute compute() (and may or may not send messages) > initially > 3) Vertices can examine their neighbors or any vertex in the graph (issue > RPCs to get their state) > "or any vertex in the graph" sounds pretty scary, but yes, powerful. I like it when my seemingly radical ideas get made look not so scary by comparison! :) > 4) When messages are received by a vertex, compute() is executed on it (and > state is locally locked to compute only) > 5) Vertices stlll vote to halt when done, indicating the end of the > application. > 6) Combiners can still be used to reduce the number of messages sent (and > the number of times compute is executed). > > This could be fun. And provide an interesting comparison platform barrier > based vs vertex based synchronization. > Yeah, I think locking is an implementation detail which might be even avoidable: if Vertices are effectively given a messageQueue which they can process from, we could interpolate between buffering and processing messages synchonously. The per-mapper threading model could get... interesting! -jake --000e0cd2537c5f690004ac83cd43 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
On Fri, Sep 9, 2011 at 8:03 AM, Avery Ching = <aching@apache.or= g> wrote:
The GraphLab model is more asynchronous than BSP =A0They allow you to updat= e your neighbors rather than the BSP model of messaging per superstep. =A0R= ather than one massive barrier in BSP, they implement this with vertex lock= ing. =A0They also all a vertex to modify the state of its neighbors. =A0We = could certainly add something similar as an alternative computing model, pe= rhaps without locking. =A0Here's one idea:

1) No explicit supersteps (asynchronous)
<= div>
This sounds interesting, esp. for streaming algorithms, = although I was thinking something slightly less ambitions to start out: sti= ll have supersteps (effectively) which describe when each vertex has had a = chance to send all messages it wants for this iteration, and has processed = all inbound messages.
=A0
2) All vertices execute = compute() (and may or may not send messages) initially
3) Vertice= s can examine their neighbors or any vertex in the graph (issue RPCs to get= their state)=A0

"or any vertex in the graph" sou= nds pretty scary, but yes, powerful. =A0I like it when my seemingly radical= ideas get made look not so scary by comparison! :)
=A0
4) When messages are received by a vertex, compute() is executed on it= (and state is locally locked to compute only)
5) Vertices stlll = vote to halt when done, indicating the end of the application.
6) Combiners can still be used to reduce the number of messages sent (and t= he number of times compute is executed).

This coul= d be fun. =A0And provide an interesting comparison platform barrier based v= s vertex based synchronization.

Yeah, I think locking is an implementation= detail which might be even avoidable: if Vertices are effectively given a = messageQueue which they can process from, we could interpolate between buff= ering and processing messages synchonously. =A0The per-mapper threading mod= el could get... interesting!
=A0
=A0 -jake
--000e0cd2537c5f690004ac83cd43--