Mixing MPI and CUDA
Combining CUDA and MPI
module load mpi cuda
mpicc -c main.c -o main.o
nvcc -c multiply.cu -o multiply.o
mpicc main.o multiply.o -lcudartmultiply.cu
multiply.cu#include <cuda.h>
#include <cuda_runtime.h>
__global__ void __multiply__ (const float *a, float *b)
{
const int i = threadIdx.x + blockIdx.x * blockDim.x;
b[i] *= a[i];
}
extern "C" void launch_multiply(const float *a, const *b)
{
/* ... load CPU data into GPU buffers a_gpu and b_gpu */
__multiply__ <<< ...block configuration... >>> (a_gpu, b_gpu);
safecall(cudaThreadSynchronize());
safecall(cudaGetLastError());
/* ... transfer data from GPU to CPU */
}main.c
main.cLast updated
Was this helpful?