Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    OmarElawady
    @OmarElawady
    Sure, I'd be glad to work on it. I'll open an issue and try to work out a solution for it.
    Brad Chamberlain
    @bradcray

    @carcarah: Are you saying your program is essentially doing:

    begin {
      while(1) {
        begin sayHiBack();
      }
    }

    ? If so, that’s going to create an infinite number of tasks (one per iteration of the infinite loop), which should keep your system from getting bored and not be surprising that it would tap all of your cores. On a 4-core system, that would amount to 400% of the CPU.

    Ben Albrecht
    @ben-albrecht

    Sure, I'd be glad to work on it. I'll open an issue and try to work out a solution for it.

    @OmarElawady - Thanks for the offer. I think we have a fix on the way for this though.

    OmarElawady
    @OmarElawady
    @ben-albrecht Thanks, I've made a new issue.
    Ben Albrecht
    @ben-albrecht
    Thanks!
    Tiago Carneiro
    @carcarah
    Hello @bradcray . Thanks for your reply. I'm doing something like this:
    begin {while(1){};} and a second begin like this one. What I get is something like 4 busy threads
    Brad Chamberlain
    @bradcray
    I see, thanks for clarifying. In that case, I’m guessing that what you’re probably seeing is related to how the Chapel runtime uses busy-waiting to see whether new tasks show up. @ronawho is the expert here.
    Elliot Ronaghan
    @ronawho
    The runtime will put threads to sleep after a little bit if no new tasks are added. Do you have a more complete snippet of what you're doing?

    If you have:

    proc main() {
      begin {while(1){};}
      begin {while(1){};}
    }

    I would expect 3 threads to be running at 100% (the 2 begins, and the original task, spin waiting for those other tasks to complete)

    Michael Ferguson
    @mppf

    @krishnadey30

    Are you asking “shouldn't ! preserve the shared nature of the original variable rather than changing it into a borrowed?"

    Yes.

    It is this way intentionally. First, it's common to use ! to be able to call a method, and methods use the borrow type. Second, we'd want shared and owned to behave the same in this respect - and a conversion from owned nilable to owned non-nilable will leave the source variable storing nil (because it does ownership transfer). It would be surprising if ! did ownership transfer.

    BTW if you want to go from shared nilable to shared non-nilable you can use a cast to do so e.g. mySharedNilable : shared class which will throw if it is nil.

    Tiago Carneiro
    @carcarah
    @ronawho @bradcray Hello Elliot, until now I'm playing with begin and cobegin before modifying my code.
    I also asked that question because I could see something like a busy wait when the Locale 0 finishes its jobs but other locales dont. So I was curious
    @ronawho let me show the little example I was using here
    Tiago Carneiro
    @carcarah
    This message was deleted

    `proc sayHiBack() {
    while(1){};
    }

    begin {
    while(1){};
    }

    begin sayHiBack();

    writeln("Hello");`

    ok, it is going to be like this, I forgot how to highlight
    (sorry for that =P)
    -- this one shows me 400%
    Elliot Ronaghan
    @ronawho
    Is that for a comm=none compilation, or comm=gasnet?
    Elliot Ronaghan
    @ronawho
    For comm=none, I would expect 300% (2 tasks on 2 threads hosting the begins, 1 task on 1 thread at the end of "main()" waiting for those begins to finish). For comm=gasnet there is an additional thread to handle incoming on-stmts. That is the "progress thread", and reducing cpu utilization for that under gasnet is captured in chapel-lang/chapel#9067
    The task waiting for those begins is part of an implicit sync around the main function so that we don't tear down the program while there's still asynchronous tasks running
    Brad Chamberlain
    @bradcray
    @carcarah: To format code start a line with chapel, then type a newline, then code, then end with
    (where ``` starts and ends that block)
    (but got interpreted as “format this line please”)
    Takeshi Y.
    @ty1027
    Just noticed some HN thread about Chapel... :-) https://news.ycombinator.com/item?id=22708041
    Krishna Kumar Dey
    @krishnadey30
    @mppf thanks.
    Ben Albrecht
    @ben-albrecht
    @ty1027 - cool! thanks for sharing
    Tiago Carneiro
    @carcarah
    @bradcray thanks Brad!
    Rahul Ghangas
    @rahulghangas
    This is from a question raised by someone in the Gsoc channel, but I don’t think the docs discuss task intents at all, except maybe in the evolution of chapel section. I think it is a fairly important concept and should be covered in the Task Parallelism primer. New users who are relying primarily on the docs can get lost pretty easily while using begin/ cobegin statements.
    Rapiz
    @Rapiz1
    +1 for @rahulghangas
    I found the task intent with task parallelism in Language Specification. But not in primer.
    Aniket Mathur
    @Aniket21mathur
    @mppf thanks
    Kritansh Mehrotra
    @cyberdynamo
    Do anyone have template for GSoC Proposal for chapel?
    Rahul Ghangas
    @rahulghangas
    Kritansh Mehrotra
    @cyberdynamo
    @rahulghangas you participating in GSoC?
    Kritansh Mehrotra
    @cyberdynamo
    @rahulghangas does python have a photomontage library?
    Kritansh Mehrotra
    @cyberdynamo
    Anyone know how to install and use Chapel in Windows?
    Rahul Ghangas
    @rahulghangas

    @rahulghangas you participating in GSoC?

    I am

    @rahulghangas does python have a photomontage library?

    I don’t think so. It’s an unfinished project, but you can do basic image stitching using Graph cuts

    Sai Rajendra Immadi
    @immadisairaj

    Anyone know how to install and use Chapel in Windows?

    @cyberdynamo I found this thread on how to download Chapel in windows.
    https://sourceforge.net/p/chapel/mailman/message/25130951/
    Maybe it might be of help

    Also, there is a channel for GSoC if you want to join https://gitter.im/chapel-lang/chapel-summer-of-code
    Ben Albrecht
    @ben-albrecht
    @rahulghangas - Agreed. FWIW, it is on the TODO list: chapel-lang/chapel#12615

    Anyone know how to install and use Chapel in Windows?

    @cyberdynamo - also see https://chapel-lang.org/gsoc/faq.html:

    I’ve read the documentation on platform support and can’t find Windows anywhere.

    At this stage in Chapel’s development, Windows is not officially supported natively. Chapel does work well under the Windows Subsystem for Linux (WSL) and it’s also possible to use it under Cygwin. However for most GSoC development efforts we would recommend using WSL, a VM, or finding a Linux machine you can SSH to.

    Brad Chamberlain
    @bradcray
    @rahulghangas: I agree that would be a nice thing to add given how core tasking and parallelism are to Chapel. Would you file a separate feature request issue to GitHub about it?
    Kritansh Mehrotra
    @cyberdynamo
    How is Chapel is related to High Performance Computing?
    Ben Albrecht
    @ben-albrecht
    @cyberdynamo - Chapel contains first-class concepts for concurrent and parallel computation, runs on laptops, clusters, the cloud, and HPC systems, and supports locality-oriented features for distributed memory systems. See https://chapel-lang.org/learning.html to learn more.
    Brad Chamberlain
    @bradcray
    @cyberdynamo: My short answer: It’s fast, parallel, and scalable.
    Rahul Ghangas
    @rahulghangas

    @rahulghangas: I agree that would be a nice thing to add given how core tasking and parallelism are to Chapel. Would you file a separate feature request issue to GitHub about it?

    @bradcray I’ll do that

    Brad Chamberlain
    @bradcray
    Thanks!