OpenCLをVisualStudio2017で使う (Intel SDK)

AI的な文脈でOpenCLに興味を持ったので、最近OpenCL in Actionという本を読んでいる。OpenCLとはなんぞやという全体像をきちんと掴みたくて読み始めた。

とはいえ、450ページもあって読んでいるうちにたまに眠くなるので、少しは手を動かしたほうがいいと思って、とりあえずVisual Studio2017でOpenCLを試してみることにした。

今使っているWindowsマシンはSurface Pro4。デバイスマネージャを見ると、GPUはIntelのHD Graphic520だったので、IntelのOpenCL SDKを下記からダウンロードしてインストールした。
https://software.intel.com/en-us/intel-opencl/download

SDKを入れてVisual Studioを立ち上げると見慣れないメニューが追加されている。Core-Builder。そこからPlatform Infoを選ぶと、下記のようにデバイスの一覧が取得できる。

ss-vs2017-01

さらに、デバイスを選択してプロパティを表示すると下記のように各種情報が確認できる。
ss-vs2017-02

次に、APIがきちんとインストールされていることを確認するために、Intelのこちらのページからサンプルプログラムをダウンロードして、Visual Studioでビルドする。使用するプログラムは主にclGetDeviceInfoを使用してさっきプロパティで表示されたような内容を取得するものでOpenCL1.2 samples for WindowsからPlatform/Device Capabilities Viewer Sampleというもの。

ちなみに、Visual Studio2017用のソリューションファイルが提供されていないので2015のものを使用した。2015版から2017版へビルド周りの設定をコンバートするように促されるので変換して使用する。ビルドが成功すれば、APIが問題なくインストールされているということ。

このサンプルプログラムをVisual Studioのビルドから実行すると出力が流れてDOS窓が消えて何もわからないけれど、コマンドラインから実行するとclGetDeviceInfoで取得されたGPUの各情報を確認できる。


CL_DEVICE_TYPE_GPU[0]
CL_DEVICE_NAME: Intel(R) HD Graphics 520
CL_DEVICE_AVAILABLE: 1
CL_DEVICE_VENDOR: Intel(R) Corporation
CL_DEVICE_PROFILE: FULL_PROFILE
CL_DEVICE_VERSION: OpenCL 2.0
CL_DRIVER_VERSION: 21.20.16.4627
CL_DEVICE_OPENCL_C_VERSION: OpenCL C 2.0
CL_DEVICE_MAX_COMPUTE_UNITS: 24
CL_DEVICE_MAX_CLOCK_FREQUENCY: 1000
CL_DEVICE_MAX_WORK_GROUP_SIZE: 256
CL_DEVICE_ADDRESS_BITS: 32
CL_DEVICE_MEM_BASE_ADDR_ALIGN: 1024
CL_DEVICE_MAX_MEM_ALLOC_SIZE: 1561123226
CL_DEVICE_GLOBAL_MEM_SIZE: 1561123226
CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE: 1561123226
CL_DEVICE_GLOBAL_MEM_CACHE_SIZE: 524288
CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE: 64
CL_DEVICE_LOCAL_MEM_SIZE: 65536
CL_DEVICE_PROFILING_TIMER_RESOLUTION: 83
CL_DEVICE_IMAGE_SUPPORT: 1
CL_DEVICE_ERROR_CORRECTION_SUPPORT: 0
CL_DEVICE_HOST_UNIFIED_MEMORY: 1
CL_DEVICE_EXTENSIONS: cl_intel_accelerator cl_intel_advanced_motion_estimation cl_intel_d3d11_nv12_media_sharing cl_intel_driver_diagnostics cl_intel_dx9_media_sharing cl_intel_motion_estimation cl_intel_packed_yuv cl_intel_required_subgroup_size cl_intel_simultaneous_sharing cl_intel_subgroups cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_d3d10_sharing cl_khr_d3d11_sharing cl_khr_depth_images cl_khr_dx9_media_sharing cl_khr_fp16 cl_khr_fp64 cl_khr_gl_depth_images cl_khr_gl_event cl_khr_gl_msaa_sharing cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_gl_sharing cl_khr_icd cl_khr_image2d_from_buffer cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_mipmap_image cl_khr_mipmap_image_writes cl_khr_spir cl_khr_subgroups
CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT: 4
CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG: 1
CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT: 1
CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE: 1
CL_DEVICE_NATIVE_VECTOR_WIDTH_INT: 4
CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG: 1
CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT: 1
CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE: 1

