Parallel CPU implementations of a viewshed algorithm using both multithreading and SIMD vectorization and GPU implementations were implemented and compared in this study. The results show that parallelism is essential for achieving good performance on a CPU, and that data transfer can be partly overlapped by computations to hide some of the overheads in GPU implementations. The GPU implementation was the fastest with a performance approximately 3 times faster than the parallel CPU implementation for the hardware the tests were performed on.