2018年2月12日月曜日

オゾン層と紫外線

一時期、気候や気象の研究者の一部があおりまくったせいで、多くの人たちが間違えた認識をしてしまっているのが、温室効果とか紫外線の増加とかの話。未だに気象予報士も間違えて認識している人が多い。冬が寒いと温暖化のせいで、夏が暑いと温暖化のせいでとか。
先日サングラスが壊れてしまって、新調しようかなと思った時にふと、紫外線で起きるのは白内障だっけかなと調べた。すると、オゾン層の破壊で紫外線がーという下りをある大きな病院のサイトに描かれてあった。一時期この話はよくメディアで取り上げられていたからさもありなん。
しかしながら、この話は後があって、世界中の人たちが物理学者の警鐘に大慌てで対応し、原因であるフロンを使わないようにして努力した結果、フロン濃度は多少減少し、オゾンも増加傾向に転じているのである。
一方、紫外線の強度は気象庁によると、年度毎に大きく変動はあるけれども、増大傾向にある。こうなると、紫外線の強さの原因はオゾン層だけではなく、同等の影響を及ぼすものがあることが予想される。エアロゾルとか雲とかいろいろ考えられるわけだ。定性的には誰でも分かるが、これを定量的に評価してやらなければならない。気象、もしくは気候やさんの出番だ。
温暖化にしても100年で数度平均気温が上がるというレベルで年換算なら100分の数度だと言われているのに、今年は暑い、温暖化のせいで、なんていってるヤツが未だにテレビの中にいるのは本当にどうかと思うよ。

2018年2月5日月曜日

CUDAで開発:XCode/CMake/CUDA

CUDAは主にUbuntu上で8.0ベースで開発している。でもメインはiMac/Marverickなので、時々XCode・CUDA7.5でやっている。下手なKernel関数を走らせるとシステムダウンするので怖い。
XCodeのデバッグ環境は使いやすいので、使いたいのだが、Kernel関数に別ファイルで定義されているクラスを使ったところ、
 ptxas fatal : Unresolved extern function '_ZN15WorldControllerC1Ev'
とでてしまった。ぐぐってみるとこれは相対形式で.cuをコンパイルするためには、-dcオプションを使わないといけないらしい。そこで、ccmakeをつかって、その中の
 CUDA_NVCC_FLAGS
に、-dcをいれてみた。すると今度は、
  more than one compilation phase specified
と、またエラーになってしまった。そこで再び調査したところ、CMakeLists.txtに、
 SET(CUDA_SEPARABLE_COMPILATION ON) 
を追加してみたところ、うまくいった。
手書きでオプション全部つけてやればうまくいくのだが、cmakeの便利さは手放せない。でも時々こういったデフォルト以外の事をしようとすると、やもするとなかなか独力では解決しない。ほんとにグーグルさんは力になってくれるので感謝。いや、貴重な情報を描いてくれた人へこそ感謝、だな。
この後、リンク時にエラーが出た。
 Unable to open output file '/Volumes/.../EXE_intermediate_link.o': 'Error opening output file 
これは、Releaseとか、Debugとかの名前のフォルダーが存在しないため起きる。CMakeが提供するスクリプトではフォルダを自動的に作成してくれないらしい。しょうが無いので自分でフォルダを作成してオーケー。