Reviewed-on: Rubydragon/MetagraphOptimization.jl#25 Co-authored-by: Anton Reinhard <anton.reinhard@proton.me> Co-committed-by: Anton Reinhard <anton.reinhard@proton.me>
130 lines
3.2 KiB
Plaintext
130 lines
3.2 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"12"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"using MetagraphOptimization\n",
|
|
"using BenchmarkTools\n",
|
|
"\n",
|
|
"Threads.nthreads()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"Graph:\n",
|
|
" Nodes: Total: 131069, DataTask: 65539, ComputeTaskQED_Sum: 1, \n",
|
|
" ComputeTaskQED_V: 35280, ComputeTaskQED_S2: 5040, ComputeTaskQED_U: 9, \n",
|
|
" ComputeTaskQED_S1: 25200\n",
|
|
" Edges: 176419\n",
|
|
" Total Compute Effort: 549370.0\n",
|
|
" Total Data Transfer: 1.0645344e7\n",
|
|
" Total Compute Intensity: 0.05160659909158408\n"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"machine = get_machine_info()\n",
|
|
"model = QEDModel()\n",
|
|
"process = parse_process(\"ke->kkkkkke\", model)\n",
|
|
"\n",
|
|
"inputs = [gen_process_input(process) for _ in 1:1e3];\n",
|
|
"graph = gen_graph(process)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"Graph:\n",
|
|
" Nodes: Total: 14783, DataTask: 7396, ComputeTaskQED_Sum: 1, \n",
|
|
" ComputeTaskQED_V: 1819, ComputeTaskQED_S2: 5040, ComputeTaskQED_U: 9, \n",
|
|
" ComputeTaskQED_S1: 518\n",
|
|
" Edges: 26672\n",
|
|
" Total Compute Effort: 77102.0\n",
|
|
" Total Data Transfer: 5.063616e6\n",
|
|
" Total Compute Intensity: 0.015226668056977465\n"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"optimizer = ReductionOptimizer()\n",
|
|
"\n",
|
|
"optimize_to_fixpoint!(optimizer, graph)\n",
|
|
"graph"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Calculated 15537.0 results/s, 1295.0 results/s per thread for QED Process: 'ke->kkkkkke' (12 threads)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"compute_compton_reduced = get_compute_function(graph, process, machine)\n",
|
|
"outputs = [zero(ComplexF64) for _ in 1:1e6]\n",
|
|
"\n",
|
|
"bench_result = @benchmark begin\n",
|
|
" Threads.@threads :static for i in eachindex(inputs)\n",
|
|
" outputs[i] = compute_compton_reduced(inputs[i])\n",
|
|
" end\n",
|
|
"end\n",
|
|
"\n",
|
|
"rate = length(inputs) / (mean(bench_result.times) / 1.0e9)\n",
|
|
"rate_per_thread = rate / Threads.nthreads()\n",
|
|
"println(\"Calculated $(round(rate)) results/s, $(round(rate_per_thread)) results/s per thread for $(process) ($(Threads.nthreads()) threads)\")"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Julia 1.9.4",
|
|
"language": "julia",
|
|
"name": "julia-1.9"
|
|
},
|
|
"language_info": {
|
|
"file_extension": ".jl",
|
|
"mimetype": "application/julia",
|
|
"name": "julia",
|
|
"version": "1.9.4"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 4
|
|
}
|