yohhoyの日記

技術的メモをしていきたい日記

2013-08-01から1ヶ月間の記事一覧

OpenMP 2.0とメモリモデルの闇

OpenMPが提供するロック獲得/解放omp_set_lock/omp_unset_lock関数と、OpenMPメモリモデルおよびflush指示文に関するメモ。一見問題がなさそうな下記コードは、OpenMP 2.0以前の仕様に従って厳密に解釈するとプログラマの期待通り動作する保証がない。この…

Cスタイルキャスト利用を警告

gcc(g++)において、古いCスタイルキャストが使われた場合に警告するオプション。 -Wold-style-cast (C++ and Objective-C++ only) Warn if an old-style (C-style) cast to a non-void type is used within a C++ program. The new-style casts ('dynamic_ca…

OpenMPとC++例外の危険な関係

OpenMP並列化領域内からC++例外を送出する場合、例外を送出したスレッドと同一スレッド上で例外catchを行う必要がある。すなわちOpenMPスレッドをまたぐC++例外伝搬は行われず、またOpenMP並列化領域の中から外へC++例外が送出されてはならない。このルール…

OpenMP 4.0仕様リリース

2013年7月 OpenMP 4.0仕様リリース記事 OpenMP 4.0 Specifications Released より抄訳。OpenMP 4.0 APIの新機能は下記を含みます:アクセラレータのサポート。さまざまな種類の計算デバイスをサポートするため、OpenMP 4.0 API仕様の取り組みにおいては全て…

hashCodeメソッドのお手軽実装

Java 7以降ではユーティリティクラスjava.util.Objectsが追加されており*1、ユーザ定義クラスのhashCodeメソッド実装に利用できるヘルパメソッドjava.util.Objects#hash(Object...)を提供する。 class X { private int m1; private String m2; private Objec…

const, mutableキーワードとスレッド安全性

C++

C++11標準ライブラリにおいて const, mutable キーワードが持つセマンティクスと、自作クラスのスレッド安全性に関するイディオムについてメモ。本記事の内容はC++ and Beyond 2012でのHerb Sutter氏プレゼン "You Don't Know const and mutable" に基づく。…