Skip to content

Conversation

@theHoHsiao
Copy link

We implemented the Wuppertal smearing and APE smearing for both connected and disconnected measurements.

@fzierler
Copy link

fzierler commented Jun 3, 2024

Hi, as discussed with Paul, I found that the code here is actually slower than the one developed on top of the old HiRep code (using the old complex numbers). Specifically, I tested this code here and compared it to the one at https://github.com/fzierler/hirep-smear on DiaL3 for the connected measurements on a 64x16^3 lattice using the same input file and same flags in the Makefile. I find that the code here is about 50% slower. I don't know what could have caused this behaviour.

@fzierler
Copy link

Hi, I also tried to test this code for a source position different from (0,0,0,0). However, this leads to a failure of the Inverter on some of the configurations. Typically, this depends on the MPI partitioning and the specific machine (or maybe compiler). Further testing shows that this appears even without smearing in the conventional code for point sources.

I suggest we remove the option to place the source at an arbitrary point for the smearing code.

@fzierler
Copy link

fzierler commented Aug 9, 2024

Hi, currently this code does not measure the disconnected pieces because a function call to this measurement was lost, when I ported the code to the recent version of HiRep. I have fixed this by now and created PR for Paul's branch here: theHoHsiao#1

@edbennett
Copy link
Member

Hi both, just returning to this now—should this PR be merged in its current state, or should it wait until theHoHsiao#1 has been merged?

@fzierler
Copy link

fzierler commented Sep 26, 2024

Hi Ed, please wait until theHoHsiao#1 is merged.

add missing call to smeared disconnected measurement
Copy link
Member

@edbennett edbennett left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Many thanks for this.

Is there any chance please that for each function that is introduced, a comment could be added at the top giving

  1. A one-sentence description of what the function does, in more words than the function name
  2. If not obvious, the meaning/purpose of any parameters.
  3. A reference to a paper or textbook, including equation numbers, for definintions of this.

E.g. APE_smearing might get the comment:

/* Updates the global APE smeared gauge field
   by performing Nsmear steps of APE smearing.
   Each step is Eq. (5) of 0801.1165;
   smear_val here is $\alpha$ in the convention of the paper. */

This will hopefully mean that future people working on the code have a much easier time working out what each function does. I realise that most of the existing code doesn't do this, but I think it's a difficulty we've all had when reading it, so hopefully we can move in the direction of sparing others the same frustration.

@theHoHsiao
Copy link
Author

Hi Ed,

Sure! The code was written long ago when I was still a master's degree student. I will write some descriptions for the functions I implemented.

Fabian, maybe after the Christmas break, could you take care of the parts related to the disconnected calculations? I should finish writing the descriptions by that time.

@edbennett
Copy link
Member

Thanks! Tagging @fzierler in case he's not subscribed to the issue.

1. write descriptions for the function
2. define helper functions to increase readability
3. remove unused arguments `int color` in `smearing_function`
@theHoHsiao
Copy link
Author

Hi @edbennett and @fzierler,

Happy New Year! I hope you had a great holiday.

I have added some comments for the relevant functions.
I also refactor the function, measure_smearing_source_sink, with two helper functions, create_smear_source_and_measure and smear_sink_and_measure, to improve the readability.

Please have a look at it in your own time. @fzierler, I am leaving you the comments for the disconnected part. Thanks.
Feel free to let me know if they still need any improvements.

Copy link
Member

@edbennett edbennett left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Many thanks Paul, those comments are really helpful. I've tagged the remaining functions that I think would benefit from some explanation.

}


void cooling_SPN(suNg* g_out, suNg* g_in, suNg* g_tilde, int cooling){
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does this function do? Are $g$, $\tilde{g}$, $B$, $S$, … defined in a paper that we can cite here?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I could not find any reference for the cooling method for the Sp(2N) gauge group. Do you recall any papers you took as a reference when computing the glueballs?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wasn't heavily involved in that computation; @dvadacchino do you remember this, please?

Copy link

@dvadacchino dvadacchino Jan 29, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cooling for Sp(2N) follows the same logic as for SU(N). The logic is explained at pages 9-10 of https://arxiv.org/pdf/hep-lat/0404008, i.e. by using the beta=infinity limit of the cabibbo-marinari algorithm, and then using gram-schmidt for resymplecticization.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay. I will implement some more comments based on that paper.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have added some comments for cooling_SPN and its relevant helper functions: subgrb, subgrb_tau, vmxsu2, and vmxsu2_tau.

}
}

void subgrb(int i1col, int i2col, suNgfull* B11, suNgfull* C11){
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does this function do? Is there a paper we can cite?

Copy link

@dvadacchino dvadacchino Jan 29, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this picks a su(2) submatrix of the kind (A4) in https://arxiv.org/pdf/2010.15781 of an sp(2n) matrix

vmxsu2(i1col,i2col,B11,A11);
}

void vmxsu2(int i1, int i2, suNgfull* A, double complex B[4]){
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does this function do? Is there a paper we can cite?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is vector matrix multiplication for su2 matrices

}
}

void subgrb_tau(int n1, int n2, suNgfull* B11, suNgfull* C11){
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does this function do? How is it different from subgrb? Is there a paper we can cite?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this picks a su(2) submatrix of the kind (A5) in https://arxiv.org/pdf/2010.15781 of an sp(2n) matrix

vmxsu2_tau(n1, n2, B11, A11);
}

void vmxsu2_tau(int n1, int n2, suNgfull* A, complex B[4]){
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does this function do? How is it different from vmxsu2? Is there a paper we can cite?

}
// So far, only implement the measurement for mesons at rest
// The sources are not localised on any lattice site but spread out
/* Smearing for disconnected pieces for singlets (FZ Jan. 2024)*/
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can this comment go into more detail (and possibly be formatted like the others introduced in this PR)?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@fzierler Fabian, can I leave this to you?

@theHoHsiao
Copy link
Author

Hi Ed,

Thanks for the review. As you pointed out, there are some spelling typos, and I forgot to say that I am still working on the APE smearing part. I will improve them soon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants