読者です 読者をやめる 読者になる 読者になる

koturnの日記

転職したい社会人1年生の技術系日記

OpenCLのオフラインコンパイル

はじめに OpenCLといえば,カーネルのコードに以下の2つのコンパイル方式がある. オンラインコンパイル オフラインコンパイル オンラインコンパイルは,実行時にOpenCLのカーネルコードを文字列として関数に渡し,プログラムオブジェクトを構築する手法であ…

MSYS2でOpenCLを使う

はじめに MSYS2でOpenCLのプログラムをコンパイル&実行したかった. pacmanでOpenCL関連のヘッダを導入することはできるが,OpenCLのインポートライブラリは導入することはできない. ここでは,MSYS2でOpenCLの環境を導入する一連の手順を紹介する. OpenCL…

std::vectorなどでアラインされた領域を用いる

はじめに 前回の記事でCPU SIMD命令(SSE/AVX/NEON)を紹介した. ただ,前回の記事では静的配列や単純な動的確保のパターンでしかアラインされた領域を用いる手法しか紹介しなかった. 今回は,C++でよく用いられるであろう std::vector でアラインされた領…

AVXとAVX-512のインタリーブ

C++

はじめに 前回の記事では,Intel系のCPUとARM系のCPUのSIMD命令紹介した. 記事中のサンプルコードで,画像の2倍の拡大を行うコードがあり,その中でインタリーブを行っていた. SSEであれば,単純にunpack命令を実行するだけでよかった. 簡単なサンプルコ…

SIMDの組み込み関数のことはじめ

はじめに 現代のCPUではSIMD(Single Instruction Multiple Data)命令を利用することができる. SIMD命令とはその名の通り,ひとつの命令で複数のデータを処理するものである. Intel系のCPUでは,MMX/SSE/AVX/AVX-512といったSIMD命令が利用可能であり,ARM …

CodeIQのスクエア・カルテット問題を解いた

はじめに CodeIQで@riverplus氏による「 スクエア・カルテット」問題 という,初等整数論を絡めた面白いプログラミングの問題があったので,それについての記事を書いた. 高校生の数学を思い出す良い問題であり,楽しかった. 問題 2つの自然数の組 $(a, b)…