Python

pyopencl.arrayの使い方

PyOpenCLはPythonからOpenCLのAPIにアクセスするためのライブラリですが、それだけではなく素のOpenCLにはない機能もいくつか追加されています。pyopencl.arrayは、numpy.ndarrayライクのインタフェースでOpenCLのデバイスを意識することなく基本的な行列演…

OpenGL連携を有効にしつつpipからPyCUDA/PyOpenCLをインストールする

PyCUDA / PyOpenCLをソースからインストールする場合には、setup.pyを実行する前にconfigure.pyを実行します。configure.pyが何をしているかというと、以下のようなオプション情報を記述したsiteconf.pyというファイルを生成します。 BOOST_INC_DIR = [] BOO…

VimのPyOpenCL用シンタックスハイライト

PyOpenCLでプログラムを作るときには、以下のようにPythonプログラムの中にOpenCL C言語のプログラムを埋め込むことが多いですが、Pythonの文字列としか認識されないので埋め込まれたプログラムは見辛くなってしまいます。 prg = cl.Program(ctx, """ __kern…

PythonからOCamlにアクセスするための低レベルインターフェースを作ってる

Python Developers Festaに参加しました。OCamlでPythonの拡張モジュールを作っているという話をしていたら、何人かの人に興味を持ってもらって、色々と意見やアドバイスをいただきました。その時点ではPython/C APIとOCaml/C Interfaceの橋渡しをCで実装し…

PyOpenCLハンズオン報告

kyoto.py PythonハンズオンでPyOpenCLハンズオンのチューターを担当させていただきました。ハンズオン資料を公開しています。PyOpenCLとはOpenCLという並列計算フレームワークをPythonから扱うためのライブラリで、Andreas Klöckner氏らによって開発されてい…

Pyomoの紹介

Python京都勉強会で発表してきましたという報告とその補足です.関西ではPythonの勉強会はまだ多くはないのでいろいろ貴重でマニアックな話を聞くことができました.プログラムはこんな感じでした. 30分のセッション Python3(http://www.slideshare.net/na…

SL4A(Python)でQRコード作成

SL4Aで簡単なテキストなどをQRコード化する方法を紹介します.こちらのサイト(http://libpanda.s18.xrea.com/qrcode.html)でPythonでQRコードを作成する方法が解説されていますが,Android上ではPILを使ったりswfに出力したりするのは現実的ではありません…

google-apputilsって何者?

Operations Research関連のオープンソースソフトウェアを探していたら,2010年9月から始まってgooglerが中心となって開発しているようなor-toolsというプロジェクトを見つけました.or-toolsはswigを使ったPythonのライブラリになっていてサンプルコードも多…

Python Hack-a-thonで発表してきました + 発表の補足

Python Hack-a-thon 2011.02で「PyCUDAの紹介」という内容で発表をしました.発表資料はSlideShareにアップしています. http://www.slideshare.net/likr/pycuda 発表時間が短くなったこともあり,説明が雑だった部分も多かったと思うので,喋り足りなかった…

Cluster GPU InstanceにPyOpenCL環境とかも構築

Cluster GPU InstanceにPyCUDA環境を構築の続きで,PyOpenCLとGPU Computing SDK code samplesもインストールしましょう.まずはpipでPyOpenCLをインストールします. CPLUS_INCLUDE_PATH=/usr/local/cuda/include PATH=/opt/local/bin:$PATH pip install py…

Cluster GPU InstanceにPyCUDA環境を構築

Cluster GPU InstanceはOSがCent OS 5.5なのでPythonのバージョンが2.4です.このままではいろいろと不便なのでまずは最新のPython(2.7.1)をソースコードからインストールしましょう.URLやバージョンは執筆時点でのものですので,適当に読み替えてください…

zipしたのをenumerate

以前友達から教えてもらった。 l1 = [2,3,4] l2 = ['a', 'b', 'c'] for i,(n,c) in enumerate(zip(l1, l2)): print i,n,c

回文の判定(シーケンスをコピーして反転する)

文字列をスマートに反転するにはスライスを使うと良いと思う.リストにはreverseメソッドがあるので,インプレースでいいならそっちを使う.リストだが,元のインスタンスとは別に反転したものが必要ならlist(reversed(seq))などとするよりはスライスでseq[:…

平方数の無限リスト(っぽいもの)を作る

itertoolsモジュールのcountを使えば整数を無限に生成できる。countを使って例えば平方数を無限に生成しようとする。ビルトインのmapは有限のシーケンスに対してのみ動作するので、要素数に限りがないcountに適用することはできない。このような場合にはiter…

自動的に拡張される素数リストの実装

Pythonの素数ジェネレータの実装は結構有名なはず。ProjectEulerのために、ランダムアクセス可能で必要に応じて拡張される素数リストを、素数ジェネレータを利用して作成した。ジェネレータの実装は4 TopCoderより。 from itertools import ifilter from ite…

App Engine Helper for DjangoはModelFormが使えないといった問題があり,それらを改善したプロジェクトとしてapp-engine-patchが紹介されている.しかしapp-engine-patchも既に開発が止まっていてDjango-nonrelを使えとのこと.Django-nonrelを使えばApp En…

AppEngine Helper for DjangoでGoogleアカウントの認証を簡単にする

setting.pyで認証関係の設定を有効にする.以下の3カ所のコメントアウトを外します. MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', # 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.A…

PythonでMapReduceの真似事

MapReduceとはGoogleによって考案され,クラウドコンピューティングの要として注目されたアルゴリズムフレームワークです.Googleによる分散処理の実装自体をMapReduceと呼ぶことも少なくありませんが,アルゴリズムにおける分割統治法のように,並列コンピ…

multiprocessingでmap

Pythonのビルトイン関数であるmapは通常次のように使用されます. >>> def f(x): ... return x * x ... >>> map(f, range(10)) [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]多くの場合mapに渡す関数は副作用が少なく,map処理は並列可能性が高いと考えられます.Py…

Project Euler Problem 26 循環小数の循環節

循環小数の秘密というサイトによると,既約分数を少数になおしたものは次の3つに分類されます. 有限小数 純循環小数 混循環小数 これらは分母の値を素因数分解することで次のように区別できます. 素因数が2と5のみで構成されるならば,有限小数 素因数に2…

inputの落とし穴(SPOJ 11. Factorial)

今日のテーマはSPOJの11番Factorial.問題を要約すると,自然数が与えられて,その階乗の値の末尾に何個の0が続くかを求める問題.解法としては階乗の値を素因数分解したときに5がいくつ含まれているかを数えればいい.まずはシンプルに実装してみよう. #!/…

人材獲得作戦・4を解答してみた

物議を醸している下記の問題 人生を書き換える者すらいた。: 人材獲得作戦・4 試験問題ほか なかなかの良問だと思ったのでPythonで解答してみた.かかった時間は1時間ぐらい. #!/usr/bin/env python2.6 from __future__ import print_function import sys…

変数の入れ替え

Pythonはひとつの構文でいろいろなことを実現できるように設計されている気がします.ついさっき知ったそんな一例.変数の入れ替えを行っています. #!/usr/bin/env python2.6 a, b = 1, 2 print a, b a, b = b, a print a, b もちろん3個以上の変数を入れ替…

Pythonで漸化式

第n番目の素数の近似値を求める漸化式は次のように与えられます.この漸化式の第n項を求めるために,Pythonで漸化式の第n項を高速に求める実装を考えてみました.まず初めに検討したことはreduceで書くべきなのか,通常のループ構文で書くべきかということで…