|
@@ -3,9 +3,9 @@
|
|
|
#include <stdio.h>
|
|
|
#include <stdlib.h>
|
|
|
#include "common.h"
|
|
|
-/*#include "cuda.h"*/
|
|
|
#include "kernels.h"
|
|
|
#include "gdrapi.h"
|
|
|
+#include "pcilib.h"
|
|
|
|
|
|
int main()
|
|
|
{
|
|
@@ -36,8 +36,8 @@ int main()
|
|
|
/* Check context */
|
|
|
assert_cu( cuCtxGetDevice(&GPU) );
|
|
|
printf("Device for this context: %d\n",GPU);
|
|
|
- CUcontext ctx;
|
|
|
- assert_cu( cuCtxCreate(&ctx,0,GPU) );
|
|
|
+ CUcontext cuCtx;
|
|
|
+ assert_cu( cuCtxCreate(&cuCtx,0,GPU) );
|
|
|
assert_cu( cuCtxGetDevice(&GPU) );
|
|
|
printf("Device for this context: %d\n",GPU);
|
|
|
|
|
@@ -61,27 +61,26 @@ int main()
|
|
|
|
|
|
/* At this point the GPU's mem is mapped to a CPU buffer to enable DMA */
|
|
|
|
|
|
- int set, get;
|
|
|
- printf("Use the nvidia api\n");
|
|
|
- set = 4242;
|
|
|
- get = 0;
|
|
|
- printf("set = %d\nget = %d\n",set,get);
|
|
|
- assert_cu( cuMemcpyHtoD(dptr,&set,sizeof(set)) );
|
|
|
- add_three_global<<< 1,1 >>>(dptr);
|
|
|
- cudaDeviceSynchronize();
|
|
|
- assert_cu( cuMemcpyDtoH(&get,dptr,sizeof(get)) );
|
|
|
- printf("set = %d\nget = %d\n",set,get);
|
|
|
-
|
|
|
- printf("Use the gdr api\n");
|
|
|
- set = 4242;
|
|
|
- get = 0;
|
|
|
- printf("set = %d\nget = %d\nva = %d\n",set,get,*(int*) va);
|
|
|
- assert_gdr( gdr_copy_to_bar(va,&set,sizeof(set)) );
|
|
|
- add_one_global<<< 1,1 >>>(dptr);
|
|
|
- cudaDeviceSynchronize();
|
|
|
- assert_gdr( gdr_copy_from_bar(&get,va,sizeof(get)) );
|
|
|
- printf("set = %d\nget = %d\nva = %d\n",set,get,*(int*) va);
|
|
|
+ /* PCI */
|
|
|
+ pcilib_t* pciCtx;
|
|
|
+ char* pciVa;
|
|
|
+ pciCtx = pcilib_open("/dev/fpga0",NULL);
|
|
|
+ if( pciCtx == NULL )
|
|
|
+ {
|
|
|
+ printf("Cannot open a context for pci\n");
|
|
|
+ exit( EXIT_FAILURE );
|
|
|
+ }
|
|
|
|
|
|
+ pciVa = pcilib_resolve_bar_address(pciCtx,PCILIB_BAR_DETECT, 0);
|
|
|
+ if( pciVa == NULL )
|
|
|
+ {
|
|
|
+ printf("Cannot resolve PCI physical adress to virtual\n");
|
|
|
+ exit( EXIT_FAILURE );
|
|
|
+ }
|
|
|
+
|
|
|
+ pcilib_close(pciCtx);
|
|
|
+
|
|
|
+
|
|
|
|
|
|
/* Close everything */
|
|
|
assert_gdr( gdr_unmap(g,GPUMemHandle,va,(size_t) GPUProp.sharedMemPerBlock) );
|