Skip to content

Instantly share code, notes, and snippets.

View kaityo256's full-sized avatar
🤖
I, Robot

Hiroshi Watanabe kaityo256

🤖
I, Robot
  • Keio University
  • Japan
View GitHub Profile
@kaityo256
kaityo256 / main.cpp
Created February 4, 2020 06:11
Intel Compiler vs. GCC
#include <random>
int main() {
std::mt19937 mt;
std::uniform_real_distribution<> ud(0.0, 1.0);
for (int j = 0; j <10000; j++) {
for (int i = 0; i < 10000; i++) {
if (i%2) ud(mt);
}
}
}
@kaityo256
kaityo256 / settings.json
Created October 2, 2019 03:24
VSCode用の日本語LaTeXコンパイル設定
{
"latex-workshop.latex.recipes": [
{
"name": "platex*2+dvipdfmx",
"tools": [
"platex",
"platex",
"dvipdfmx"
]
}
@kaityo256
kaityo256 / watanabe-chiba-report.md
Created July 8, 2019 02:22
富士通C++コンパイラの最適化機能の改善について

2.4 富士通C++コンパイラの最適化機能の改善について

東京大学物性研究所 物質設計評価施設
渡辺宙志
富士通株式会社 次世代テクニカルコンピューティング開発本部
千葉修一
@kaityo256
kaityo256 / load.rb
Last active June 26, 2019 14:59
Loading YAML in Slim
require "yaml"
class Paper
def initialize(h)
@h = h
@h.each_key do |key|
self.class.send(:define_method, key.to_sym) do
@h[key]
end
self.class.send(:define_method, ("has_"+key+"?").to_sym) do
@kaityo256
kaityo256 / dump.rb
Last active June 4, 2019 03:13
Constant folding and loop unrolling
n = ARGV[0].to_i
s = (1..n).to_a.map { |i| i.to_s }.join(",")
s = "{" + s + "}"
puts <<"EOS"
#include <cstdio>
const int N = #{n};
const int a[] = #{s};
int func(int b[N]) {
@kaityo256
kaityo256 / array3.cpp
Created June 4, 2019 02:51
Constant folding with array (local variable)
#include <cstdio>
int func(int b[4]) {
int a[] = {1, 2, 3, 4};
int sum = 0;
for (int i = 0; i < 4; i++) {
sum += a[i] * b[i];
}
return sum;
}
@kaityo256
kaityo256 / array1.cpp
Created June 4, 2019 01:34
Constant folding of array
#include <cstdio>
const int a[] = {1, 2, 3, 4};
int func(int b[4]) {
int sum = 0;
for (int i = 0; i < 4; i++) {
sum += a[i] * b[i];
}
return sum;
@kaityo256
kaityo256 / スパコンと円周率の話.md
Last active April 2, 2023 07:01
スパコンと円周率の話

スパコンと円周率の話

はじめに

2019年3月14日、Googleが円周率を31兆桁計算したと発表しました。このニュースを聞いて僕は「GoogleがノードまたぎFFTをやったのか!」と大変驚き、「円周率の計算には高度な技術が必要」みたいなことをつぶやきました。しかしその後、実際にはシングルノードで動作する円周率計算プログラム「y-cruncher」を無改造で使っていることを知り、「高度な技術が必要だとつぶやいたが、それは撤回」とつぶやきました。円周率の計算そのもののプログラムを開発していなかったとは言え、これだけマッシブにディスクアクセスのある計算を長時間安定実行するのは難しく、その意味においてこの挑戦は非自明なものだったのですが、まるでその運用技術のことまで否定したかのような書き方になってしまい、さらにそれが実際に計算を実行された方の目にもとまったようで、大変申し訳なく思っています。

このエントリでは、なぜ僕が「GoogleがノードまたぎFFT!?」と驚いたか、そんな話を書いてみたいと思います。

円周率の計算とスパコン

@kaityo256
kaityo256 / main.cpp
Created March 11, 2019 08:28
weak attribute
#include "test.hpp"
int main(){
}
@kaityo256
kaityo256 / test.cpp
Created March 4, 2019 11:00
Check mmapped arena
#include <cstdio>
#include <cstdlib>
#include <omp.h>
const int N = 128;
int main(void) {
char *buf[N];
#pragma omp parallel for
for (int i = 0; i < N; i++) {
buf[i] = (char *)malloc(128);
}