Preheat the oven to 350 degrees F. Grease the bottom of three 9-inch round cake pans with cooking spray, line with rounds of parchment paper and coat the paper with cooking spray.
Make the cake: With an electric mixer, beat the granulated sugar, vegetable oil, eggs and vanilla. Sift together the flour, baking soda, cinnamon and salt. Add the dry ingredients to the sugar mixture. Add the walnuts, coconut, carrot puree and pineapple and beat until smooth. Divide the batter evenly among the prepared pans.
Bake the layers until a toothpick inserted into the centers comes out clean, 40 to 45 minutes. Let the layers cool in the pans for about 5 minutes. Run a knife around the edges of each pan and turn the layers out onto wire racks that have been coated with cooking spray. Let the layers cool completely before frosting.
Make the frosting: Combine the cream cheese and butter in an electric mixer and beat until smooth. Slowly add the confectioners' sugar and continue beating until fully combined. Add the vanilla.
Slice each cake layer horizontally in half using a serrated knife. Place 1 layer on a cake plate and frost with 1/2 cup frosting. Continue stacking the remaining layers, using about 1/2 cup frosting between each layer. Frost the sides and top of the cake with the remaining frosting. Press the chopped walnuts into the sides of the cake. Refrigerate until ready to serve.
When the cake layers have cooled, you can wrap each one tightly in plastic wrap and refrigerate overnight. They will be easier to slice in half the next day.