-
Notifications
You must be signed in to change notification settings - Fork 14
Overlap
Questo input serve solo a far scattare la routine "measure_minmax_eigenvalues" dove fare i test.
Prima di lanciarla, copia la configurazione di test che sta in test/data/L4T8conf nella cartella dove si trova l'input, e chiamala conf
Geometry
T = 8
L = 4
Theory
Quark = "Up"
MeasMinMaxEigenval
Analysis
ConfList = {"conf"}
-
Aggiungere un nuovo tipo di fermione, che si chiami overlap, che abbia i parametri necessari ad applicarlo: [listare parametri]
-
Il kernel da usare potrebbe essere un parametro
-
Aggiungere un blocco che misura gli autovalori minimi/massimi, per tutti i fermioni di una teoria qualsiasi tra quelle listate come input
-
Scgliere Nome
-
Attualmente c'è un nuovo file dedicato in src/dirac_operators/overlap/dirac_operator_overlap_kernel_portable.cpp
-
questo non fa niente di diverso dal caso Wilson a parte gamma5
-
quindi fondamentalmente è codice duplicato e sarebbe meglio evitarlo, in modo che se avessimo una versione ottimizzata di un kernel, sarebbe automaticamente ottimizzata pure per l'overlap
-
ovviamente aggiungere gamma5 e lo shift a parte aggiunge un piccolo overhead...
-
in questa maniera uno potrebbe, in un altro momento, usare come kernel quello di Wilson o quello staggered (avendo accortezza di usare il giusto gamma5, che probabilmente è quella a 4 link)
-
Idealmente si dovrebbe usare la nuova routine che calcola gli autovalori minimi o massimi, ovvero
eigenvalues_of_hermatr_findin src/eigenvalues/eigenvalues.hpp. -
L'alternativa è di usare l'approccio semplicistico di
max_eigenvalin src/hmc/multipseudo/set_expansions.cpp nel quale si trova solo quello massimo, applicando n volte l'operatore stesso, ed usando "0" per quello minimo (se l'algoritmo zolotaro lavora fino a 0)
La strutura che tiene le approssimazioni razionali è definita in src/new_types/rat_approx.hpp
- Dove sta Zolotoro?
- In quale range funziona?
Poi si può riscalare semplicemente l'approssimazione, sulle linee di quanto fatto in src/hmc/multipseudo/set_expansions.cpp, si potrebbe estrarre da questo contesto la routine, e metterla come metodo stesso dell'approssimazione razionale
-
si deve creare un nuovo solver in src/inverters prendendo spunto ad esempio da src/inverters/staggered/cgm_invert_stD2ee_m2_portable.cpp
-
il solver deve prendere i parametri necessari a chiamare il kernel
-
si aggiunge anche l'interfaccia che somma automaticamente tutti i termini, come nel file suddetto, che è la cosa che serve
Questo dev'essere implementato come semplice routine che avvolge e maschera la chiamata al multishift