Files
language-conditioned-psycho…/research/environment/cuda-smoke.cu
T

35 lines
850 B
Plaintext

#include <cuda_runtime.h>
#include <cstdio>
__global__ void increment(int* value) {
*value += 1;
}
int main() {
int host_value = 41;
int* device_value = nullptr;
if (cudaMalloc(&device_value, sizeof(int)) != cudaSuccess) {
return 1;
}
if (cudaMemcpy(device_value, &host_value, sizeof(int), cudaMemcpyHostToDevice) != cudaSuccess) {
cudaFree(device_value);
return 2;
}
increment<<<1, 1>>>(device_value);
if (cudaDeviceSynchronize() != cudaSuccess) {
cudaFree(device_value);
return 3;
}
if (cudaMemcpy(&host_value, device_value, sizeof(int), cudaMemcpyDeviceToHost) != cudaSuccess) {
cudaFree(device_value);
return 4;
}
cudaFree(device_value);
std::printf("cuda_smoke_result=%d\n", host_value);
return host_value == 42 ? 0 : 5;
}