Skip to content

Instantly share code, notes, and snippets.

View haampie's full-sized avatar

Harmen Stoppels haampie

View GitHub Profile
@haampie
haampie / test.py
Last active July 25, 2023 22:52
test.py
$ python test.py 20 https://mirror.spack.io/_source-cache/archive/00/0081ee4c4242e635a8113b32f655910ada057c59043f29af4b613508a762f3ac.tar.gz
Fetching mirror.spack.io/_source-cache/archive/00/0081ee4c4242e635a8113b32f655910ada057c59043f29af4b613508a762f3ac.tar.gz 20 times
http client 13.58 ms/request 1.48 MB/s
urllib 48.35 ms/request 0.42 MB/s
@haampie
haampie / waterfall-gitlab.sh
Last active July 18, 2023 21:40
waterfall-gitlab.sh
#!/bin/sh
pipeline="$1"
[ -z "$pipeline" ] && echo "Usage: $0 <pipeline-id>" && exit 1
project=2
url="https://gitlab.spack.io/api/v4/projects/$project"
# Get the bridges, shouldn't be paginated
@haampie
haampie / Dockerfile
Last active January 4, 2023 17:11
Docker build with cache
FROM alpine
WORKDIR /root
ENV PATH="/root/spack/bin:$PATH" SPACK_COLOR=always
# Setup spack and its deps
RUN apk add gcc g++ gfortran make file tar curl python3 patch unzip gnupg git xz python3-dev py3-pip linux-headers && \
pip install clingo
@haampie
haampie / Makefile
Created January 25, 2022 23:53
runtime linker
all: exef1 exef2 exef3
EI_OSABI:=7
EI_ABIVERSION:=8
EI_PAD:=9
libf1.so:
echo 'int f(){ return 1; }' | $(CC) -o $@ -shared -Wl,-soname,$@ -x c -
printf '\x0B' | dd of=$@ bs=1 seek=$(EI_OSABI) count=1 conv=notrunc status=none
@haampie
haampie / hack-spack-wrapper.diff
Last active April 16, 2021 15:48
Spack force release mode
diff --git a/lib/spack/env/cc b/lib/spack/env/cc
index 4d8c4644cb..3c4dcb35a7 100755
--- a/lib/spack/env/cc
+++ b/lib/spack/env/cc
@@ -384,6 +384,13 @@ while [ $# -ne 0 ]; do
other_args+=("$1")
fi
;;
+ -O0,-O1,-O2,-O3,-Os,-Ofast,-O)
+ # Always use -O3
@haampie
haampie / harmen_5x8.s
Last active February 1, 2021 23:19
Tiny Transpose {5,6,7,8} x 8
vmovups ymm0, ymmword ptr [rsi]
vmovups ymm1, ymmword ptr [rsi + 32]
vmovups ymm2, ymmword ptr [rsi + 64]
vmovups ymm6, ymmword ptr [rsi + 96]
vmovups ymm7, ymmword ptr [rsi + 128]
movabs rcx, offset .rodata.cst32
mov rax, rdi
vmovaps ymm10, ymmword ptr [rcx]
vperm2f128 ymm3, ymm0, ymm1, 33 # ymm3 = ymm0[2,3],ymm1[0,1]
vperm2f128 ymm5, ymm1, ymm2, 33 # ymm5 = ymm1[2,3],ymm2[0,1]
@haampie
haampie / julia.jl
Created July 30, 2020 13:43
expression templates
using LinearAlgebra, LoopVectorization
function error_norm(u::AbstractArray{T}, v::AbstractArray{T}) where T
result = T(0)
@avx for i = eachindex(u)
result += (u[i] - v[i])^2
end
return sqrt(result)
@haampie
haampie / fast_transpose.jl
Last active May 23, 2020 10:04
fast_transpose.jl
using SIMDPirates
canonicalize(A) = A
canonicalize(A::Union{<:SubArray}) = canonicalize(parent(A))
function version_1!(B::AbstractMatrix{Float64}, A::AbstractMatrix{Float64})
m, n = size(A)
Ac = canonicalize(A)
@haampie
haampie / _tri_to_diag_2.jl
Last active May 11, 2020 23:11
tri_to_diag_2.jl
using LinearAlgebra: givensAlgorithm, SymTridiagonal, I, Diagonal
using Base: @propagate_inbounds
import LinearAlgebra: lmul!, rmul!
import Base: Matrix
@propagate_inbounds is_offdiagonal_small(H::SymTridiagonal{T}, i::Int, tol = eps(real(T))) where {T} =
abs(H.ev[i]) ≤ tol*(abs(H.dv[i]) + abs(H.dv[i+1]))
abstract type SmallRotation end
@haampie
haampie / tri_to_diag.jl
Last active May 11, 2020 22:47
tri_to_diag.jl
using LinearAlgebra: givensAlgorithm, SymTridiagonal, I, Diagonal
using Base: @propagate_inbounds
import LinearAlgebra: lmul!, rmul!
import Base: Matrix
@propagate_inbounds is_offdiagonal_small(H::SymTridiagonal{T}, i::Int, tol = eps(real(T))) where {T} =
abs(H.ev[i]) ≤ tol*(abs(H.dv[i]) + abs(H.dv[i+1]))
abstract type SmallRotation end