Compile cuda code for CPU
Asked Answered
S

4

15

I'm study cuda 5.5 but i don't have any Nvidia GPU. In old version of nvcc have a flag --multicore to compile cuda code for CPU. In the new version of nvcc, what's is the option?? I'm working on Linux.

Skippy answered 21/2, 2014 at 22:45 Comment(1)
Thank you for clarifying "Linux". You really need a GPU. But the next best thing is Ocelot: try it. I'm unfamiliar with "--multicore", and I didn't see it anywhere on the NVCC page, so I can't help you there. But I think your best bet is 1) a real GPU, or 2) an emulator like CUDA-Waste or Ocelot. IMHO...Winer
C
7

CUDA toolkits since at least CUDA 4.0 have not supported an ability to run cuda code without a GPU.

If you simply want to compile code, refer to this question.

If you want to run CUDA codes compiled with CUDA 5.5, you will need a CUDA capable GPU.

If you're willing to use older CUDA toolkits, you could install one of the various emulators, such as this one.

Or you could install a very old (e.g. ~ CUDA 3.0) cuda toolkit that had the ability to run CUDA codes on the CPU.

Chipboard answered 21/2, 2014 at 22:52 Comment(2)
Did know about that... How is that possible to run a kernel on a CPU ? Does the CPU must have hyper-threading or something?Cordate
I think you mean things like avx512.Ruckman
W
2

Ideally, you'd be able to get access to a CUDA-compatible NVidia GPU.

But short of that, here's an emulator that might help:

If you have a Linux box, you can also try Ocelot:

Winer answered 21/2, 2014 at 22:49 Comment(1)
The problem in my case is the ram amount. Getting 24Tb on a cpu is possible while the best gpu is locked at 16Gb.Ruckman
B
0

In current versions of CUDA, programs are debugged directly while they are running on the GPU. This is far superior to older versions of CUDA, which used an emulator for debugging. The debugging facilities are also much more powerful in current versions of CUDA.

So, if wish to write any CUDA code, a CUDA capable GPU card will give you immediate return on investment when you need to debug.

You can pick up an older used card for very little. Examine the features of each of the compute capabilities to determine how far back you are willing to go.

There are also some sites online that will let you test out CUDA code. NVIDIA has the CUDA test drive program. The Intro to Parallel Programming course at Udacity includes an online CUDA compiler for the coding assignments.

Bellhop answered 23/2, 2014 at 17:39 Comment(3)
It is not just about return on investment! Any serious application should have tests and you want to be able to run tests on any machine, even if it is slower.Globuliferous
@Globuliferous if you can't test the real performance on GPU because you don't have one, you miss the main objective of CUDA which is to improve it.Otte
test is not just for performance (benchmark test), we also need to test for application correctness to avoid regression. Unit testing, A/B testing, ...Globuliferous
E
0

This can now be done (kind of) by using HIP.

HIP is a C++ Runtime API and Kernel Language that allows developers to create portable applications for AMD and NVIDIA GPUs from single source code.

This also includes a CPU runtime. HIPIFY is their tool for converting CUDA source code to HIP source code.

So, this means that you can write code in either CUDA or HIP. If you write in CUDA, it first has to be converted to HIP. From HIP, you can compile for CPU, CUDA, ROCm or OpenCL.

Earlineearls answered 19/10, 2023 at 20:20 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.