iTunesでApple IDの確認コードを入力する方法

とんでもなく久しぶりにブログを更新してます。Twitterでは平常運転だったので、本人的には普通にネット社会に生きていたつもりで。いずれにしても、久々にApple関連ネタですごく苦労したことがあったのでメモしておきます。ググってもサクッと日本で解決策が出てこなかったので、きっと誰かのお役に立てるだろうと。

iOS11へのアップデート以来、手持ちの端末のいずれかでも2ファクタ認証に切り替えると、同じApple IDに紐つけられた端末すべてが強制的に2ファクタ認証でしかログインしなくてはならなくなりました。

同じ Apple ID で複数の iOS 端末を利用している場合、どれか 1 台でも iOS 11 にアップデートすると 2 ファクタ認証に切り替わってしまうようですので、2 ファクタ認証の利用が難しい iOS 8 以前しか使えない端末(例えば、iPhone 4 等)をご利用中の場合は、少し注意が必要です。

http://gootara.org/library/2017/06/ios-11apple-id22.html

さて、それで母艦Macも同じくして2ファクタになったわけですが、iTunesでの確認コードの入力方法が何度やってもわからなかった。まぁ、iTunesやOSのバージョンが古いからだろうと色々とアップデートしたものの、それでもわからない。パスワードを入れた後、もう一度下記のポップアップ画面が出てきて、「パスワードを入れたら6桁入力のポップアップが出るんだな」と思い再度パスワードを入れる。そうすると、パスワードが違うと言われる。なんだこれは。

スクリーンショット 2017-10-22 午後7.42.50

で、しばらくググったところ英語版のAppleのフォーラムで見つけた回答。

Turns out I missed something (which you all probably already knew). In some cases, you actually enter in the password field (your password)(verification code)
Solved

https://discussions.apple.com/thread/7565253?start=0&tstart=0

そうです。上記のポップアップで入力すべきは、右側のパスワード入力欄にあなたのパスワードと6桁の確認コードを入れなさいということ。パスワードがhogehogefoobarで、送られてきた確認コードが012345ならば、パスワード入力欄に入れるべき文字列は「hogehogefooba012345」になる。

なんか前もハマった気がする。いや初めてだっただろうか。そんなことはどうでもいい。なんでiTunesだけUIを変えるんだ!スティーブが生きて(以下略

以上、皆様のお役に立てれば幸いです。

目標を持たず「楽に生きる」

みなさん、明けましておめでとうございます。2013年はとにかく忙しく過ごしてきました。多分あとから身体にガタが来るだろうなぁと感じるほどです。仕込んだことの結果は2014年に順次出てくることになるけど、いずれにしても仕事の話なのでココに書くことはできないので、激務の中でぶれなかった人生観を語ってみようと思います。

ちなみに、久々にブログを書こうと思ったのは、こちらのエントリに刺激を受けたから。
誤解されやすいけれども実は本質的な、「目標をもたない」という生き方|Lifehacking.jp

楽に生きる

ブコメにも書きましたが、僕は3年くらい目標らしい目標を自分に課さずに過ごしてきました。それはなぜかというと「楽に生きたい」からです。20代の頃、仕事でつぶれる、苦い経験をしました。ほんとうに長いトンネルのなかを光もないまま過ごしているようでした。どうやったらこんなに苦しまずに生きられるんだろうかと考えて至りついたのが座右の銘「楽に生きる」。これに従って目標は持たないようにしています。
続きを読む