Python bindings snake into global arrays toolkit

Sep 26, 2011
Python bindings snake into global arrays toolkit
Researchers at DOE’s Pacific Northwest National Laboratory have expanded the Global Arrays Toolkit to support the computer programming language Python to make it easier for programmers to write codes and incorporate features of GA.

While many of us don't want anything to do with snakes, for some, a certain kind of Python—the computer programming language, that is—is the preferred option. Researchers at Pacific Northwest National Laboratory have expanded the Global Arrays (GA) Toolkit to include full support for Python and make it easier for programmers to write codes and take advantage of GA features.

Use of Python in the high-performance computing community is growing, with multiple research institutions—including national laboratories as well as the Ohio Supercomputing Center—turning to the easy-to-use language to write high-performance computing codes. Python is used in scientific applications, such as bioinformatics, visual analytics, molecular dynamics, hydrology, material sciences and more.

The GA Toolkit enables researchers to more efficiently access global data, run bigger models, and simulate larger systems, resulting in a better understanding of the data and processes being evaluated. Integrating Python with GA allows programmers to more easily customize the GA Toolkit when they need shared memory for a distributed memory computers, improving and expanding researchers' ability to access the necessary data.

The Python bindings for GA were developed using the Cython language, which makes writing C extensions for the Python language as easy as using Python itself.  The GA Python bindings provide the programmer with access to local memory or copies of remote memory as NumPy arrays, allowing full use of the rich NumPy application programming interface (API) to extend the functionality of Global Arrays beyond previous capabilities.  This combination of GA and NumPy was then used to create a distributed, work-alike replacement of the NumPy module.

By integrating Python with GA, programmers are provided with a more convenient globally-shared view of multi-dimensional arrays while retaining the option to use the Message Passing Interface (MPI) if needed.  Using GA with Python is significantly simpler than MPI for many applications, as well as having the capability for expansion and scalability.  Using GA with Python is now simpler than ever, providing a work-alike replacement for Python's NumPy module, the de facto standard for numerical computing in Python. The new Python module, Global Arrays in NumPy (GAiN), allows the development and debugging of serial NumPy codes which can later scale on more capable clusters or supercomputers - often by changing only one line of Python code.

The GA tutorial and related paper presentation at this year's Python for Scientific Computing Conference (SciPy) generated enough buzz that SciPy's institutional sponsor, Enthought Inc., is considering incorporating GA and GAiN into its distribution.  PNNL is pursuing funding opportunities and looking to expand our user base.

Explore further: Researchers reverse-engineering China's online censorship methods reveal government's deepest concerns

More information: Daily JA, and RR Lewis.  2011.  "Using the Global Arrays Toolkit to Reimplement NumPy for Distributed Computation." In SciPy 2011. PNNL-SA-80943, Pacific Northwest National Laboratory, Richland, WA. www.archive.org/details/Wednes… oReimplementNumpyFor

Daily JA, et al..  2011. "High Performance Computing in Python using NumPy and the Global Arrays Toolkit." Presented by Jeff Daily at SciPy 2011, Austin, TX on July 12, 2011.  PNNL-SA-81329. conference.scipy.org/scipy2011/tutorials.php#jeff

Daily JA, et al. 2011. "Overview of the Global Arrays Parallel Software Development Toolkit." PyCon 2011.

Daily JA, et al. 2011. "PyCon 2011 Lightning Talk: The Global Arrays Parallel Programming Toolkit." PyCon 2011.

Related Stories

'Vicious' Giant Python Invading Florida

Sep 21, 2009

(PhysOrg.com) -- New studies suggest a 20 foot snake, the African rock python, is making its home in Florida and could soon invade the Everglades National Park.

Picture-driven computing (w/ Video)

Jan 20, 2010

Until the 1980s, using a computer program meant memorizing a lot of commands and typing them in a line at a time, only to get lines of text back. The graphical user interface, or GUI, changed that. By representing ...

Google Go gets going (w/ Video)

Nov 11, 2009

(PhysOrg.com) -- Google has introduced its new experimental programming language Go, which aims to combine speedy application development through simplified coding with high-speed program execution.

Python shrine found in Botswana

Dec 04, 2006

A Norway-based archaeologist has found a cave in Botswana that appears to be a 70,000-year-old religious shrine.

Recommended for you

Enabling a new future for cloud computing

Aug 21, 2014

The National Science Foundation (NSF) today announced two $10 million projects to create cloud computing testbeds—to be called "Chameleon" and "CloudLab"—that will enable the academic research community ...

Hacking Gmail with 92 percent success

Aug 21, 2014

(Phys.org) —A team of researchers, including an assistant professor at the University of California, Riverside Bourns College of Engineering, have identified a weakness believed to exist in Android, Windows ...

User comments : 1

Adjust slider to filter visible comments by rank

Display comments: newest first

gmurphy
5 / 5 (1) Sep 27, 2011
Personally, if I could, I'd code in Python exclusively. Performance is abysmal unfortunately and is only tolerable for scripting applications. "C plus plus" makes up the remainder which is much more unforgiving to draw up solutions in but is blazingly fast. The real problem with "C plus plus" is the way the standard libraries have been swamped with template code, so minor innocuous errors can cause several pages of compiler errors. It's a serious design flaw (btw, formatting rules seem to be preventing me from writing the plus symbol in this post)