1 Position I: Python on OMR
===========================
The candidate will explore the benefits and challenges of using OMR
[1] components (e.g. JIT, GC) in Python [2,3] runtimes. This may
involve extending OMR in novel ways to better support Python, or
vice-versa. If questions like how to balance fast startup time for
scripting applications against good performance for compute-intensive
workloads sound interesting, this might an opportunity for you.
2 Position II: Python and …
[View More]PGAS
==============================
The candidate will implement support for parallel programming with
Python, using the PGAS [4] (parallel global address space) model. The
PGAS model can significantly simplify the implementation of parallel
algorithms on distributed and shared memory computers. Challenges
include enabling parallelism while dealing with Python's Global
Interpreter Lock (GIL), and implementing distributed garbage
collection efficiently.
3 Qualifications
================
Normally applicants to the Computer Science PhD program at UNB require
a Master's degree in computer science or a closely related area. This
project will require substantial hands-on and experimental work, and
being comfortable with Python and C++. Familiarity with Linux and
Open Source Software development would be a plus. For position I,
exposure to programming language concepts like GC, JIT, and bytecode
would be helpful. For position II, experience with parallel
programming frameworks and/or languages such as MPI, OpenMP, X10 is an
asset.
4 Environment
=============
This project is supported by the IBM Centre for Advanced Studies
(Atlantic) at the University of New Brunswick [5]. We have a lively
group of students, postdocs, and research assistants working on
related problems. Students work closely with both UNB researchers and
technical experts from IBM, gaining valuable perspective and
experience.
5 Support
=========
These positions are "fully funded"; the exact funding package is
subject to finalization but will be consistent with other fully funded
students in Computer Science at UNB. You can find some information
about expenses on the UNB web site [6].
6 Contact
=========
Send your resumé and unofficial transcripts by email to
Stephen MacKay <smackay3(a)unb.ca>
Please specify which position(s) you are interested in.
[1]: [http://www.eclipse.org/omr/]
[2]: [http://www.python.org]
[3]: [http://www.pypy.org]
[4]: [http://www.pgas.org/]
[5]: [http://www.unb.ca/research/casatlantic/]
[6]:
[http://www.unb.ca/fredericton/studentservices/international/new_internation…]
[View Less]
I have a strange error, I'm generating code for a RPython program and get
this error:
[translation:ERROR] AttributeError: 'FrozenDesc' object has no attribute
'pycall'
Processing block:
block@9[fn_0...] is a <class 'rpython.flowspace.flowcontext.SpamBlock'>
in (?:10)make_thunk
containing the following operations:
v2 = simple_call((type Thunk_thunk10_), fn_0, args_0)
And I'm generating it thusly:
thunk_template = """
class Thunk_{sym}(ThunkBase):
def __init__(self, fn, args)…
[View More]:
self._{sym}_fn = fn
self._{sym}_args = args
def run_thunk(self):
return self._{sym}_fn(*self._{sym}_args)
def make_thunk(fn, args):
return Thunk_{sym}(fn, args)
"""
def make_thunk():
gbls = dict(ThunkBase=ThunkBase, object=object)
sym = gen_sym.get_sym("thunk")
code = thunk_template.format(sym=sym)
exec(code, gbls)
cls = gbls["make_thunk"]
return cls
It's as if RPython isn't recognizing that the type is callable.
Any thoughts?
Thanks,
Timothy
[View Less]