Turn on your oven and preheat it to 350 degrees. Spray your pans with cooking spray or grease them liberally with oil. Lightly add a spoonful of flour in the pans and shake the pan to coat it completely with flour. You can use two eight-inch round pans or a 9 by 13 rectangular pan.
In a large bowl, combine the flour, baking powder, baking soda, salt, cinnamon, cloves, and allspice along with the sugar. Whisk these dry ingredients until they are fully combined.
In a smaller bowl, crack the eggs. Beat them with a whisk until they are light and fluffy, then whisk in the canola oil. With a spatula, add the oil and eggs to the dry ingredients, mixing just until combined. Do not over mix.
Gently, using the spatula, fold in the grated carrots and the nuts if you choose to include them. Stir just until the carrots are fully integrated into the batter.
Using a rubber spatula, scrape the batter into the prepared pans, dividing it evenly if you are using two round cake pans. Bake the cake in the center of your preheated oven for 25-35 minutes.
Allow the cake to cool in the pan, or if you are planning to make a layer cake, allow the cake to cool for 15 minutes before gently sliding a butter knife around the edges of the cake to help release it from the pan.
In a medium-sized mixer bowl using an electric mixer, beat the cream cheese and butter together until they are light and creamy. One cupful at a time beat in the powdered sugar. Add the vanilla extract and salt.
Place the bottom later of the carrot cake on a cake plate and spread about a third of the frosting evenly on top of it. Stack the top layer on the cake and spread another third of the frosting on the top of the cake. Using the remaining icing, neatly cover the sides of the cake with frosting. Top the cake with the chopped nuts.