Skip to content

Commit 23576e1

Browse files
committed
Update example source files
1 parent 15ebfae commit 23576e1

File tree

4 files changed

+38
-29
lines changed

4 files changed

+38
-29
lines changed

docs/tools/example_codes/device_selection.hip

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,11 @@
4040
} \
4141
}
4242

43-
__global__ void simpleKernel(double *data)
43+
__global__ void simpleKernel(double *data, std::size_t elems)
4444
{
4545
int idx = blockIdx.x * blockDim.x + threadIdx.x;
46-
data[idx] = idx * 2.0;
46+
if(idx < elems)
47+
data[idx] = idx * 2.0;
4748
}
4849

4950
int main()
@@ -58,30 +59,31 @@ int main()
5859

5960
double* deviceData0;
6061
double* deviceData1;
61-
std::size_t size = 1024 * sizeof(*deviceData0);
62+
constexpr std::size_t elems = 1024;
63+
constexpr std::size_t size = elems * sizeof(double);
6264

6365
int deviceId0 = 0;
6466
int deviceId1 = 1;
6567

6668
// Set device 0 and perform operations
6769
HIP_CHECK(hipSetDevice(deviceId0)); // Set device 0 as current
6870
HIP_CHECK(hipMalloc(&deviceData0, size)); // Allocate memory on device 0
69-
simpleKernel<<<1000, 128>>>(deviceData0); // Launch kernel on device 0
71+
simpleKernel<<<8, 128>>>(deviceData0, elems); // Launch kernel on device 0
7072
HIP_CHECK(hipDeviceSynchronize());
7173

7274
// Set device 1 and perform operations
7375
HIP_CHECK(hipSetDevice(deviceId1)); // Set device 1 as current
7476
HIP_CHECK(hipMalloc(&deviceData1, size)); // Allocate memory on device 1
75-
simpleKernel<<<1000, 128>>>(deviceData1); // Launch kernel on device 1
77+
simpleKernel<<<8, 128>>>(deviceData1, elems); // Launch kernel on device 1
7678
HIP_CHECK(hipDeviceSynchronize());
7779

7880
// Copy result from device 0
79-
double hostData0[1024];
81+
double hostData0[elems];
8082
HIP_CHECK(hipSetDevice(deviceId0));
8183
HIP_CHECK(hipMemcpy(hostData0, deviceData0, size, hipMemcpyDeviceToHost));
8284

8385
// Copy result from device 1
84-
double hostData1[1024];
86+
double hostData1[elems];
8587
HIP_CHECK(hipSetDevice(deviceId1));
8688
HIP_CHECK(hipMemcpy(hostData1, deviceData1, size, hipMemcpyDeviceToHost));
8789

docs/tools/example_codes/multi_device_synchronization.hip

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,11 @@
4040
} \
4141
}
4242

43-
__global__ void simpleKernel(double *data)
43+
__global__ void simpleKernel(double *data, std::size_t elems)
4444
{
4545
int idx = blockIdx.x * blockDim.x + threadIdx.x;
46-
data[idx] = idx * 2.0;
46+
if(idx < elems)
47+
data[idx] = idx * 2.0;
4748
}
4849

4950
int main()
@@ -57,8 +58,10 @@ int main()
5758
return EXIT_SUCCESS;
5859
}
5960

60-
double *deviceData0, *deviceData1;
61-
std::size_t size = 1024 * sizeof(*deviceData0);
61+
double *deviceData0;
62+
double *deviceData1;
63+
constexpr std::size_t elems = 1024;
64+
constexpr std::size_t size = elems * sizeof(double);
6265

6366
// Create streams and events for each device
6467
hipStream_t stream0, stream1;
@@ -83,7 +86,7 @@ int main()
8386
HIP_CHECK(hipEventRecord(startEvent0, stream0));
8487

8588
// Launch the kernel asynchronously on device 0
86-
simpleKernel<<<1000, 128, 0, stream0>>>(deviceData0);
89+
simpleKernel<<<8, 128, 0, stream0>>>(deviceData0, elems);
8790

8891
// Record the stop event on device 0
8992
HIP_CHECK(hipEventRecord(stopEvent0, stream0));
@@ -96,7 +99,7 @@ int main()
9699
HIP_CHECK(hipEventRecord(startEvent1, stream1));
97100

98101
// Launch the kernel asynchronously on device 1
99-
simpleKernel<<<1000, 128, 0, stream1>>>(deviceData1);
102+
simpleKernel<<<8, 128, 0, stream1>>>(deviceData1, elems);
100103

101104
// Record the stop event on device 1
102105
HIP_CHECK(hipEventRecord(stopEvent1, stream1));

docs/tools/example_codes/p2p_memory_access.hip

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,11 @@
4040
} \
4141
}
4242

43-
__global__ void simpleKernel(double *data)
43+
__global__ void simpleKernel(double *data, std::size_t elems)
4444
{
45-
int idx = blockIdx.x * blockDim.x + threadIdx.x;
46-
data[idx] = idx * 2.0;
45+
int idx = blockIdx.x * blockDim.x + threadIdx.x;
46+
if(idx < elems)
47+
data[idx] = idx * 2.0;
4748
}
4849

