import os
import timeit
import numpy as np
from datetime import datetime
import time

# Timestamp that will be put in the file name
timestamp = datetime.now().strftime("%H%M%S%f")

# Get the environment variable for threads
threads = os.getenv('OMP_NUM_THREADS')

# A relatively large matrix to work on
n = 5_000
x = np.random.random(size=(n, n))

print(f"We are executed with OMP_NUM_THREADS={threads} for {n=}")

# Measure the time required for matrix multiplication
start_time = time.time()
y = x @ x  # The heavy compute
elapsed_time = time.time() - start_time

print(f'Time used for matrix multiplication: {elapsed_time:.2f} s')

# Check if timings folder exists
if not os.path.isdir('timings/'): os.mkdir('timings')

# IO: Save the timing to a unique txt file
with open(f'timings/{threads}_threads_t{timestamp}.txt', 'w') as file:
    file.write(f'{threads},{elapsed_time:.6f}')
