I know I could use MAUVE to align the genomes and find the SNPs; however, I don't have a powerful enough computer to do that.

So is there a way to do it in a less computational-heavy way? Command line programs are fine.

And, do I definitely need a reference genome when calling SNPs within these ~40 bacterial genomes? I mean, I have identified the variable nucleotides for the core genes, but I cannot say they are SNPs unless I compare them to a reference, right? However, it seems that when one uses MAUVE to align genomes and call SNPS, one does not have to include a reference genome in the alignment.

It depends on the 40 bacterial genomes. If those genomes come from the same strain, you do not need reference genome to find SNPs. In this case you can use dialign2, muscle or other multiple alignment programs.

If the genomes are different strains, you need reference genomes. In this case blast will help.

Thank you, TiborNagy. The ~40 bacterial genomes I have are from the same genus; however, I built their 16S tree, and found that some of them are not from the same species. So yes, I guess I need a reference genome for calling SNPs.

After my post here yesterday, I ran into a program called Wombac that aligns bacterial genomes with a reference genome based on bwa and samtools. As I tried it, it is pretty fast and less computational-heavy, and it outputs the VCF files and an alignment of SNPs. Hope this helps for anyone who would like to do the same thing.