2020-01-01から1年間の記事一覧

__constant__ で宣言した変数はホスト側で参照できない【CUDA】

試した環境 Microsoft Visual Studio Community 2019 Version 16.8.3 NVIDIA CUDA 11.0 本題 __constant__ で宣言した変数はデバイス側の変数ですが、ホスト側で使用するグローバル変数のような初期化の書き方ができます。 だからと言ってホスト側で直接参照…

Visual Studio の CUDA 11.0 Runtime プロジェクトのデフォルトソースコード実行時に addWithCuda failed! と出るときは Code Generation の値を確認する

試した環境 Microsoft Visual Studio Community 2019 Version 16.8.3 NVIDIA CUDA 11.0 GeForce GTX 750 本題 Visual Studio の CUDA 11.0 Runtime プロジェクトのデフォルトソースコードで、ビルドは通ったものの実行時に以下のメッセージが表示されました…

GLM の vec 系の変数で GLSL の .xyz みたいな指定方法(swizzle)をできるようにする

C++

試した環境 glm 9.9.7 Microsoft Visual Studio Community 2019 Version 16.4.5 本題 vector.xyzwのようなドット演算子の後に指定したい要素を順に並べる表現方法を swizzle または Swizzling と呼ぶそうです。 この swizzle 表現は GLSL ではデフォルトでで…

2つの動画をクロスフェードした動画を作るには FFmpeg の xfade フィルタを使う

試した環境 FFmpeg 4.3.1 本題 1番目の動画の終わりと2番目の動画の始めとを重ねてフェードしながら切り替わるつなぎ方をクロスフェードと言います。 AviUtl では以下のタイムライン画像のようにシーンチェンジフィルタの「クロスフェード」を使うことで実現…

令和2年度大学入試センター試験(追・再試験)を解いた

はじめに 去年もやりましたが、今年のセンター試験の追・再試験の問題を解きました。 問題は以下のページから取得ました。 過去3年分とあるので3年後には消えているかもしれません。 結果 解いた科目とその結果は以下の通りです。 英語筆記 163点 (200点中) …

new 演算子で確保した複数の変数を1つの delete 演算子とコンマでまとめて解放できない

C++

試した環境 Microsoft Visual Studio Community 2019 Version 16.4.5 本題 以下のコードのように new 演算子で確保した複数の変数を1つの delete 演算子とコンマ演算子でまとめて解放することは出来ません。 #include <iostream> int main(int argc, char* argv[]) { i</iostream>…

startコマンドで自分自身のバッチを呼び出す方法でサブルーチンを並列に呼び出す

bat

試した環境 Windows 10 本題 以下の処理ではforループ内で指定した回数(ここでは4回)だけサブルーチンを順次に呼び出しています。 サブルーチンは実際の処理の代わりにtimeoutコマンドを呼んでいます。 @echo off pushd %~dp0 for /l %%i in (0, 1, 3) do …

conda config で仮想環境の生成先ディレクトリとパッケージの保存先を変更する

試した環境 Windows 10 Miniconda3 py38_4.8.3 (Python 3.8.3 64-bit) 本題 conda を使用していると、仮想環境やパッケージのサイズが大きいので、Cドライブ以外にそれらを置きたいと思うことがあるかもしれません。 そのようなときは、conda configコマンド…

Python 公式版 と Miniconda を両方インストールした環境で "WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available." が発生することがある

試した環境 Windows 10 Python 3.8.5 (64-bit) Miniconda3 py38_4.8.3 (Python 3.8.3 64-bit) はじめに この記事ではpip installに失敗した問題とその解決方法を書きます。 なお、「Python 公式版」とは Python.org で配布されているバージョンのことを指し…

【GLSL】複数のシェーダソースから構成されるシェーダプログラム

試した環境 glsl 4.3 本題 汎用的な処理を使い回し易くするためにその処理だけ別のファイルにしたい等、1つのシェーダプログラムに対して複数のシェーダソースを利用したいときがあります。 複数のシェーダソースの利用について、OpenGL Wiki には以下のよう…

GLM や GLSL の正方行列はデフォルトコンストラクタで単位行列に初期化されない

試した環境 glm 0.9.9.7 glsl 4.3 本題 glm::mat4 などのGLMの正方行列はデフォルトコンストラクタで単位行列に初期化されません。 単位行列にしたい場合は、glm::mat4(1.f) と引数付きのコンストラクタを呼び出す必要があります。 以下は試したコードです。…

OpenGL Compute Shader を実行するだけのコード

試した環境 GLEW 2.1.0 GLFW 3.3.1 Microsoft Visual Studio Community 2019 Version 16.4.5 Windows 10 バージョン 1903 はじめに OpenGL の Compute Shader を実行するために必要な処理をまとめたコードを載せます。 最初にソースコード全体を載せ、そのあ…

GLSL の atan 関数は x=0 のとき未定義

試した環境 glsl4.30 本題 前回の記事で、球面座標系のφの変換を y の符号と acos を使って求めました。 それは日本語版 Wikipedia の球面座標系のページの記述を参考にしました。 ところで英語版 Wikipedia の Spherical coordinate system のページではφへ…

直交直線座標系から球面座標系への変換に、0を返す sign 関数は使用できない

試した環境 glsl4.30 本題 Wikipedia の球面座標系のページには直交直線座標 (x,y,z) から球面座標 (r,θ,φ) への変換式が載っています。 その中でφの変換式は以下のようになります。 φ = sgn(y) * acos(x / sqrt(x2 + z2)) ここで sgn は符号関数で、0以上で…

参照先が生きていてもポインタ変数自体がラムダ式より先に寿命が来る場合はそのポインタ変数を参照キャプチャしない方がいい【C++】

C++

試した環境 Microsoft Visual Studio Community 2019 Version 16.4.5 本題 最近私がやらかしたミスを書き残します。 #include <functional> #include <iostream> class MyCallee { public: MyCallee() : counter_(0) {} int countUp() { return ++counter_; } private: int counter</iostream></functional>…

処理が終わり次第閉じるコマンドプロンプトを立ち上げるコマンド

試した環境 Windows10 本題 コマンドプロンプトを立ち上げて処理を実行し、その処理が終わり次第コマンドプロンプトが閉じるといった動作を実現したいときには、 以下のコマンドでできます。 start cmd /c 実行したいコマンド 例えば以下のコマンドを実行す…

32bit整数型で扱える範囲より大きい値を扱うときは明示的に64bit整数型を指定する【C++】

C++

タイトルが当たり前ですが、つまりこういうことです。 以下に例を示します。 int main() { std::cout << "(NG) 4000^3 = " << 4000 * 4000 * 4000 << std::endl; std::cout << "(OK) 4000^3 = " << 4000LL * 4000 * 4000 << std::endl; } (NG) 4000^3 = -424…

令和2年度大学入試センター試験問題を解いた

昨日実施されたセンター試験1日目の問題を解きました。 2か月前に解いた結果は以下の記事です。 kakashibata.hatenablog.jp 問題 以下のページで公開されている問題と解答を利用させて頂きました。 センター試験2020 - 47NEWS(よんななニュース) ただし、…