2018年3月26日月曜日

octaveのfft

配列の長さで規格化されている。
キチンと書いてあるドキュメントがなかったのでここに記す。

(FFTWの結果を配列の長さ、二次元ならnx * ny、で割る)

2018年3月16日金曜日

openmp offloading のメモ

llvm clangがgpuのoffloadingに対応してるっぽいので確かめている。
上手く行ってないけど。
テスト用のコードをメモ。
#include<stdlib.h>
#include<stdio.h>
#include<omp.h>

int main(){

   int i;
   int N=100000;
   float *vec;
   float sum=0.0;

   int isDevInit = -1;
#pragma omp target map(from:isDevInit)
{
   isDevInit = omp_is_initial_device();
}

if (!isDevInit) {
   printf("run on acc. %d\n",isDevInit);
}

   vec=(float *)malloc(sizeof(float)*N);
   for(i=0;i<N;i++){
      vec[i] = (float)i;
   }
#pragma omp target map(to:vec) map(tofrom:sum)
{
   fprintf(stdout,"num dev %d\n",omp_get_num_devices());
#pragma omp parallel for reduction(+:sum)
   for(i=0;i<N;i++){
      sum += vec[i];
   }
}
   fprintf(stdout,"sum: %e\n",sum);

   free(vec);

}

2018年3月15日木曜日

flang 4.0 (メモ)

https://github.com/flang-compiler/flang/blob/master/README.md
で特に問題ない。

https://libcxx.llvm.org/docs/BuildingLibcxx.html
libc++, libc++abiも一緒にコンパイルしているのでclangインストール後は
setenv CXX "clang++ -stdlib=libc++"
してlibc++を使わないとopenmpがコンパイルできない