4950
int main()
@@ -58,7 +59,8 @@ int main()
5859

5960
double* deviceData0;
6061
double* deviceData1;
61-
std::size_t size = 1024 * sizeof(*deviceData0);
62+
constexpr std::size_t elems = 1024;
63+
constexpr std::size_t size = elems * sizeof(double);
6264

6365
int deviceId0 = 0;
6466
int deviceId1 = 1;
@@ -74,13 +76,13 @@ int main()
7476
// Set device 0 and perform operations
7577
HIP_CHECK(hipSetDevice(deviceId0)); // Set device 0 as current
7678
HIP_CHECK(hipMalloc(&deviceData0, size)); // Allocate memory on device 0
77-
simpleKernel<<<1000, 128>>>(deviceData0); // Launch kernel on device 0
79+
simpleKernel<<<8, 128>>>(deviceData0, elems); // Launch kernel on device 0
7880
HIP_CHECK(hipDeviceSynchronize());
7981

8082
// Set device 1 and perform operations
8183
HIP_CHECK(hipSetDevice(deviceId1)); // Set device 1 as current
8284
HIP_CHECK(hipMalloc(&deviceData1, size)); // Allocate memory on device 1
83-
simpleKernel<<<1000, 128>>>(deviceData1); // Launch kernel on device 1
85+
simpleKernel<<<8, 128>>>(deviceData1, elems); // Launch kernel on device 1
8486
HIP_CHECK(hipDeviceSynchronize());
8587

8688
// Use peer-to-peer access
@@ -90,12 +92,12 @@ int main()
9092
HIP_CHECK(hipMemcpy(deviceData0, deviceData1, size, hipMemcpyDeviceToDevice));
9193

9294
// Copy result from device 0
93-
double hostData0[1024];
95+
double hostData0[elems];
9496
HIP_CHECK(hipSetDevice(deviceId0));
9597
HIP_CHECK(hipMemcpy(hostData0, deviceData0, size, hipMemcpyDeviceToHost));
9698

9799
// Copy result from device 1
98-
double hostData1[1024];
100+
double hostData1[elems];
99101
HIP_CHECK(hipSetDevice(deviceId1));
100102
HIP_CHECK(hipMemcpy(hostData1, deviceData1, size, hipMemcpyDeviceToHost));
101103

docs/tools/example_codes/p2p_memory_access_host_staging.hip

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,11 @@
4040
} \
4141
}
4242

43-
__global__ void simpleKernel(double *data)
43+
__global__ void simpleKernel(double *data, std::size_t elems)
4444
{
45-
int idx = blockIdx.x * blockDim.x + threadIdx.x;
46-
data[idx] = idx * 2.0;
45+
int idx = blockIdx.x * blockDim.x + threadIdx.x;
46+
if(idx < elems)
47+
data[idx] = idx * 2.0;
4748
}
4849

4950
int main()
@@ -58,34 +59,35 @@ int main()
5859

5960
double* deviceData0;
6061
double* deviceData1;
61-
std::size_t size = 1024 * sizeof(*deviceData0);
62+
constexpr std::size_t elems = 1024;
63+
constexpr std::size_t size = elems * sizeof(double);
6264

6365
int deviceId0 = 0;
6466
int deviceId1 = 1;
6567

6668
// Set device 0 and perform operations
6769
HIP_CHECK(hipSetDevice(deviceId0)); // Set device 0 as current
6870
HIP_CHECK(hipMalloc(&deviceData0, size)); // Allocate memory on device 0
69-
simpleKernel<<<1000, 128>>>(deviceData0); // Launch kernel on device 0
71+
simpleKernel<<<8, 128>>>(deviceData0, elems); // Launch kernel on device 0
7072
HIP_CHECK(hipDeviceSynchronize());
7173

7274
// Set device 1 and perform operations
7375
HIP_CHECK(hipSetDevice(deviceId1)); // Set device 1 as current
7476
HIP_CHECK(hipMalloc(&deviceData1, size)); // Allocate memory on device 1
75-
simpleKernel<<<1000, 128>>>(deviceData1); // Launch kernel on device 1
77+
simpleKernel<<<8, 128>>>(deviceData1, elems); // Launch kernel on device 1
7678
HIP_CHECK(hipDeviceSynchronize());
7779

7880
// Use deviceData0 on device 1. This works but incurs a performance penalty.
7981
HIP_CHECK(hipSetDevice(deviceId1));
8082
HIP_CHECK(hipMemcpy(deviceData1, deviceData0, size, hipMemcpyDeviceToDevice));
8183

8284
// Copy result from device 0
83-
double hostData0[1024];
85+
double hostData0[elems];
8486
HIP_CHECK(hipSetDevice(deviceId0));
8587
HIP_CHECK(hipMemcpy(hostData0, deviceData0, size, hipMemcpyDeviceToHost));
8688

8789
// Copy result from device 1
88-
double hostData1[1024];
90+
double hostData1[elems];
8991
HIP_CHECK(hipSetDevice(deviceId1));
9092
HIP_CHECK(hipMemcpy(hostData1, deviceData1, size, hipMemcpyDeviceToHost));
9193

0 commit comments

Comments
 (0)