2010年4月2日金曜日

JCudaで頓挫

CUDAをJavaから呼び出すライブラリのJCudaを使ってみようと試していますが、
cufftHandle plan = new cufftHandle();
int planRet = JCufft.cufftPlan1d(plan, size, cufftType.CUFFT_Z2Z, 1);
System.out.println("planRet: " + cufftResult.stringFor(planRes) + "(" + planRet + ")");
 で
planRet: CUFFT_INVALID_VALUE(4)
というエラーが戻ってきています。

ドキュメントだと、cufftPlan1dが出す値は以下の6種類。

Return Values
 ----
 CUFFT_SETUP_FAILED CUFFT library failed to initialize.
 CUFFT_INVALID_SIZE The nx parameter is not a supported size.
 CUFFT_INVALID_TYPE The type parameter is not supported.
 CUFFT_ALLOC_FAILED Allocation of GPU resources for the plan failed.
 CUFFT_SUCCESS      CUFFT successfully created the FFT plan.

 JCUFFT_INTERNAL_ERROR If an internal JCufft error occurred
CUFFT_INVALID_VALUEは出てこないはずなのに…
 ソースも読んでみましたが、
private static native int cufftPlan1dNative(cufftHandle plan, int nx, int type, int batch);
というところであきらめました。
CUDA のドキュメントを見てもcufftPlan1dはCUFFT_INVALID_VALUEは出さないみたいなので、この先を読んでいったところで泥沼っぽい…

何か面白そうな特許

  特許とかで怒られたら嫌なので、特許庁ホームページの初心者向け検索を使ってチョコチョコと特許をチェックしてみています。
といっても、どういうのがアウトでどういうのがセーフなのか全くわからないので、単純に興味本位でへーへー言いながら見てるだけなのですが。。。
(ぱっと見だと内容が同じに見えるのが複数あったりとかして基準がよく分からない…)

で、そういう中に、こういうのがありました。
ユーザの頭部の回転に応じて調整が必要になる処理を行う装置において、ユーザの頭部の回転を適切に検出して適切な調整を行えるようにする。
のだそうです。ほしい。
どうもリンクはうまくいかないので、気になる人は特許公開2010-56589で検索してみてください。