Deepening Cray’s Involvement in Collaborative R&D and Codesign


Cray recently announced the birth of our new computing research organization for Europe, the Middle East and Africa (EMEA), the Cray EMEA Research Lab (CERL). Our investment in Europe is not new (the Cray®-1 and every machine since found a European home), but an explicit focus on research is a big and bold move for our company. I am very honored to be leading that change, and I will explain here what you can expect to see from CERL. Recent collaborations in EMEA For our current customers, this move is very welcome, but may not have been a huge surprise. That’s because during the last five years we have become more involved in deep research collaborations in EMEA. Most notably, Centers of Excellence at EPCC, HLRS and recently also at ... [ Read More ]

Six Ways to Say “Hello” in Chapel | Part 3


This article concludes the introduction to Chapel via simple “Hello world” programs that I started in parts one and two of this series. In the previous articles, we’ve looked at serial and data-parallel approaches to saying “hello” in Chapel. This time around, we’ll look at task-parallel ways to do so. Concurrent Hello World The following program uses concurrent tasks to print out its “hello” messages: This program replaces the data-parallel forall-loop that we’ve used in previous versions with a coforall-loop. Mnemonically, “coforall” can be thought of as meaning “concurrent forall.” Coforall-loops differ from forall-loops in that they create a distinct task for each iteration of the loop. Because of this, the body of a ... [ Read More ]

Cray’s Chapel Team to Host Reddit AMA!


On Wednesday, Oct. 14, the Chapel development team at Cray will be hosting an all-day Reddit AMA (Ask Me Anything) session starting at 8:30 a.m. PDT on the /r/programminglanguages subreddit.  The AMA will focus on the topic of the Chapel parallel programming language — what it is, what makes it unique, technical questions about Chapel, the challenges of language adoption, the status of the project, and whatever else is on readers’ minds. In addition to questions specifically about Chapel, participants are encouraged to ask more general questions about parallel programming languages and models. Whether you're interested in Chapel specifically, or parallel programming languages more generally, we invite you to attend this AMA, posting your ... [ Read More ]

Six Ways to Say “Hello” in Chapel | Part 2


This article continues the introduction to Chapel via simple “Hello world” programs that I started in part one of this series. Continuing where we left off: Distributed Parallel Hello World   My last post ended with the following parallel, distributed-memory Chapel program, sans explanation: Here’s how this program works: As in previous examples, the first line declares a configuration constant, n, indicating how many messages to print. The next line is a use statement, which makes a module’s contents available to the current scope. In this case, we are ‟use”-ing a standard library module, CyclicDist, which supports the cyclic distribution of rectangular index sets to compute nodes (or locales in Chapel terminology). The ... [ Read More ]

Six Ways to Say “Hello” in Chapel | Part 1


When learning a new programming language, users often start by studying “Hello world” programs —those that output simple messages to the console. Though such programs are trivial by nature, they can be an illuminating way to get familiar with a new language in a short amount of time. In this series of articles, I’ll show several “Hello world” programs in Chapel, Cray’s open-source programming language for productive parallel programming. I’ll start with a pair of traditional (serial) “Hello world” programs and then move on to parallel versions that take advantage of Chapel’s features for shared- and distributed-memory execution. Simple Hello World Writing a traditional “Hello world” program in Chapel is the one-liner you’d hope ... [ Read More ]