generate.py 1.52 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import sympy as sp
import numpy as np
from pystencils import Field, Assignment, create_kernel


def meassure():
    size = [30, 50, 3]
    arr = np.zeros(size)
    a = Field.create_from_numpy_array('a', arr, index_dimensions=1)
    b = Field.create_from_numpy_array('b', arr, index_dimensions=1)
    s = sp.Symbol("s")
    rhs = a[0, -1](0) + a[0, 1] + a[-1, 0] + a[1, 0]
    updateRule = Assignment(b[0, 0], s * rhs)
    print(updateRule)

    ast = create_kernel([updateRule])

    # benchmark = generate_benchmark(ast)
    # main = benchmark[0]
    # kernel = benchmark[1]
    # with open('src/main.cpp', 'w') as file:
    #     file.write(main)
    # with open('src/kernel.cpp', 'w') as file:
    #     file.write(kernel)

    func = ast.compile({'omega': 2/3})

    from pystencils.kerncraft_coupling.generate_benchmark import generate_benchmark
    from pystencils.kerncraft_coupling import BenchmarkAnalysis
    from pystencils.kerncraft_coupling.kerncraft_interface import PyStencilsKerncraftKernel, KerncraftParameters
    from kerncraft.machinemodel import MachineModel
    from kerncraft.models import ECMData


    machineFilePath = "../pystencils_tests/kerncraft_inputs/default_machine_file.yaml"
    machine = MachineModel(path_to_yaml=machineFilePath)


    benchmark = BenchmarkAnalysis(ast, machine)
    #TODO what do i want to do with benchmark?

    kernel = PyStencilsKerncraftKernel(ast)
    model = ECMData(kernel, machine, KerncraftParameters())
    model.analyze()
    model.report()


if __name__ == "__main__":
    meassure()