While B is the best answer, in truth native speakers of English will say any of A, B, C, or D, with B and C being the most common, followed by A and D. "Gives off" means to generate, whereas "gives out" could also mean to "collapse," "fail to function," or "break down." So I would choose "give off" over "give out" in this circumstance. Furthermore, while it is true that "heat" is uncountable, and we would not say "I felt a heat," when we add an adjective before the uncountable noun, we can often allow the use of an indefinite article, such as "the fire gave off *a* good heat." After all, I am sure you have heard/read English speakers say/write "I saw a bright light." Light is also uncountable, but you can say either "I saw a bright light coming from the sky" OR "I saw bright light coming from the sky."